Complete Example

A complete Novaxjs2 application demonstrating multiple features.

const Nova = require('novaxjs2');
const app = new Nova();

// Global styles and scripts
app.style = `
  body { 
    font-family: Arial, sans-serif;
    margin: 0;
    padding: 20px;
    background: #f5f5f5;
  }
`;

app.js = 'console.log("App initialized");';

// Middleware
app.useMiddleware((req, res, next) => {
  console.log(`${req.method} ${req.url}`);
  next();
});

// CORS
app.cors({
  origins: ['http://localhost:3000'],
  methods: ['GET', 'POST']
});

// File upload limit
app.setFileSizeLimit(10); // 10MB

// Routes
app.get('/', (req, res) => {
  return `
    <h1>Welcome to Novaxjs2</h1>
    <p>This is a sample application.</p>
  `;
});

app.get('/api/users', (req, res) => {
  res.json([
    { id: 1, name: 'John Doe' },
    { id: 2, name: 'Jane Smith' }
  ]);
});

app.post('/api/users', (req, res) => {
  const newUser = req.body;
  // Save to database...
  res.status(201).json({ success: true, user: newUser });
});

app.post('/upload', (req, res) => {
  if (!req.files || !req.files.file) {
    return res.status(400).json({ error: 'No file uploaded' });
  }
  res.json({ message: 'File uploaded successfully' });
});

// Error handling
app.on(404, () => {
  return '<h1>404 - Page Not Found</h1>';
});

app.error((err, req, res) => {
  console.error(err);
  return '<h1>500 - Server Error</h1>';
});

// Start server
app.at(3000, () => {
  console.log('Server running on port 3000');
});