๐๏ธ 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.
๐๏ธ Monorepo Structure
Ever Gauzy uses an NX-managed monorepo with Lerna for package management. The repository contains multiple applications, libraries, and plugins organized in a structured hierarchy.
๐๏ธ Technology Stack
A complete reference of all technologies, frameworks, and tools used in the Ever Gauzy Platform.
๐๏ธ Backend Architecture
The Ever Gauzy backend is built on NestJS, a progressive Node.js framework for building efficient, scalable server-side applications using TypeScript.
๐๏ธ Frontend Architecture
The Ever Gauzy frontend is built with Angular (v19+) using the Nebular UI component library and ngx-admin dashboard template.
๐๏ธ Worker Architecture
The Worker is a standalone, headless NestJS application that runs background tasks, scheduled jobs, and queue-based processing independently of the main API server. It shares the same database, plugin ecosystem, and core packages as the API but is designed to run as a separate process โ with no HTTP server and no inbound API traffic.
๐๏ธ Multi-ORM Architecture
Ever Gauzy uniquely supports multiple ORMs simultaneously โ TypeORM, MikroORM, and Knex โ allowing developers to choose the best tool for each use case while sharing the same entity definitions and database.
๐๏ธ Plugins & Integrations System
Ever Gauzy uses a modular plugins & integrations architecture that allows extending the platform with new features, integrations, entities, and UI components without modifying the core codebase.
๐๏ธ Event Bus
Ever Gauzy uses NestJS CQRS events for inter-module communication, enabling decoupled, event-driven architecture across the platform.
๐๏ธ File Storage
File storage architecture supporting multiple providers for screenshots, documents, and assets.
๐๏ธ Multi-Tenancy
Ever Gauzy is built as a multi-tenant platform where every piece of data is scoped to a specific tenant. This ensures complete data isolation between different organizations using the platform.
๐๏ธ Design Principles
The Ever Gauzy platform is built on five core design principles that guide all architectural and implementation decisions.
๐๏ธ Microservices & Applications
Overview of all applications in the Ever Gauzy monorepo and their roles.
๐๏ธ Request Lifecycle
Understand how an HTTP request flows through the Ever Gauzy API from entry to response.
๐๏ธ Guard & Interceptor Chain
Detailed reference for all guards, interceptors, and decorators used in the API.
๐๏ธ Database Migration Guide
Create, run, and manage database migrations for schema changes.
๐๏ธ Entity Inheritance Hierarchy
Understanding the base class hierarchy for all database entities.
๐๏ธ Seed Data Architecture
How Gauzy seeds initial data for demo, testing, and production environments.
๐๏ธ WebSocket & Real-Time Architecture
Real-time communication using Socket.IO for live updates and notifications.
๐๏ธ Configuration System
How Gauzy manages environment-based configuration across all modules.
๐๏ธ Error Handling Architecture
Standardized error handling patterns across the API layer.
๐๏ธ Decorator System Reference
Custom TypeScript decorators used throughout the Ever Gauzy codebase.
๐๏ธ Background Job Architecture
Worker processes, job queues, and scheduled tasks.
๐๏ธ Module Dependency Graph
Understanding the module dependency tree and key architectural layers.
๐๏ธ Multi-Tenant Data Flow
How requests are scoped to tenants throughout the stack.
๐๏ธ Audit Logging Architecture
How entity changes are tracked for compliance and traceability.
๐๏ธ WebSocket Architecture
Real-time communication using WebSockets.
๐๏ธ Guard System Deep Dive
NestJS guards used for authentication, authorization, and tenant isolation.
๐๏ธ Interceptor Patterns
Cross-cutting concerns handled through NestJS interceptors.
๐๏ธ CQRS Pattern
Command Query Responsibility Segregation in Gauzy.
๐๏ธ GraphQL API Overview
Using the Gauzy GraphQL API alongside the REST API.
๐๏ธ Redis Caching Architecture
Caching strategy using Redis for performance optimization.
๐๏ธ Service Layer Patterns
Architecture and patterns for the Gauzy service layer.
๐๏ธ Repository Pattern
Data access layer architecture in Gauzy.
๐๏ธ DTO Design Patterns
Data Transfer Object patterns for validation and transformation.
๐๏ธ Middleware Patterns
NestJS middleware used for request processing.
๐๏ธ Scheduler Architecture
Background task scheduling infrastructure.
๐๏ธ Notification Architecture
How notifications flow through the Gauzy system.
๐๏ธ Pipe Validation Deep Dive
Input validation and transformation using NestJS pipes.