RCC Dashboard and Engagement Tool is a Turborepo monorepo for a dashboard web app and shared packages.
- Next.js 16 (App Router) and React 19
- Tailwind CSS v4, shadcn/ui, Base UI
- next-themes, sonner, motion
- FastAPI + Uvicorn backend (Python 3.10+)
- TypeScript and Zod-based env validation
- Bun and Turborepo
Turborepo/
├── apps/
│ ├── web/ # Next.js web app
│ └── server/ # FastAPI backend
└── packages/
├── config/ # Shared TS config
└── env/ # Shared env schemas (server/web/native)
Prerequisites: Bun 1.2+, Python 3.10+, Node.js (for Turbo)
Install dependencies:
bun install
bun run server:install # creates .venv in apps/server (no pip yet)
cd apps/server
source .venv/bin/activate # Windows: .venv\Scripts\Activate
pip install -r requirements.txtRun all apps (web + server):
bun run devRun only one app:
bun run dev:web
bun run dev:serverOpen:
- Web: http://localhost:3000
- Server: http://localhost:8000 (docs at /docs)
- Python 3.10+
- bun (or npm/pnpm) for repo scripts
- Node.js (for Turbo)
From repo root:
bun install # JS deps
bun run server:install # makes .venv in apps/serverInstall Python deps (once the venv exists):
cd apps/server
source .venv/bin/activate # Windows: .venv\Scripts\Activate
pip install -r requirements.txt# via Turbo (recommended, repo root)
bun run dev
# or directly (backend only)
cd apps/server
source .venv/bin/activate
python -m uvicorn app.main:app --reload --host 0.0.0.0 --port 8000- API base: http://localhost:8000
- Swagger: http://localhost:8000/docs
- OpenAPI JSON: http://localhost:8000/openapi.json
server:installonly creates the venv; it does notpip install.- Turbo assumes
pythonresolves inside the venv; activate it beforebun run dev. - For fresh shells, re-run the venv activation step.
python: command not found: usepython3 -m venv .venvthen activate.No module named uvicorn:pip install -r requirements.txtinside the venv.- Turbo exits 127: ensure the venv is active so
pythonis on PATH.
| OS | Command |
|---|---|
| macOS / Linux | source .venv/bin/activate |
| Windows | .venv\\Scripts\\activate |
Edit apps/web/.env as needed:
NEXT_PUBLIC_SERVER_URL=http://localhost:8000Shared env schemas live in packages/env/src/*.ts.
bun run dev: Start all apps in dev modebun run dev:web: Start the web app onlybun run build: Build all appsbun run check-types: Typecheck across the repobun run server:install: Create the server venv inapps/server(no pip)