Arsitektur Sistem Codeverta ERP
Halaman ini menjelaskan struktur teknis, alur data, komponen infrastruktur, dan skema arsitektur yang digunakan oleh Codeverta ERP Core.
Topologi Infrastrukturβ
βββββββββββββββββββββββββββ
β Client / Web Browser β
ββββββββββββββ¬βββββββββββββ
β
βΌ
βββββββββββββββββββββββββββ
β HAProxy Router β
β (TLS, Tenant Subdomain) β
ββββββββββββββ¬βββββββββββββ
β
βββββββββββββββββββββββ΄ββββββββββββββββββββββ
βΌ βΌ
βββββββββββββββββββββββββ βββββββββββββββββββββββββ
β apps/admin (Frontend)β β apps/backend (Gin API)β
β React 19 + Vite App β β Go REST microserviceβ
βββββββββββββββββββββββββ βββββββββββββ¬ββββββββββββ
β
βββββββββββββββββββββββΌββββββββββββββββββββββ
βΌ βΌ βΌ
ββββββββββββββββββββ ββββββββββββββββββββ ββββββββββββββββββββ
β PostgreSQL DB β β Redis Cache/Limitβ β Tencent Cloud SESβ
β (Tenant Schemas) β β (Sessions & Logs)β β (Email Delivery) β
ββββββββββββββββββββ ββββββββββββββββββββ ββββββββββββββββββββ
Backend Application Layer (apps/backend)β
Backend ditulis dalam bahasa Go (Golang) menggunakan framework Gin dan ORM GORM. Struktur aplikasi mengadopsi pemisahan berbasis modul:
apps/backend/
βββ cmd/ # Entrypoints tambahan & CLI helpers
βββ common/ # Redis client, Zap logger, global DB instances
βββ controller/ # Core controllers (Auth, User, Tenant, Order, Finance, dll)
βββ database/ # Database setup, GORM connection, migration engines
βββ dto/ # Data Transfer Objects untuk payload validasi
βββ middleware/ # Auth, Tenant Resolver, Rate Limiter, Audit Plugin
βββ model/ # Core GORM struct models (Tenant, User, Order, AuditLog, dll)
βββ modules/ # Isolated business domain modules
β βββ buying/ # Controller, Model, Routes untuk Pembelian
β βββ selling/ # Controller, Model, Routes untuk Penjualan & POS
β βββ stock/ # Controller, Model, Routes untuk Inventoris & Stok
βββ repository/ # Data access abstractions
βββ router/ # Gin Router definitions (api-router, admin-router, crm-router, dll)
βββ services/ # External service wrappers (Tencent SES, Payment Gateways, dll)
Multi-Tenancy Engine & Middlewareβ
1. Tenant Resolver Middleware (middleware.TenantResolver)β
- Setiap request yang masuk ke grup API bertandatangan tenant dievaluasi oleh
TenantResolver. - Resolver mendeteksi tenant dari header HTTP, subdomain URL, atau token klaim JWT.
tenant_iddisimpan ke dalamgin.Contextdan diinjeksikan ke dalam GORM plugin scope.
2. GORM Plugins Automatically Scopedβ
- Tenant Plugin (
middleware.RegisterTenantPlugin): Menambahkan klausa filtertenant_id = ?secara otomatis pada query SELECT, UPDATE, dan DELETE. - Audit Plugin (
middleware.RegisterAuditPlugin): Mencatat setiap perubahan data (INSERT, UPDATE, DELETE) ke tabelaudit_logssecara transparan tanpa mengganggu logika bisnis.
Frontend Application Layer (apps/admin)β
Dashboard admin menggunakan React 19 yang dibundel oleh Vite:
- State & Router: React Router v6 / Desk Navigation System.
- Styling: Vanilla CSS Modules & Utility Classes dengan tema yang terkurasi.
- Feature Modules: Terorganisir di
src/modules/(selling,buying,stock,crm,accounting,administration,settings).
Proxy & Routing Layer (haproxy/)β
HAProxy bertindak sebagai pintu gerbang (edge gateway) untuk perutean lalu lintas web:
erp.codeverta.com: Diteruskan ke container frontendapps/admin.erp-api.codeverta.com: Diteruskan ke container backendapps/backend.- WebSocket Pass-through: Mendukung upgrade koneksi HTTP ke WebSocket untuk
/api/ws/activity.