Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📚 BookStack – Gestión de Biblioteca Personal

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


🛠️ Stack Tecnológico

  • 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)

📁 Estructura del Proyecto

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

⚙️ Instalación y uso

1. Clonar el repositorio

git clone https://github.com/tu-usuario/bookstack.git
cd bookstack

2. Instalar dependencias

npm install

3. Configurar variables de entorno

Crea un archivo .env en la raíz del proyecto:

MONGO_URI=mongodb+srv://usuario:contraseña@cluster.mongodb.net/bookstack?retryWrites=true&w=majority

4. Iniciar el servidor

node server.js

5. Abrir en el navegador

http://localhost:3000

🔌 API REST – Endpoints

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

Ejemplo de body para POST:

{
  "titulo": "Cien Años de Soledad",
  "autor": "Gabriel García Márquez",
  "genero": "Ficción",
  "estado": "Pendiente",
  "paginas": 471
}

📊 Modelo de datos – Libro

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

✨ Funcionalidades

  • ✅ 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

🔒 Seguridad

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.


📦 Dependencias

{
  "express": "^5.2.1",
  "mongoose": "^9.2.3",
  "dotenv": "^17.3.1",
  "cors": "^2.8.6"
}

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages