Skip to main content

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)

AppDirectoryDev portBase path
Websitewebsite/5175/
Admin Paneladmin-panel/5173/admin/
Super Admin Panelsuper-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.