server/ ├── api/ ← Endpoints expuestos (como /api/study-rooms) │ └── study-rooms/ │ ├── index.ts ← Maneja GET (listar) y POST (crear) para /api/study-rooms │ └── [id].ts ← Maneja GET, PUT, DELETE para /api/study-rooms/:id ├── db/ ← Conexión con Neon (base de datos PostgreSQL en la nube) │ └── neon.ts ← Configuración y exportación del cliente SQL ├── queries/ ← Consultas a la base de datos (organizadas por tabla o feature) │ └── studyRooms.ts ← Funciones para CRUD de salas de estudio ├── types/ ← Tipos globales opcionales (interfaces, enums, etc) │ └── studyRoom.ts ← (Ejemplo) Tipado de una sala de estudio └── utils/ ← Funciones útiles (formato, validaciones, etc) --------------------- Programación de endpoints
- api/: Aquí van los endpoints de la API. Cada carpeta representa una ruta. Por ejemplo,
study-rooms/index.tsmaneja/api/study-roomsystudy-rooms/[id].tsmaneja/api/study-rooms/:id. - db/: Configuración de la conexión a la base de datos Neon (PostgreSQL serverless).
- queries/: Funciones que realizan las consultas SQL y devuelven los datos. Aquí se centraliza la lógica de acceso a datos.
- types/: (Opcional) Tipos TypeScript globales para mantener el tipado consistente en todo el backend.
- utils/: Funciones auxiliares reutilizables, como formateo de fechas, validaciones, etc.
- El frontend hace una petición a un endpoint de
api/(por ejemplo, POST/api/study-rooms). - El endpoint recibe la petición y llama a la función correspondiente de
queries/. - La función de
queries/ejecuta la consulta SQL usando el cliente dedb/neon.ts. - El resultado se devuelve al frontend como JSON.
- GET /api/study-rooms: Lista todas las salas.
- POST /api/study-rooms: Crea una nueva sala.
- GET /api/study-rooms/:id: Obtiene una sala por id.
- PUT /api/study-rooms/:id: Actualiza una sala por id.
- DELETE /api/study-rooms/:id: Elimina una sala por id.
- La estructura sigue buenas prácticas de separación de responsabilidades.
- Puedes agregar más carpetas en
queries/ytypes/según crezcan tus features. - Los endpoints usan métodos HTTP estándar (RESTful).