- Features
- Architecture
- Quick Start
- Configuration
- API Reference
- Project Structure
- Development
- Troubleshooting
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Nginx (Port 80) β
β Static Files + Reverse Proxy β
ββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββββ
β
ββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββ
β Django Application (Port 8000) β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββββββ β
β β Dashboard β β Risk Charts β β Climate Data APIβ β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββββββ β
β β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββββββ β
β βVocabulary Mgrβ β Simulation β β User Auth β β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββββββ β
ββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββββ
β
ββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββ
β PostgreSQL 16 + PostGIS (Port 5432) β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββββββ β
β βClimate Data β β Simulations β β Vocabularies β β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
- Docker (v20.10+)
- Docker Compose (v2.0+)
- Git
git clone https://github.com/ambrosia2024/dashboard.git
cd dashboardcp .env.sample .envEdit .env with your configuration:
# Django
DJANGO_SECRET_KEY=your-secure-secret-key-here
# Database (PostgreSQL + PostGIS)
POSTGRES_DB=ambrosia
POSTGRES_USER=amb_admin
POSTGRES_PASSWORD=your-secure-db-password
POSTGRES_HOST=ambrosia_postgres
POSTGRES_PORT=5432
# pgAdmin (optional)
PGADMIN_DEFAULT_EMAIL=admin@yourdomain.com
PGADMIN_DEFAULT_PASSWORD=your-secure-password
# Feature Flags
EMAIL_VERIFICATION_ENABLED=false
# External APIs (optional)
SCIO_VOCAB_API_BASE=
β οΈ Security Note: Generate a strongDJANGO_SECRET_KEYusing:python -c "import secrets; print(secrets.token_urlsafe(50))"
docker compose up -dThis will:
- π³ Pull and build required Docker images
- ποΈ Initialize PostgreSQL with PostGIS extensions
- π§ Run Django migrations automatically
- π¦ Collect static files
- π Start Nginx reverse proxy
| Service | URL | Description |
|---|---|---|
| Dashboard | http://localhost/ | Main web application |
| Admin Panel | http://localhost/admin/ | Django admin interface |
| pgAdmin | http://localhost:5050/ | Database management (optional) |
| Health Check | http://localhost/status | Service health endpoint |
docker compose exec ambrosia_dashboard python manage.py createsuperuser| Variable | Required | Default | Description |
|---|---|---|---|
DJANGO_SECRET_KEY |
Yes | - | Django security key |
POSTGRES_DB |
Yes | ambrosia | Database name |
POSTGRES_USER |
Yes | amb_admin | Database user |
POSTGRES_PASSWORD |
Yes | - | Database password |
POSTGRES_HOST |
Yes | ambrosia_postgres | Database host |
POSTGRES_PORT |
No | 5432 | Database port |
EMAIL_VERIFICATION_ENABLED |
No | false | Enable email verification |
SCIO_VOCAB_API_BASE |
No | dev.api... | Vocabulary API endpoint |
ALLOWED_HOSTS |
No | localhost | Comma-separated allowed hosts |
The application supports customizable dashboard layouts:
- Access Django Admin: http://localhost/admin/
- Navigate to Lumenix β Dashboard view modes
- Create modes like "Farmer View", "Policy Advisor View", "Distributor View"
- Assign charts to each mode via Dashboard view charts
# Create virtual environment
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Setup local PostgreSQL with PostGIS
# Then configure DATABASES in config/settings.py
# Run migrations
python manage.py migrate
# Collect static files
python manage.py collectstatic
# Start development server
python manage.py runserverdocker compose exec ambrosia_dashboard python manage.py test# Create migration
docker compose exec ambrosia_dashboard python manage.py makemigrations
# Apply migration
docker compose exec ambrosia_dashboard python manage.py migrateTo sync plant and pathogen vocabularies from SCiO API:
docker compose exec ambrosia_dashboard python manage.py sync_vocabulary plants
docker compose exec ambrosia_dashboard python manage.py sync_vocabulary pathogensIssue: Database connection failed
# Check database health
docker compose ps
docker compose logs ambrosia_postgresIssue: Static files not loading
# Rebuild and collect static
docker compose down
docker compose up -d --buildIssue: Permission denied on volumes
# Fix volume permissions
docker compose down -v
docker volume prune # β οΈ Warning: Deletes all unused volumes
docker compose up -d# View all logs
docker compose logs -f
# View specific service
docker compose logs -f ambrosia_dashboard