# Node.js MVP Minimal Code Rules (Single File Edition)
Mandatory Core Principles: Keep only the most basic runnable backend structure
1. Simplified File Structure:
- app.js (Main file containing):
├── Basic config (env/port)
├── Routes directly connected to controllers
├── Validation middleware
├── Unified error handling
└── Service startup
2. Code Iron Rules:
```javascript
// Example skeleton code
require('dotenv').config();
const express = require('express');
const Joi = require('joi');
// In-memory database example (No real DB in MVP phase)
let users = [];
// Validation middleware
const validateUser = (req, res, next) => {
const schema = Joi.object({
name: Joi.string().min(3).required()
});
const { error } = schema.validate(req.body);
if (error) return res.status(400).json({ error: error.details[0].message });
next();
};
const app = express();
app.use(express.json());
// Minimal route-controller combination
app.get('/users', (req, res) => {
res.json({ data: users });
});
app.post('/users', validateUser, (req, res) => {
users.push(req.body);
res.status(201).json({ data: req.body });
});
// Unified error format
app.use((err, req, res, next) => {
res.status(500).json({
error: 'SERVER_ERROR',
message: err.message
});
});
app.listen(process.env.PORT || 3000);