3.6 KiB
3.6 KiB
Environment Setup
Purpose
Outline required runtime dependencies, environment variables, and local setup steps derived from the codebase configuration.
Code Locations (exact paths)
- Django settings/env:
backend/igny8_core/settings.py - Backend dependencies:
backend/requirements.txt - Backend image provisioning:
backend/Dockerfile - Frontend env/build:
frontend/Dockerfile,frontend/package.json,frontend/vite.config.ts - Compose stack env:
docker-compose.app.yml
High-Level Responsibilities
- Provide prerequisites for backend (Python 3.11, Postgres, Redis) and frontend (Node 18).
- Enumerate environment variables consumed by backend and compose files.
- Describe local or containerized setup flows.
Detailed Behavior
- Backend settings require:
SECRET_KEY,DEBUG,USE_SECURE_COOKIES,USE_SECURE_PROXY_HEADER.- Database:
DATABASE_URLorDB_HOST,DB_NAME,DB_USER,DB_PASSWORD,DB_PORT; falls back to SQLite in DEBUG if none provided. - Redis/Celery:
CELERY_BROKER_URL,CELERY_RESULT_BACKENDdefault toredis://{REDIS_HOST}:{REDIS_PORT}/0. - JWT:
JWT_SECRET_KEY, expiry defaults (15m access, 30d refresh). - CORS: allowed origins include local ports (5173/5174/5176/8024) and
app.igny8.com. - Stripe/PayPal keys optional (
STRIPE_PUBLIC_KEY,STRIPE_SECRET_KEY,PAYPAL_*).
- Backend Dockerfile installs system deps (gcc, libpq-dev) and pip installs
requirements.txt; runscollectstatic(best-effort). - Frontend expects
VITE_BACKEND_URL(compose sets tohttps://api.igny8.com/api); build vianpm installthennpm run build(Dockerfile). - Compose injects DB/Redis env to backend/worker/beat and secure cookie/proxy flags for production use.
Data Structures / Models Involved (no code)
- Not model-specific; environment affects DB connections, auth, CORS, Celery, billing keys.
Execution Flow
- Local (backend):
python -m venv .venv && source .venv/bin/activatepip install -r backend/requirements.txt- Set env vars (DB/REDIS/JWT/CORS/SECRET_KEY).
python backend/manage.py migratethenpython backend/manage.py runserver 8010.
- Local (frontend):
npm installinfrontend/- Set
VITE_BACKEND_URL npm run dev -- --host --port 5173
- Containerized:
- Build images per Dockerfiles; run
docker compose -f docker-compose.app.yml up -dwith external Postgres/Redis and networkigny8_net.
- Build images per Dockerfiles; run
Cross-Module Interactions
- Celery uses same Redis host/port as defined in env; automation tasks rely on this.
- CORS/secure cookie flags must align with frontend host to allow auth.
State Transitions (if applicable)
DEBUGtoggles throttling bypass (IGNY8_DEBUG_THROTTLE) and SQLite fallback.
Error Handling
- Missing DB env → falls back to SQLite in DEBUG; in prod must set Postgres vars.
- Healthcheck in compose will fail if env misconfigured and backend cannot start.
Tenancy Rules
- Unchanged by env; account context enforced in middleware once app runs.
Billing Rules (if applicable)
- Stripe/PayPal keys optional; without them payment flows are disabled/pending.
Background Tasks / Schedulers (if applicable)
- Celery broker/backend must be reachable; worker/beat require the same env set.
Key Design Considerations
- Prefer Postgres in all shared/test/prod; SQLite only for local development.
- Keep SECRET_KEY/JWT keys distinct and secret in production.
How Developers Should Work With This Module
- Add new env variables in
settings.pywith safe defaults; document in this file. - Mirror envs in compose and deployment systems (Portainer/CI) to avoid drift.