Este proyecto es una API REST completa diseñada específicamente para campistas y programadores principiantes que quieren aprender desarrollo backend con Node.js. Incluye:
- ✅ Backend completo con Node.js y Express
- ✅ Base de datos MongoDB con Mongoose
- ✅ Frontend básico con HTML, CSS y JavaScript vanilla
- ✅ Operaciones CRUD completas (Crear, Leer, Actualizar, Eliminar)
- ✅ Comentarios educativos en cada archivo
- ✅ Buenas prácticas de desarrollo
api-vercel/
├── 📁 api/
│ └── index.js # Configuración principal de Express
├── 📁 config/
│ └── db.js # Configuración de MongoDB
├── 📁 controllers/
│ ├── userController.js # Lógica de negocio para usuarios
│ └── productController.js # Lógica de negocio para productos
├── 📁 models/
│ ├── User.js # Esquema de usuarios
│ └── Product.js # Esquema de productos
├── 📁 routes/
│ ├── userRoutes.js # Rutas de usuarios
│ └── productRoutes.js # Rutas de productos
├── 📁 public/
│ ├── index.html # Página de gestión de usuarios
│ ├── products.html # Página de gestión de productos
│ ├── script.js # JavaScript para usuarios
│ ├── products.js # JavaScript para productos
│ ├── styles.css # Estilos generales
│ └── products.css # Estilos específicos
├── server.js # Punto de entrada del servidor
├── package.json # Dependencias y scripts
└── vercel.json # Configuración para despliegue
- Node.js: Entorno de ejecución de JavaScript en el servidor
- Express.js: Framework web minimalista y flexible
- MongoDB: Base de datos NoSQL orientada a documentos
- Mongoose: ODM (Object Document Mapper) para MongoDB
- dotenv: Manejo de variables de entorno
- CORS: Middleware para Cross-Origin Resource Sharing
- HTML5: Estructura semántica de las páginas
- CSS3: Estilos y diseño responsive
- JavaScript ES6+: Interactividad y comunicación con la API
- Fetch API: Peticiones HTTP asíncronas
- Node.js (versión 14 o superior)
- MongoDB (local o MongoDB Atlas)
- Editor de código (VS Code recomendado)
-
Clonar el repositorio
git clone <url-del-repositorio> cd api-vercel
-
Instalar dependencias
npm install
-
Configurar variables de entorno
Crear archivo
.enven la raíz del proyecto:MONGODB_URL=mongodb://localhost:27017/tu-base-de-datos PORT=5000
-
Iniciar el servidor
# Desarrollo (con nodemon) npm run dev # Producción npm start
-
Acceder a la aplicación
- API:
http://localhost:5000 - Frontend:
http://localhost:5000/index.html
- API:
Una API REST (Representational State Transfer) es un conjunto de reglas para crear servicios web que permiten la comunicación entre diferentes aplicaciones.
Características principales:
- Stateless: Cada petición es independiente
- Métodos HTTP: GET, POST, PUT, DELETE
- Recursos: Entidades como usuarios, productos
- JSON: Formato de intercambio de datos
Este proyecto implementa una variación del patrón MVC:
- Model (
models/): Define la estructura de datos - View (
public/): Interfaz de usuario (HTML/CSS/JS) - Controller (
controllers/): Lógica de negocio
Cada recurso (usuarios, productos) implementa las 4 operaciones básicas:
| Operación | Método HTTP | Endpoint | Descripción |
|---|---|---|---|
| Create | POST | /api/users |
Crear nuevo usuario |
| Read | GET | /api/users |
Obtener todos los usuarios |
| Read | GET | /api/users/:id |
Obtener usuario específico |
| Update | PUT | /api/users/:id |
Actualizar usuario |
| Delete | DELETE | /api/users/:id |
Eliminar usuario |
// Archivo principal que inicia el servidor
// - Configura variables de entorno
// - Importa la aplicación Express
// - Define el puerto y arranca el servidor// Configuración central de la aplicación
// - Middleware (CORS, JSON parsing)
// - Conexión a base de datos
// - Montaje de rutas
// - Servir archivos estáticos// Definición de la estructura de datos
// - User.js: nombre, email, celular, avatar
// - Product.js: name, description, price, inStock
// - Validaciones y tipos de datos// Funciones que manejan las peticiones
// - Interactúan con la base de datos
// - Procesan datos de entrada
// - Envían respuestas al cliente// Mapeo de URLs a funciones controladoras
// - Métodos HTTP (GET, POST, PUT, DELETE)
// - Parámetros de ruta (:id)
// - Middleware específico- Semántica: Uso correcto de etiquetas HTML5
- Formularios: Validación HTML5 integrada
- Accesibilidad: Labels, alt text, estructura clara
- Variables CSS: Colores y valores reutilizables
- Flexbox: Layout moderno y responsive
- Mobile-first: Diseño adaptable a dispositivos
- ES6+: Sintaxis moderna (const, let, arrow functions)
- Async/Await: Manejo de operaciones asíncronas
- DOM Manipulation: Actualización dinámica del contenido
- Fetch API: Comunicación con el backend
-
Explorar el frontend (
public/)- Abrir
index.htmlen el navegador - Inspeccionar el código HTML
- Entender la estructura CSS
- Seguir el flujo de JavaScript
- Abrir
-
Entender la API
- Revisar
server.jsyapi/index.js - Comprender el concepto de middleware
- Explorar las rutas en
routes/
- Revisar
-
Modelos de datos
- Estudiar
models/User.jsymodels/Product.js - Entender esquemas y validaciones
- Aprender sobre MongoDB y Mongoose
- Estudiar
-
Conexión a BD
- Revisar
config/db.js - Configurar MongoDB local o Atlas
- Entender variables de entorno
- Revisar
-
Controladores
- Analizar
controllers/userController.js - Comparar con
controllers/productController.js - Entender operaciones CRUD
- Analizar
-
Integración Frontend-Backend
- Seguir una petición completa
- Desde el click en el frontend
- Hasta la respuesta de la base de datos
- Abrir
http://localhost:5000/index.html - Crear, editar y eliminar usuarios
- Navegar a
http://localhost:5000/products.html - Gestionar productos
# Obtener todos los usuarios
curl http://localhost:5000/api/users
# Crear un nuevo usuario
curl -X POST http://localhost:5000/api/users \
-H "Content-Type: application/json" \
-d '{"nombre":"Juan Pérez","email":"juan@email.com","celular":"555-1234"}'
# Obtener usuario específico
curl http://localhost:5000/api/users/ID_DEL_USUARIO
# Actualizar usuario
curl -X PUT http://localhost:5000/api/users/ID_DEL_USUARIO \
-H "Content-Type: application/json" \
-d '{"nombre":"Juan Carlos Pérez"}'
# Eliminar usuario
curl -X DELETE http://localhost:5000/api/users/ID_DEL_USUARIO- Crear nueva colección "API Usuarios"
- Agregar requests para cada endpoint
- Configurar headers:
Content-Type: application/json - Probar todas las operaciones CRUD
- Modificar el modelo (
models/User.js) - Actualizar el controlador (
controllers/userController.js) - Modificar el frontend (
public/index.html,public/script.js)
- Crear modelo (
models/NuevoRecurso.js) - Crear controlador (
controllers/nuevoRecursoController.js) - Crear rutas (
routes/nuevoRecursoRoutes.js) - Montar rutas en
api/index.js - Crear frontend si es necesario
// En el modelo
campo: {
type: String,
required: true,
minlength: 3,
maxlength: 50,
validate: {
validator: function(v) {
return /regex-pattern/.test(v);
},
message: 'Mensaje de error personalizado'
}
}- Instalar Vercel CLI:
npm i -g vercel - Ejecutar:
vercel - Configurar variables de entorno en el dashboard
- El archivo
vercel.jsonya está configurado
- Heroku: Platform-as-a-Service popular
- Railway: Alternativa moderna a Heroku
- DigitalOcean: VPS con más control
- AWS/Azure/GCP: Servicios en la nube
- ✅ Verificar que MongoDB esté ejecutándose
- ✅ Revisar la variable
MONGODB_URLen.env - ✅ Comprobar permisos de red (firewall)
- ✅ Cambiar el puerto en
.env - ✅ Matar procesos que usen el puerto:
lsof -ti:5000 | xargs kill
- ✅ Ejecutar
npm install - ✅ Verificar que todas las dependencias estén instaladas
- ✅ Verificar que el servidor esté ejecutándose
- ✅ Abrir DevTools y revisar errores en Console
- ✅ Comprobar que las URLs de la API sean correctas
- MDN Web Docs - JavaScript
- freeCodeCamp - Backend Development
- The Odin Project - Full Stack JavaScript
- Postman: Testing de APIs
- MongoDB Compass: GUI para MongoDB
- VS Code Extensions: ES6 Snippets, REST Client
- Chrome DevTools: Debugging frontend
Este proyecto está diseñado para aprendizaje. Si encuentras errores o tienes sugerencias:
- Fork el repositorio
- Crea una rama para tu feature
- Commit tus cambios
- Push a la rama
- Abre un Pull Request
Este proyecto está bajo la Licencia ISC - ver el archivo package.json para más detalles.
Si has llegado hasta aquí, ya tienes una base sólida para entender:
- ✅ APIs REST y su funcionamiento
- ✅ Node.js y Express para backend
- ✅ MongoDB y Mongoose para bases de datos
- ✅ Frontend moderno con JavaScript
- ✅ Integración completa frontend-backend
- Autenticación: JWT, sessions, OAuth
- Validación avanzada: Joi, express-validator
- Testing: Jest, Mocha, Supertest
- Seguridad: Helmet, rate limiting
- Documentación: Swagger/OpenAPI
- Frameworks frontend: React, Vue, Angular
¡Sigue practicando y construyendo proyectos increíbles! 🚀