Architecture Overview
Ever Gauzy is built as a modern, full-stack TypeScript monorepo using enterprise-grade frameworks. This document provides a high-level view of the platform's architecture.
System Architecture
Architectural Layers
1. Client Layer
The client layer consists of multiple application types, all consuming the same API:
| Application | Technology | Package Location | Purpose |
|---|---|---|---|
| Web UI | Angular 19+, Nebular/ngx-admin | apps/gauzy | Primary web interface |
| Desktop App | Electron + Angular | apps/desktop | All-in-one desktop application |
| Desktop Timer | Electron + Angular | apps/desktop-timer | Time tracking & activity monitoring |
| Desktop Server | Electron + NestJS | apps/server | Self-hosted API server |
| API Server Desktop | Electron + NestJS | apps/api-server | API-only server deployment |
| Ever Teams | React/Next.js + React Native | External repo | Modern PM/Task interface |
2. API Layer (NestJS)
The backend is a NestJS application following CQRS (Command Query Responsibility Segregation) patterns:
- Controllers — handle HTTP requests, validate inputs, route to handlers
- Commands/Queries — encapsulate business logic via the CQRS pattern
- Services — core business logic and data access
- Guards — authentication and authorization (JWT, Roles, Permissions, Tenant)
- Interceptors — request/response transformation, logging
- Pipes — input validation and transformation (class-validator)
- Modules — NestJS dependency injection containers