Local Development
:::info Status
Implemented. Source: CLAUDE.md, fastapi-backend/README.md.
:::
Everything at once
./start.sh
Builds all three frontends into fastapi-backend/public/, creates a Python
venv, installs dependencies, starts the backend on :8082. See
Getting Started for the resulting URLs.
Backend only
cd fastapi-backend
python -m venv venv && source venv/bin/activate
pip install -r requirements.txt
uvicorn main:app --host 0.0.0.0 --port 8082 --reload
Python 3.12 is required (fastapi-backend/.python-version).
Frontend apps (each runs independently)
| App | Directory | Dev port | Base path |
|---|---|---|---|
| Website | website/ | 5175 | / |
| Admin Panel | admin-panel/ | 5173 | /admin/ |
| Super Admin Panel | super-admin-panel/ | 5174 | /super-admin/ |
cd <app-dir>
npm install && npm run dev
Production build (outputs to fastapi-backend/public/):
npm run build
Local dev (no Docker/Caddy): each app's Vite dev server proxies /api and
/ws to localhost:8082. Admin Panel's base path is /admin/ — its Vite
config and all asset paths account for this; keep that in mind when adding
new static assets there.
Docker
docker compose up --build
# local dev, with ports exposed (including Icecast, never do this in prod):
docker compose -f docker-compose.local.yml up --build
Full production topology: Deployment Architecture.
Debugging the backend
fastapi-backend/README.md documents a debugpy attach point on port
5678 for uvicorn --reload runs — see that file for the exact VS Code
launch configuration.