API RESTful construida con Express.js y SQLite3 para gestionar artistas, series e issues de una editorial de cómics.
- Express.js – Servidor web
- SQLite3 – Base de datos relacional
- Body-Parser – Middleware para parsear JSON
- Morgan – Logger HTTP
- Cors – Cross-Origin Resource Sharing
- Errorhandler – Manejo de errores
capstone-project-1-x-press-publishing/
├── api/
│ ├── api.js # Router principal
│ ├── artists.js # CRUD de artistas
│ ├── series.js # CRUD de series y montaje de issues
│ └── issues.js # CRUD de issues
├── database.sqlite # Base de datos
├── migration.js # Script de creación de tablas
├── seed.js # (opcional) Datos iniciales
├── server.js # Servidor Express
└── test/ # Suite de tests de Codecademy
-
Clona el repositorio:
git clone https://github.com/tuusuario/x-press-publishing.git cd x-press-publishing
-
Instala dependencias:
npm install
-
Crea las tablas:
node migration.js
-
(Opcional) Inserta datos de prueba:
node seed.js
-
Inicia el servidor:
node server.js
Servirá en:
http://localhost:4000/api
Método | Endpoint | Descripción |
---|---|---|
GET | /api/artists |
Lista artistas actualmente empleados |
GET | /api/artists/:artistId |
Obtiene un artista por ID |
POST | /api/artists |
Crea un nuevo artista |
PUT | /api/artists/:artistId |
Actualiza datos de un artista |
DELETE | /api/artists/:artistId |
Marca al artista como no empleado (soft delete) |
Método | Endpoint | Descripción |
---|---|---|
GET | /api/series |
Lista todas las series |
GET | /api/series/:seriesId |
Obtiene una serie por ID |
POST | /api/series |
Crea una nueva serie |
PUT | /api/series/:seriesId |
Actualiza datos de una serie |
DELETE | /api/series/:seriesId |
Elimina serie si no tiene issues asociadas |
Método | Endpoint | Descripción |
---|---|---|
GET | /api/series/:seriesId/issues |
Lista issues de una serie |
POST | /api/series/:seriesId/issues |
Crea una nueva issue para una serie |
PUT | /api/series/:seriesId/issues/:issueId |
Actualiza una issue existente |
DELETE | /api/series/:seriesId/issues/:issueId |
Elimina una issue existente |
curl -X POST http://localhost:4000/api/artists \
-H "Content-Type: application/json" \
-d '{"artist":{"name":"Nuevo Artista","dateOfBirth":"1990-05-10","biography":"Biografía","isCurrentlyEmployed":1}}'
curl -X POST http://localhost:4000/api/series \
-H "Content-Type: application/json" \
-d '{"series":{"name":"Serie Ejemplo","description":"Descripción de prueba"}}'
curl -X POST http://localhost:4000/api/series/1/issues \
-H "Content-Type: application/json" \
-d '{"issue":{"name":"Issue 1","issueNumber":1,"publicationDate":"2025-01-01","artistId":1}}'
El proyecto incluye un set de tests automáticos. Para correrlos:
npm test
Si todo está correctamente implementado, todos los tests deberían pasar.
✔ 100% completado – todas las funcionalidades y tests pasan correctamente.
✔ Listo para usar como ejemplo en tu portafolio.
**Diego Espinosa ** – (https://github.com/cloecoding)