API REST del sistema de reservas de espacios corporativos. Construida con Node.js + Express, conectada a una base de datos PostgreSQL en Neon y documentada con Swagger.
- Arquitectura
- Seguridad y autenticación
- Uso del sistema
- Variables de entorno
- Scripts disponibles
- Dependencias clave
- Enlaces clave
Frontend / Postman / MCP Server
│
│ HTTP requests
▼
┌─────────────────────────────────────┐
│ server.js → app.js │ port 5500
│ express() · cors · session · │
│ rate-limit · socket.io │
└────────────────┬────────────────────┘
│
▼
┌─────────────────────────────────────┐
│ src/routes/ │
│ auth.routes.js │
│ reservations.routes.js │
│ users.routes.js │
│ spaces.routes.js │
│ suggestions.routes.js │
│ marketplace.routes.js │
└────────────────┬────────────────────┘
│ middleware check
▼
┌─────────────────────────────────────┐
│ src/middleware/ │
│ auth.middleware.js (JWT verify) │
│ role.middleware.js (employee / │
│ admin / guard) │
└────────────────┬────────────────────┘
│
▼
┌─────────────────────────────────────┐
│ src/controllers/ │
│ authController · reservations · │
│ users · spaces · marketplace │
└────────────────┬────────────────────┘
│
▼
┌─────────────────────────────────────┐
│ src/services/ │
│ Business logic · email (nodemailer)│
│ socket events · QR handling │
└────────────────┬────────────────────┘
│
▼
┌─────────────────────────────────────┐
│ src/models/ │
│ SQL queries via │
│ @neondatabase/serverless │
└────────────────┬────────────────────┘
│ SQL over HTTPS
▼
Neon PostgreSQL (cloud)
src/
├── config/
├── constants/
├── controllers/
├── docs/
├── middleware/
├── models/
├── routes/
├── services/
├── stores/
└── utils/
| Tecnología | Rol |
|---|---|
| Node.js + Express | Servidor HTTP |
| Neon (Postgres) | Base de datos serverless |
| postgres.js | Cliente SQL con template literals |
| JWT | Autenticación stateless |
| bcrypt + salt | Hasheo de contraseñas |
| Swagger (OpenAPI) | Documentación interactiva de la API |
git clone https://github.com/Eldeibit97/WorkHub_Backend
cd WorkHub_Backend
npm installnpm run devEl servidor inicia en http://localhost:5500 por defecto.
La documentación interactiva de Swagger estará disponible en:
http://localhost:5500/api/docs
Crea un archivo .env en la raíz del proyecto:
# Base de datos Neon
DATABASE_URL=postgresql://usuario:password@host.neon.tech/dbname?sslmode=require
# Autenticación
JWT_SECRET=tu_clave_secreta
SESSION_SECRET=tu_clave_secreta
#Servicio de correo
ADMIN_EMAILS=unCorreo@---.com
SMTP_HOST=implementacion de smtp
SMTP_PORT=tuPuerto
SMTP_USER=tuUsuario
SMTP_FROM=correo_de_envio
SMTP_PASS=tuKeynpm run dev # Servidor con hot-reload (nodemon)
npm start # Producción
npm run lint # ESLint
npm test # Tests (Jest)| Paquete | Uso |
|---|---|
express |
Framework HTTP |
express-rate-limit |
Rate limiting de peticiones |
express-session |
Manejo de sessiones y cookies |
@neondatabase/serverless |
Cliente SQL para Neon con template literals |
socket.io |
Creacion de websockets |
jsonwebtoken |
Generación y verificación de JWT |
bcrypt |
Hasheo de contraseñas |
swagger-ui-express |
UI interactiva de documentación |
swagger-jsdoc |
Generación de spec OpenAPI desde JSDoc |
dotenv |
Carga de variables de entorno |
cors |
Control de acceso cross-origin |
nodemailer |
Mensajeria por email |
- Repositorio Frontend → github.com/Eldeibit97/WorkHub_SpotOn
- Repositorio MCP Server → github.com/Eldeibit97/WorkHub_AI
- Neon Console → console.neon.tech