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.

Biblioteca La Palabra centraliza toda su configuración en un único archivo .env ubicado en la raíz del repositorio. Tanto el backend Node.js (cargado con dotenv) como docker-compose.yml leen de este mismo archivo, por lo que cualquier cambio se propaga automáticamente a todos los servicios en el siguiente arranque. El repositorio incluye un archivo .env.example con valores seguros para desarrollo local que sirven como punto de partida.
Las variables JWT_SECRET, JWT_REFRESH_SECRET, MYSQL_ROOT_PASSWORD y MYSQL_PASSWORD en .env.example son contraseñas de ejemplo públicamente conocidas. Debes cambiarlas antes de cualquier despliegue accesible desde internet. Los valores por defecto están pensados exclusivamente para entornos de desarrollo local.

Archivo .env.example

# ─── BASE DE DATOS ───────────────────────────────
DATABASE_URL="mysql://biblioteca_user:biblioteca_pass@db:3306/biblioteca_db"

# ─── JWT ─────────────────────────────────────────
JWT_SECRET=super_secreto_cambiame_en_produccion_2024
JWT_EXPIRES_IN=8h
JWT_REFRESH_SECRET=refresh_super_secreto_2024
JWT_REFRESH_EXPIRES_IN=7d

# ─── BACKEND ─────────────────────────────────────
NODE_ENV=development
PORT=4000
FRONTEND_URL=http://localhost:3000
APP_URL=http://localhost:3000

# ─── MYSQL ───────────────────────────────────────
MYSQL_ROOT_PASSWORD=root_pass_2024
MYSQL_DATABASE=biblioteca_db
MYSQL_USER=biblioteca_user
MYSQL_PASSWORD=biblioteca_pass

# ─── SMTP (para recuperación de contraseña) ──────
SMTP_HOST=smtp.ethereal.email
SMTP_PORT=587
SMTP_SECURE=false
SMTP_USER=
SMTP_PASS=
SMTP_FROM=noreply@biblioteca-la-palabra.com
ADMIN_EMAIL=admin@biblioteca.com

Variables de base de datos

Estas variables controlan tanto el motor MySQL (leídas por el contenedor db de Docker Compose) como la cadena de conexión de Prisma (leída por el backend).
VariableDescripciónValor de ejemplo
DATABASE_URLCadena de conexión completa que Prisma usa para conectarse a MySQL. Formato: mysql://user:pass@host:port/db. Dentro de Docker, el host es db (nombre del servicio).mysql://biblioteca_user:biblioteca_pass@db:3306/biblioteca_db
MYSQL_ROOT_PASSWORDContraseña del usuario root de MySQL. También la utiliza phpMyAdmin para autenticarse.root_pass_2024
MYSQL_DATABASENombre de la base de datos que MySQL creará automáticamente al inicializarse por primera vez.biblioteca_db
MYSQL_USERUsuario de aplicación con permisos sobre MYSQL_DATABASE. Este es el usuario que aparece en DATABASE_URL.biblioteca_user
MYSQL_PASSWORDContraseña del usuario de aplicación (MYSQL_USER). Debe coincidir con la contraseña en DATABASE_URL.biblioteca_pass

Variables JWT

El backend emite dos tipos de tokens JWT: un access token de corta duración para autenticar peticiones y un refresh token de larga duración para renovarlo sin requerir un nuevo login.
VariableDescripciónValor por defecto
JWT_SECRETClave secreta utilizada para firmar y verificar los access tokens. Debe ser una cadena larga, aleatoria y única en producción.super_secreto_cambiame_en_produccion_2024
JWT_EXPIRES_INTiempo de vida del access token. Acepta el formato de la librería jsonwebtoken (e.g., 8h, 1d, 30m).8h
JWT_REFRESH_SECRETClave secreta independiente para firmar y verificar los refresh tokens. Debe ser diferente de JWT_SECRET. Cambiar en producción.refresh_super_secreto_2024
JWT_REFRESH_EXPIRES_INTiempo de vida del refresh token. Tras su vencimiento, el usuario debe autenticarse nuevamente.7d

Variables de aplicación

Controlan el comportamiento general del servidor Express.
VariableDescripciónValor por defecto
NODE_ENVModo de ejecución de Node.js. En development se habilita el logging de queries de Prisma y mensajes de error detallados. En production se minimizan los detalles expuestos en errores.development
PORTPuerto en el que escucha el servidor Express. Debe coincidir con el mapeo de puertos en docker-compose.yml (4000:4000).4000
FRONTEND_URLURL base del frontend. El backend la utiliza para configurar CORS y para construir enlaces en los correos de recuperación de contraseña y notificaciones.http://localhost:3000
APP_URLURL pública de la aplicación. Se usa en los correos de registro de nuevos socios como enlace de referencia hacia la aplicación.http://localhost:3000

Variables SMTP (email)

El backend envía correos electrónicos en dos escenarios: cuando un usuario solicita recuperar su contraseña y cuando se registra un nuevo socio (notificación al administrador). Estas variables configuran el transporte Nodemailer.
VariableDescripciónValor de ejemplo
SMTP_HOSTHostname del servidor SMTP.smtp.ethereal.email
SMTP_PORTPuerto del servidor SMTP. El puerto 587 corresponde a STARTTLS (recomendado). El puerto 465 se usa para SSL directo.587
SMTP_SECUREfalse para usar STARTTLS en el puerto 587. true para SSL/TLS directo en el puerto 465.false
SMTP_USERNombre de usuario (generalmente una dirección de email) para autenticarse en el servidor SMTP.(vacío en .env.example)
SMTP_PASSContraseña SMTP. En servicios como Gmail, se recomienda usar una contraseña de aplicación en lugar de la contraseña principal de la cuenta.(vacío en .env.example)
SMTP_FROMDirección que aparecerá como remitente en los correos enviados por la aplicación.noreply@biblioteca-la-palabra.com
ADMIN_EMAILDirección del administrador que recibirá notificaciones cuando un nuevo socio se registre en el sistema.admin@biblioteca.com
Para desarrollo local, puedes probar el envío de correos sin necesitar un servidor SMTP real usando Ethereal Email. Crea una cuenta gratuita en su sitio web y obtendrás credenciales SMTP temporales (SMTP_USER y SMTP_PASS). Ethereal captura todos los mensajes enviados y los muestra en su bandeja de entrada web, sin enviarlos a destinatarios reales. El .env.example ya apunta a smtp.ethereal.email como host de ejemplo.

Variable de frontend

El frontend Astro obtiene la URL de la API a través de la variable de entorno PUBLIC_API_URL. Esta variable no se define en .env sino directamente en el bloque environment del servicio frontend dentro de docker-compose.yml:
frontend:
  environment:
    PUBLIC_API_URL: http://localhost:4000/api
En tiempo de ejecución, BaseLayout.astro expone este valor al código cliente mediante window.API_URL. Si la variable no está definida, el fallback configurado en el layout es http://localhost:4000/api, por lo que en desarrollo local funciona sin configuración adicional. Para despliegues en producción o en servidores remotos, actualiza el valor de PUBLIC_API_URL en docker-compose.yml con la URL pública de tu API (por ejemplo, https://api.mibiblioteca.com/api) para que el frontend apunte correctamente al backend.

Build docs developers (and LLMs) love