Skip to content

Architecture Overview

graph TB
    subgraph Clients
        WEB[Web Browser]
        AND[Android App]
        IOS[iOS App]
        EXT[External Systems]
    end

    subgraph Nginx[Nginx Reverse Proxy]
        RP[Reverse Proxy]
    end

    subgraph Server[Rust / Actix-Web Server]
        FE[Frontend - Askama Templates + SWC JS]
        API[Internal API - /api/v1/]
        OPEN[Open API - /open/v1/]
        AUTH[JWT Auth - Access + Refresh Tokens]

        subgraph Clean Architecture
            PRES[Presentation Layer]
            APP[Application Layer]
            DOM[Domain Layer]
            INFRA[Infrastructure Layer]
        end
    end

    subgraph Data
        PG[(PostgreSQL)]
    end

    WEB --> RP
    AND --> RP
    IOS --> RP
    EXT --> RP

    RP --> FE
    RP --> API
    RP --> OPEN

    FE --> PRES
    API --> PRES
    OPEN --> PRES

    PRES --> APP
    APP --> DOM
    INFRA --> DOM
    INFRA --> APP
    INFRA --> PG

Modules

The platform is split into three core business domains:

graph LR
    subgraph ERP[ERP Module]
        INV[Inventory]
        PROC[Procurement]
        ACCT[Accounting]
        INVC[Invoicing]
    end

    subgraph HRIS[HRIS Module]
        EMP[Employee Records]
        PAY[Payroll]
        LV[Leave Management]
        REC[Recruitment]
    end

    subgraph CRM[CRM Module]
        LEAD[Leads]
        CONT[Contacts]
        PIPE[Pipelines]
        COMM[Communications]
    end

    ERP --- HRIS
    HRIS --- CRM
    CRM --- ERP

Each module follows the same clean architecture layers within the Rust server.