Este es un proyecto universitario que implementa un "Sistema de Gestión de Bibliotecas Virtuales" (SGBV). El objetivo es crear una API RESTful para gestionar usuarios, recursos (libros, audiolibros) y préstamos virtuales.
La solución está construida sobre una arquitectura de API monolítica limpia, utilizando C# y el framework .NET 8 (Web API).
El stack principal utilizado es el siguiente:
- Lenguaje/Framework: C# con .NET 8 (Web API)
- Contenerización: Docker y Docker Compose
- Base de Datos: PostgreSQL
- Gestión de BD: PgAdmin
Todo el entorno de desarrollo (la API, la base de datos y PgAdmin) está orquestado con Docker Compose, facilitando su ejecución con un solo comando.
- Tener Docker Desktop instalado y en ejecución.
-
Clona este repositorio:
git clone [URL-DEL-REPOSITORIO] cd [NOMBRE-DEL-PROYECTO] -
Ejecuta Docker Compose desde la raíz del proyecto: (Asegúrate de estar en la carpeta donde se encuentra el archivo
docker-compose.yml)docker-compose up -d --build
-
¡Listo! Docker construirá las imágenes y levantará los tres contenedores (API, DB y PgAdmin).
Una vez levantados los contenedores, los servicios estarán disponibles en las siguientes URLs:
- URL Base:
http://localhost:8080 - Swagger (Documentación):
http://localhost:8080/swagger
(Nota: El puerto 8080 es un ejemplo. Puedes verificar el puerto mapeado en tu archivo docker-compose.yml)
- URL:
http://localhost:5050 - Usuario:
admin@admin.com(O el que definas en tudocker-compose.yml) - Contraseña:
admin(O la que definas en tudocker-compose.yml)
Al abrir PgAdmin, deberás registrar un nuevo servidor para conectarte a la base de datos de PostgreSQL. Usa las siguientes credenciales (basadas en los nombres de servicio de Docker):
- Host:
postgres_db(Este es el nombre del servicio de Docker, nolocalhost) - Port:
5432 - Nombre de la BD:
sgbv_db(O el que definas en tudocker-compose.yml) - Usuario:
postgres - Contraseña:
password_secret(O la que definas en tudocker-compose.yml)
La documentación completa de la API, con todos los endpoints disponibles y sus modelos de datos, se genera automáticamente con Swagger.
Visita la documentación interactiva en: http://localhost:5173