7a562c18ec7193a3ba96c8d72c7c8cecdcf62c0b
Co-authored-by: Cursor <cursoragent@cursor.com>
dashboard-cpsp-executive
Main-office executive dashboard. Same frontend look as site dashboard-cpsp, HQ mirror API in backend/.
Architecture
City A/B/C (API+DB) --API key sync--> HQ mirror API+DB --session--> Executive FE (:3002)
- Roles
director/director_admin: view all sites (director_adminis not Django superuser)buh/bu_admin: view only GMs they manage (managed_by) and those GMs' sitesgm/gm_admin: register city sites + sync; onlygmapproves cycle closeaccount_admin: IT Central — User Management only; no ops dashboardssuperuser: break-glass (bootstrap_admin/ seedadmin) — director-level ops + Manajemen Akun; hidden from user listsinactive: locked out- No
is_staff
- City registry:
/api/v1/city-sites/(GM / GM Admin) - Approve close:
POST /api/v1/cycles/{id}/approve-close/(GM only)
Ports
| App | UI | API |
|---|---|---|
Site dashboard-cpsp |
:3001 |
:8000 |
HQ dashboard-cpsp-executive |
:3002 |
:8001 |
Setup
Backend
cd backend
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt
cp .env.example .env
python manage.py migrate
python manage.py seed_demo
npm run dev
Frontend
cd ..
cp .env.example .env
npm install
npm run dev
Open http://localhost:3002.
Seed accounts: admin/admin123 (superuser break-glass: ops + Manajemen Akun), director/director123, director_admin/directoradmin123, buh/buh123, bu_admin/buadmin123, gm/gm123, gm_admin/gmadmin123, account_admin/accountadmin123 (IT user management only).
Languages
TypeScript
57.3%
Python
42%
HTML
0.4%
Shell
0.2%
JavaScript
0.1%