Ship admin auth, user overview, assessments, chats, assignment filters/export, security hardening, and a separate desktop admin shell with clearer assessment answers. Co-authored-by: Cursor <cursoragent@cursor.com>
36 lines
900 B
Bash
36 lines
900 B
Bash
# Application
|
|
NODE_ENV=development
|
|
PORT=3001
|
|
HOST=0.0.0.0
|
|
API_VERSION=1.0.0
|
|
BUILD_TIMESTAMP=
|
|
|
|
# Database (separate MySQL instance — not Supabase)
|
|
DATABASE_URL=mysql://novya:novya@127.0.0.1:3306/novya
|
|
|
|
# Logging
|
|
LOG_LEVEL=info
|
|
|
|
# Security
|
|
CORS_ORIGIN=http://localhost:5173
|
|
TRUST_PROXY=false
|
|
|
|
# Rate limiting (in-memory; not production-grade)
|
|
RATE_LIMIT_WINDOW_MS=60000
|
|
RATE_LIMIT_MAX=100
|
|
AUTH_RATE_LIMIT_MAX=20
|
|
|
|
# Auth sessions (opaque token; 168 hours = 7 days). Refresh tokens are not implemented.
|
|
AUTH_SESSION_TTL_HOURS=168
|
|
|
|
# Admin bootstrap: comma-separated emails that may be auto-promoted to role=admin on login/register.
|
|
# Runtime /admin access still requires users.role === admin in the database (not ENV alone).
|
|
ADMIN_EMAILS=
|
|
|
|
# AI runtime (backend-only — never VITE_*)
|
|
OPENAI_API_KEY=
|
|
OPENAI_BASE_URL=https://api.gapgpt.app/v1
|
|
OPENAI_MODEL=gpt-4o-mini
|
|
OPENAI_ORG_ID=
|
|
OPENAI_PROJECT_ID=
|