Backend API para una aplicación de calendario construida con Node.js, Express y MongoDB. Este proyecto implementa un sistema robusto de autenticación y está preparado para manejar eventos de calendario.
- Node.js
- Express
- MongoDB
- Mongoose
- JWT
- bcryptjs
- express-validator
- dotenv
- cors
-
Arquitectura MVC (Model-View-Controller)
- Separación clara de responsabilidades
- Código modular y mantenible
- Facilita la escalabilidad y el testing
-
Patrón Repository
- Abstracción de la capa de datos
- Facilita el cambio de base de datos
- Mejora la testabilidad
-
Middleware Pattern
- Validación de datos
- Autenticación y autorización
- Manejo de errores centralizado
-
Node.js & Express
- Framework web rápido y minimalista
- Manejo eficiente de rutas y middleware
- Soporte para async/await
-
MongoDB & Mongoose
- Base de datos NoSQL para flexibilidad
- ODM para modelado de datos
- Validación a nivel de esquema
-
JWT (JSON Web Tokens)
- Autenticación stateless
- Tokens seguros y renovables
- Manejo de sesiones sin estado
-
Encriptación de Contraseñas
- Uso de bcryptjs para hashing seguro
- Salt automático para mayor seguridad
- Protección contra ataques de fuerza bruta
-
Validación de Datos
- Express-validator para validación robusta
- Sanitización de inputs
- Prevención de inyección de datos
-
CORS
- Configuración segura de CORS
- Control de acceso a recursos
- Protección contra ataques cross-origin
-
Clean Code
- Nombres descriptivos y significativos
- Funciones pequeñas y con propósito único
- Código autoexplicativo
-
Error Handling
- Manejo centralizado de errores
- Respuestas de error consistentes
- Logging apropiado
-
Environment Variables
- Configuración mediante variables de entorno
- Separación de configuración y código
- Seguridad mejorada
-
Modularización
- Estructura de carpetas organizada
- Módulos independientes y reutilizables
- Fácil mantenimiento y escalabilidad
calendar-backend/
├── controllers/ # Lógica de negocio
├── models/ # Esquemas de MongoDB
├── routes/ # Definición de rutas
├── middlewares/ # Middlewares personalizados
├── helpers/ # Funciones auxiliares
├── database/ # Configuración de DB
└── public/ # Archivos estáticos
- Clonar el repositorio
git clone git@github.com:jorgearguellles/calendar-backend.git- Instalar dependencias
npm install- Configurar variables de entorno
cp .env.example .env- Iniciar el servidor
# Desarrollo
npm run dev
# Producción
npm startPOST /api/auth/new- Registro de usuarioPOST /api/auth- LoginGET /api/auth/renew- Renovar token
PORT=3000
DB_CNN=mongodb://localhost:27017/calendar
JWT_SECRET=your_jwt_secret
- CRUD completo de eventos
- Validación de fechas y horarios
- Notificaciones
- Compartir eventos
- Integración con calendarios externos
Este proyecto está bajo la Licencia ISC.
Jorge Arias Argüelles
⭐️ Si te gustó el proyecto, no olvides darle una estrella