ποΈ Architecture Overview
System Overview
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β CLIENTS β
β (Web App, Mobile App, Admin Portal) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β EDGE CACHE (optional) β
β Cloudflare Workers + KV Store β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β EXPRESS BACKEND β
β ββββββββββββ ββββββββββββ ββββββββββββ ββββββββββββ β
β β Cache β β API β β Core β β Integr. β β
β βMiddlewareββ β Routes ββ β Services ββ β Clients β β
β ββββββββββββ ββββββββββββ ββββββββββββ ββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
βΌ βΌ
βββββββββββββββββββ βββββββββββββββββββββββ
β PostgreSQL β β External Services β
β + Prisma β β βββββββββ βββββββ β
βββββββββββββββββββ β βsevDeskβ βevcc β β
β βββββββββ βββββββ β
β βββββββββ βββββββ β
β βMS Graphβ βistaβ β
β βββββββββ βββββββ β
βββββββββββββββββββββββ
Layer Architecture
1. API Layer (src/api/)
- Express Router
- Request Validation
- Response Formatting
- Error Handling
2. Core Layer (src/core/)
- Business Logic
- Service Classes
- Type Definitions
- Cache Management
3. Integration Layer (src/integrations/)
- External API Clients
- Data Transformation
- Error Handling
4. Data Layer (prisma/)
- Database Schema
- Migrations
- Prisma Client
Multi-Tenant Architecture
βββββββββββββββββββββββββββββββββββββββββββ
β Request β
β Header: X-Tenant-ID: tenant-abc β
βββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββ
β Tenant Middleware β
β - Extract Tenant ID β
β - Validate Access β
β - Inject into Context β
βββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββ
β Service β
β - Filter by tenantId β
β - Enforce Data Isolation β
βββββββββββββββββββββββββββββββββββββββββββ
Data Model
Tenant
βββ Properties
β βββ Units
β βββ Contracts
β βββ Meters
β βββ MeterReadings
βββ Users
Request Flow
1. Client Request
β
2. Cache Middleware (Check HIT/MISS)
β
3. Route Handler
β
4. Service Method
β
5. Prisma Query / Integration Client
β
6. Response (+ Cache Store)
Tech Stack
| Layer |
Technology |
| Runtime |
Node.js 20+ |
| Framework |
Express.js |
| Language |
TypeScript 5.x |
| Database |
PostgreSQL |
| ORM |
Prisma |
| Cache |
Memory / Redis / CF KV |
| Testing |
Vitest |
| Edge |
Cloudflare Workers |