System Architecture

High-Level Architecture

        graph TB
    subgraph Clients
        WEB[Web Dashboard<br/>Central Ops / Finance / Procurement / OEM Reporting]
        MOB[Mobile App<br/>Field Teams]
        OEM_PORTAL[OEM Portal<br/>Lead Submission & Reports]
        CUST[Customer Interface<br/>SMS / WhatsApp / Email]
    end

    subgraph API Layer
        GW[API Gateway<br/>JWT Auth + Rate Limiting]
        API[Django REST Framework<br/>api/v1/]
    end

    subgraph Django Apps
        ACC[accounts]
        LED[leads]
        SRV[surveys]
        INS[installations]
        PRO[procurement]
        FIN[finance]
        REP[reporting]
        NOT[notifications]
        EMG[emergency]
    end

    subgraph Data Layer
        DB[(PostgreSQL)]
        MEDIA[Media Storage<br/>S3 / MinIO]
        CACHE[Redis<br/>Cache + Celery Broker]
    end

    subgraph External Services
        SMS[SMS Gateway]
        WA[WhatsApp API]
        EMAIL[Email Service]
        PAY[Payment Gateway<br/>UPI / Bank Transfer]
    end

    WEB --> GW
    MOB --> GW
    OEM_PORTAL --> GW
    GW --> API
    API --> ACC
    API --> LED
    API --> SRV
    API --> INS
    API --> PRO
    API --> FIN
    API --> REP
    API --> NOT
    API --> EMG
    ACC --> DB
    LED --> DB
    SRV --> DB
    INS --> DB
    PRO --> DB
    FIN --> DB
    REP --> DB
    NOT --> DB
    EMG --> DB
    SRV --> MEDIA
    INS --> MEDIA
    NOT --> SMS
    NOT --> WA
    NOT --> EMAIL
    FIN --> PAY
    API --> CACHE
    

Technology Stack

Component

Technology

Backend Framework

Django 5.x + Django REST Framework

Database

PostgreSQL 16

Task Queue

Celery + Redis

Media Storage

S3-compatible (AWS S3 or MinIO for local dev)

Authentication

JWT (SimpleJWT)

API Documentation

drf-spectacular (OpenAPI 3.0)

Notifications

SMS gateway, WhatsApp Business API, SMTP

Payments

UPI integration, bank transfer APIs

Containerization

Docker + Docker Compose

Package Manager

uv

App Dependency Graph

        graph LR
    accounts --> |"no deps"|accounts
    leads --> accounts
    surveys --> leads
    surveys --> accounts
    installations --> surveys
    installations --> accounts
    procurement --> installations
    finance --> procurement
    finance --> accounts
    reporting --> leads
    reporting --> surveys
    reporting --> installations
    notifications --> accounts
    emergency --> accounts
    emergency --> surveys
    emergency --> installations