Skip to main content
El archivo .env no está incluido en el repositorio — está listado en .gitignore. Nunca lo subas a control de versiones. Cada entorno (local, staging, producción) necesita su propio archivo o configuración de secretos.

Frontend (Next.js)

Crea un archivo .env en la raíz del repositorio con las siguientes variables.

Ejemplo completo

# Base de datos
DATABASE_URL="postgresql://usuario:password@host:5432/psicoscan?sslmode=require"

# NextAuth
NEXTAUTH_SECRET="reemplaza-con-cadena-aleatoria-de-64-caracteres"
NEXTAUTH_URL="http://localhost:3000"

# API de clasificación ML
ML_API_URL="http://localhost:8000"

Referencia de variables

VariableRequeridaDescripción
DATABASE_URLCadena de conexión PostgreSQL completa con credenciales
NEXTAUTH_SECRETClave secreta para firmar tokens JWT de sesión
NEXTAUTH_URLURL base canónica de la aplicación
ML_API_URLNoURL base de la API de clasificación ML. Por defecto: http://localhost:8000

DATABASE_URL

Cadena de conexión en formato URL estándar de PostgreSQL.
postgresql://<usuario>:<password>@<host>:<puerto>/<nombre_bd>?sslmode=require
  • Local: obtén los datos del servidor PostgreSQL local (usuario y contraseña definidos durante la instalación de Postgres).
  • Supabase / Neon: copia la URL de conexión desde el panel de tu proyecto. En Supabase: Settings → Database → Connection string → URI. Asegúrate de usar el puerto 5432 (directo) o el string de connection pooler si lo indican.

NEXTAUTH_SECRET

Cadena aleatoria usada por NextAuth.js para firmar y cifrar cookies y tokens JWT. Debe tener al menos 32 caracteres. Genera una con:
openssl rand -base64 32
Usa el valor completo que devuelve el comando como valor de esta variable.

NEXTAUTH_URL

URL base de la aplicación incluyendo protocolo y puerto (sin barra final).
EntornoValor
Desarrollo localhttp://localhost:3000
Producción en Vercelhttps://tu-app.vercel.app

API de clasificación ML

La API FastAPI lee su configuración directamente de variables de entorno del sistema operativo o de un archivo .env en ml-api/. El frontend Next.js también usa ML_API_URL para llamar a la API desde las Server Actions.

Ejemplo

# .env raíz del repositorio (frontend)
ML_API_URL="http://localhost:8000"

# ml-api/.env (o variables de entorno del servidor de despliegue)
ALLOWED_ORIGINS="http://localhost:3000"

Referencia de variables

VariableServicioRequeridaValor por defectoDescripción
ML_API_URLFrontend (Next.js)Nohttp://localhost:8000URL base de la ML API, usada por Server Actions
ALLOWED_ORIGINSML API (FastAPI)Nohttp://localhost:3000Orígenes permitidos para CORS, separados por comas
DIRECT_URLScript de entrenamientoNoURL de conexión directa a PostgreSQL (sin pooler)

ML_API_URL

URL base de la API FastAPI de clasificación. Usada por la Server Action procesarYGuardarTamizaje en lib/actions/tamizaje.ts:
const mlUrl = process.env.ML_API_URL ?? "http://localhost:8000"
EntornoValor
Desarrollo localhttp://localhost:8000 (valor por defecto)
ProducciónURL de tu servicio en Railway o Render, ej. https://tu-ml-api.railway.app
Si esta variable no está definida, el sistema usa http://localhost:8000 como fallback. En producción debes definirla en el entorno del servidor Next.js (Vercel) para que las Server Actions puedan alcanzar la ML API.

ALLOWED_ORIGINS

Lista de orígenes que tienen permiso de hacer peticiones cross-origin a la ML API. La API la lee en main.py con:
_raw = os.getenv("ALLOWED_ORIGINS", "http://localhost:3000")
_origins = [o.strip() for o in _raw.split(",")]
Para múltiples orígenes sepáralos con coma:
ALLOWED_ORIGINS="https://psicoscan.vercel.app,https://psicoscan-staging.vercel.app"
En producción este valor debe ser la URL exacta de tu despliegue en Vercel (sin barra final).

DIRECT_URL

URL de conexión directa (sin connection pooler) a PostgreSQL. Usada exclusivamente por el script de entrenamiento ml-api/scripts/entrenar_sena.py:
db_url = os.getenv("DIRECT_URL") or os.getenv("DATABASE_URL")
VariableCuándo se usa
DIRECT_URLSupabase/Neon con connection pooler — el pooler no soporta consultas largas; usa la URL de conexión directa (puerto 5432)
DATABASE_URLFallback si DIRECT_URL no está definida
Esta variable solo es necesaria si vas a ejecutar el script de entrenamiento ML. No la requiere el frontend Next.js.

Build docs developers (and LLMs) love