Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/camiloivcode/biblioteca-la-palabra/llms.txt

Use this file to discover all available pages before exploring further.

Esta guía te lleva desde cero hasta tener el stack completo de Biblioteca La Palabra corriendo en tu máquina local. Con un solo comando, Docker Compose levanta la base de datos MySQL 8, aplica el schema con Prisma, ejecuta el seed inicial y arranca tanto el servidor Express como el frontend Astro — todo listo para explorar.

Prerequisitos

Antes de comenzar, asegúrate de tener instalado:
  • Docker y Docker Compose (Docker Desktop incluye ambos)
  • Git
  • Los puertos 3000, 4000, 8080 y 3307 disponibles en tu máquina

Pasos

1

Clona el repositorio

Clona el proyecto y entra al directorio raíz:
git clone https://github.com/camiloivcode/biblioteca-la-palabra.git && cd biblioteca-la-palabra
2

Copia el archivo de variables de entorno

Crea tu archivo .env local a partir del ejemplo incluido:
cp .env.example .env
Los valores por defecto del archivo .env.example están configurados para funcionar directamente con Docker Compose en desarrollo local — no necesitas modificar nada para el primer arranque. Las variables clave preconfiguradas incluyen la cadena de conexión a MySQL, los secretos JWT y las credenciales del contenedor de base de datos.
Los valores de JWT_SECRET, JWT_REFRESH_SECRET y las contraseñas de MySQL en .env.example son de uso exclusivo para desarrollo local. Debes cambiarlos antes de cualquier despliegue público. Consulta la guía de configuración para producción para más detalles.
3

Construye e inicia todos los servicios

Levanta el stack completo en modo background:
docker-compose up --build -d
Este comando orquesta los cuatro contenedores en el orden correcto:
  1. db — Inicia MySQL 8 y espera a que el healthcheck confirme que está listo.
  2. backend — Una vez que la base de datos responde, ejecuta npx prisma db push --accept-data-loss para aplicar el schema, luego node prisma/seed.js para poblar los datos iniciales, y finalmente arranca el servidor Express con npm run dev vía Nodemon.
  3. frontend — Arranca el servidor de desarrollo de Astro.
  4. phpmyadmin — Levanta la interfaz web de administración de MySQL.
El primer arranque tarda un poco más por la descarga de imágenes y la compilación. Los arranques subsiguientes son significativamente más rápidos.
4

Verifica que los servicios estén activos

Confirma que los cuatro contenedores están en estado running:
docker-compose ps
Deberías ver los contenedores biblioteca_db, biblioteca_backend, biblioteca_frontend y biblioteca_phpmyadmin con estado Up.
5

Accede a la aplicación

Con todos los servicios activos, abre cualquiera de estas URLs en tu navegador:
ServicioURLDescripción
Frontendhttp://localhost:3000Interfaz web principal
APIhttp://localhost:4000/apiEndpoint raíz de la API REST
phpMyAdminhttp://localhost:8080Gestor visual de MySQL

Credenciales del seed

El seed inicial crea dos usuarios de prueba con sus respectivos roles:
RolEmailContraseña
ADMINadmin@biblioteca.comAdmin2024!
BIBLIOTECARIObibliotecario@biblioteca.comBiblio2024!
El seed está escrito con upsert en todas las entidades, por lo que es idempotente: puedes ejecutarlo múltiples veces sin generar duplicados.

Comandos de desarrollo

Una vez que el entorno está corriendo, puedes ejecutar estos comandos directamente dentro de los directorios backend/ o frontend/ para tareas habituales de desarrollo:
ContextoComandoAcción
Backendnpm run devInicia el servidor Express con hot-reload (Nodemon)
Backendnpm run db:generateRegenera el cliente de Prisma tras cambios en el schema
Backendnpx prisma db pushAplica el schema de Prisma a la base de datos
Backendnpm run db:seedEjecuta node prisma/seed.js para poblar datos iniciales
Backendnpm run db:studioAbre Prisma Studio (GUI visual del ORM)
Frontendnpm run devInicia el servidor de desarrollo de Astro en el puerto 3000
Frontendnpm run buildGenera el build estático en dist/
Nunca uses los secretos de .env.example en un entorno accesible desde internet. Cambia JWT_SECRET, JWT_REFRESH_SECRET y todas las contraseñas de MySQL por valores fuertes y únicos antes de cualquier despliegue público. Consulta la guía de configuración para producción para una checklist completa de seguridad.

Build docs developers (and LLMs) love