Aplicación web CRUD para catalogar libros personales. Permite registrar libros, cambiar su estado de lectura y filtrarlos por género.
Autor: Karen Martinez
Curso: Dev Senior Code – JavaScript MEAN Mastery
- Backend: Node.js + Express.js
- Base de datos: MongoDB Atlas + Mongoose
- Frontend: HTML5, CSS3 (Flexbox + Grid), JavaScript Vanilla (Fetch API)
- Seguridad: Variables de entorno (.env)
bookstack/
├── controllers/
│ └── libroController.js # Lógica de cada endpoint
├── models/
│ └── Libro.js # Schema de Mongoose
├── routes/
│ └── libros.js # Definición de rutas API
├── public/
│ └── index.html # Frontend completo
├── server.js # Punto de entrada del servidor
├── .env # Variables de entorno (no subir a GitHub)
└── package.json
git clone https://github.com/tu-usuario/bookstack.git
cd bookstacknpm installCrea un archivo .env en la raíz del proyecto:
MONGO_URI=mongodb+srv://usuario:contraseña@cluster.mongodb.net/bookstack?retryWrites=true&w=majority
node server.jshttp://localhost:3000
| Método | Endpoint | Descripción |
|---|---|---|
| GET | /api/libros |
Obtener todos los libros |
| POST | /api/libros |
Agregar un nuevo libro |
| PATCH | /api/libros/:id |
Cambiar el estado del libro |
| DELETE | /api/libros/:id |
Eliminar un libro por ID |
{
"titulo": "Cien Años de Soledad",
"autor": "Gabriel García Márquez",
"genero": "Ficción",
"estado": "Pendiente",
"paginas": 471
}| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
| titulo | String | ✅ | Título del libro |
| autor | String | ✅ | Nombre del escritor |
| genero | String (enum) | ✅ | Ficción, No Ficción, Ciencia, Otros |
| estado | String (enum) | ✅ | Pendiente, Leyendo, Leído |
| paginas | Number | ✅ | Número total de páginas |
- ✅ Registrar libros con título, autor, género, estado y páginas
- ✅ Cambiar el estado del libro: Pendiente → Leyendo → Leído → Pendiente
- ✅ Filtrar libros por estado o género en tiempo real
- ✅ Eliminar libros con animación
- ✅ Validaciones en backend (400 si faltan campos)
- ✅ Manejo de errores 400, 404 y 500
La URL de conexión a MongoDB se almacena en el archivo .env y nunca se expone en el código fuente. El archivo .env debe agregarse al .gitignore para no subirse a repositorios públicos.
{
"express": "^5.2.1",
"mongoose": "^9.2.3",
"dotenv": "^17.3.1",
"cors": "^2.8.6"
}