App Panel
The App Panel is the per-app control center in Zango. It gives you full visibility and control over a single deployed application — its code, configuration, users, access policies, appearance, and runtime behaviour — all from one place.
Every app running in your Zango environment gets its own App Panel. You access it via the Platform Panel at http://localhost:8000/platform, then clicking into a specific app.
What You Can Do in the App Panel
| Section | Purpose | Doc |
|---|---|---|
| Code → Routes | View all URL patterns registered by your app and installed packages | Routes |
| Code → Models | Browse all models defined across your app's modules | Models |
| Code → Policies | View synced permission policies and which roles they cover | Permission Framework |
| Releases | Export and apply versioned configuration snapshots for deployments | Release Fixtures |
| App Settings → Themes | Customise app colours, typography, and button styles | Themes |
| App Settings → Authentication | Configure login methods, password policy, session management, and SAML | Authentication |
| App Settings → Secrets | Store and manage encrypted credentials and environment variables | Secrets |
| Logs → Access / Audit / Framework | Monitor user access events, data changes, and system-level activity | Logs |
Panel Structure
App Panel
├── Code
│ ├── Routes — URL patterns from your app and installed packages
│ ├── Models — Model introspection across all modules
│ └── Policies — Synced permissions and role assignments
├── Releases — Versioned config export/apply (top-level nav item)
├── App Settings
│ ├── Themes — Visual customisation (colours, fonts)
│ ├── Authentication — Login methods, password policy, SAML, MFA
│ └── Secrets — Encrypted config values
└── Logs
├── Access Logs — Login events and failed attempts
├── Application Audit Logs — Data create/update/delete tracking
└── Framework Logs — System-level events
Relationship to Platform Panel
The Platform Panel (/platform) manages the environment level — creating apps, installing packages, managing tenants, and global infrastructure.
The App Panel manages a single app within that environment — its code structure, access control, appearance, and runtime configuration.
Most day-to-day development happens in the App Panel after your app is created.
Quick Reference: Common Tasks
After adding or changing policies.json:
Go to App Panel → your app → Code → Policies and click Sync Policies.
This is the only way to sync policies — there is no CLI command for this. After syncing, verify the updated policies appear in the Code → Policies list.
After adding or changing models:
# Docker Compose
docker compose -f deploy/docker_compose.yml exec app bash -c \
"cd zango_project && python manage.py ws_makemigration <app_name> \
&& python manage.py ws_migrate <app_name>"
# Python venv (from zango_project/ directory)
python manage.py ws_makemigration <app_name>
python manage.py ws_migrate <app_name>
Confirm the new models appear in Code → Models.
After changing tasks.py (restart Celery):
# Docker Compose
docker compose -f deploy/docker_compose.yml restart celery
# Python venv — kill the celery process and re-run in its terminal:
celery -A zango_project worker -l INFO
To check if a route is registered: Navigate to Code → Routes — look for the path pattern and the module/view handling it.
To store an API key or secret: Go to App Settings → Secrets and add a new secret. Access it in code via the Secrets API.
To debug a 403 error: Check Code → Policies to confirm the view is listed under a policy that includes the user's role.