Este proyecto es una aplicación de consola completa para la gestión de una biblioteca, desarrollada en Node.js. Consiste en un servidor TCP que maneja la lógica de negocio y la persistencia de datos, y un cliente de terminal interactivo que permite a los usuarios interactuar con la API de una manera intuitiva y guiada.
La aplicación sigue el patrón de diseño Modelo-Vista-Controlador (MVC) para una clara separación de responsabilidades y un código mantenible.
- Gestión CRUD Completa: Soporte para Crear, Leer (listar y ver por ID), Actualizar y Eliminar para tres categorías: Autores, Libros y Editoriales.
- Cliente de Consola Interactivo: Interfaz de usuario amigable con menús numéricos que guía al usuario a través de todas las operaciones, eliminando la necesidad de escribir comandos complejos o JSON.
- Persistencia de Datos: La información se almacena en archivos
.jsonlocales. - Búsqueda Inteligente: Búsqueda parcial e insensible a mayúsculas y minúsculas.
- Reglas de Negocio Robustas:
- Prevención de Duplicados: No permite agregar autores, libros o editoriales con nombres/títulos idénticos.
- Restricción de Eliminación: Protege la integridad de los datos impidiendo que se elimine un autor o editorial si tienen libros asociados.
- Script de Pruebas Automatizado: Incluye un script (
test.js) que ejecuta una secuencia de pruebas para verificar la funcionalidad completa del CRUD y las reglas de negocio.
El proyecto está estructurado siguiendo el patrón Modelo-Vista-Controlador (MVC).
models/(Modelo): La capa de datos, responsable de interactuar directamente con los archivosjson.views/(Vista): La capa de presentación (responseFormatter.js), responsable de formatear los datos para la terminal.controllers/(Controlador): El "cerebro" de la aplicación. Contiene la lógica de negocio y orquesta el flujo entre el Modelo y la Vista.server.js: Actúa como el enrutador. Escucha las conexiones TCP y delega las peticiones al controlador adecuado.client.js: La interfaz de usuario. Mantiene una conexión persistente y proporciona un menú interactivo.
La solución implementada se adhiere estrictamente al principio DRY (Don't Repeat Yourself) mediante el uso extensivo de la carpeta src/utils/:
-
Para los Modelos: Se utiliza una "fábrica" (src/models/createDataModel.js) que centraliza toda la lógica de acceso a archivos, haciendo que los modelos individuales sean simples y declarativos.
-
Para los Controladores: Se extrajo la lógica común de manipulación de datos (como el formateo de texto y el parseo de objetos de entrada) a módulos como formatters.js y objectUtils.js. Esto limpia los controladores, permitiéndoles centrarse exclusivamente en las reglas de negocio.
API-ADA/
├── .gitignore
├── client.js # Interfaz de usuario interactiva
├── package-lock.json
├── package.json
├── README.md # Documentación principal
├── server.js # Punto de entrada del servidor TCP
├── test.js # Script de pruebas automatizadas
├── docs/
│ ├── img/ # Carpeta para imágenes de la documentación
│ └── documentacion.md # Documentación técnica detallada
└── src/
├── controllers/
│ ├── authorsController.js
│ ├── booksController.js
│ └── publishersController.js
├── data/
│ ├── authors.json
│ ├── books.json
│ └── publishers.json
├── models/
│ ├── authorsModel.js
│ ├── booksModel.js
│ ├── createDataModel.js
│ └── publishersModel.js
├── utils/
│ ├── formatters.js
│ ├── objectUtils.js
│ └── utils.js
└── views/
└── responseFormatter.js
Sigue estos pasos para poner en marcha el proyecto.
- Node.js (versión 18 o superior recomendada)
- npm (incluido con Node.js)
- Clona el repositorio:
git clone https://github.com/Antonela89/book-api-ADA
- Navega a la carpeta del proyecto:
cd book-api-ADA - Instala las dependencias:
Este proyecto solo requiere la librería
uuid.npm install
La aplicación requiere dos terminales: una para el servidor y otra para el cliente.
En tu primera terminal, ejecuta el siguiente comando.
npm starto alternativamente:
node server.jsVerás un mensaje de confirmación: Servidor TCP escuchando en el puerto 8080.
En una segunda terminal, ejecuta el siguiente comando para conectarte al servidor.
node client.jsAparecerá el menú principal para empezar a interactuar con la aplicación.
Si no quieres clonar el repositorio, puedes probar la aplicación directamente en tu navegador:
- Entra a este enlace: https://replit.com/@AntonelaBorgogn/book-api-ADA (Nota: Replit puede requerir iniciar sesión para ejecutar la consola interactiva).
- Haz clic en el botón verde "Run" en la parte superior.
- El servidor se iniciará automáticamente y, tras un par de segundos, aparecerá el menú interactivo en la consola de la derecha.
- ¡Interactúa con el menú usando los números de tu teclado!
El proyecto incluye un script que prueba automáticamente el ciclo CRUD y las reglas de negocio.
- Asegúrate de que el servidor esté corriendo en una terminal.
- En una segunda terminal, ejecuta:
node test.js
- La terminal mostrará el progreso y el resultado de cada prueba.
| Nombre | GitHub | |
|---|---|---|
| BORGOGNO, Antonela | antonela-borgogno | Antonela89 |
| MARTINEZ, Gabriela | magamahe | magamahe |
Programa de formación en desarrollo web, Cohorte intro-js-202504
Proyecto educativo sin fines comerciales. Todos los derechos reservados © 2025.


