Skip to main content

Architecture for Newcomers

Last Verified: February 2026
This is a simplified overview of the Equa platform architecture, designed to help new engineers understand how the system is organized and where to find things. For deeper technical detail, see the forthcoming Phase 1 Architecture documentation.

System Diagram

Frontend Modules

equa-web organizes features into 24 modules under equa-web/src/modules/. Each module typically contains its own components, services, and (in some cases) Redux store slices. Source: equa-web/src/modules/ directory listing

Backend Modules

equa-server uses Yarn workspaces with 20 modules under equa-server/modules/. Each module is a separate package with its own package.json, src/ directory, and TypeScript config. Source: equa-server/modules/ directory listing

Key Data Flows

Authentication Flow

Source: equa-server/modules/auth/src/ for authentication logic; session-based auth using Express sessions

Cap Table CRUD

  1. User interacts with the cap table UI (equa-web/src/modules/captable/)
  2. Frontend calls REST endpoints (POST /v1/captable/...)
  3. equa-server’s api module routes to the captable module
  4. captable module uses persistence module to read/write TypeORM entities
  5. Data stored in PostgreSQL
Source: equa-server/modules/captable/ for business logic, equa-server/modules/persistence/src/entity/ for entity definitions

File Upload

  1. User selects file in frontend
  2. Frontend sends multipart upload to POST /v1/files/upload
  3. file-storage module processes the upload
  4. File stored in AWS S3 or Google Cloud Storage (configured via STORAGE_TYPE env var)
  5. Database record created linking the file to its owner entity
Source: equa-server/modules/file-storage/

Equanaut AI Chat

  1. User opens chat in equa-web/src/modules/equanaut/
  2. Frontend connects to equabot-gateway via WebSocket (port 18789)
  3. Gateway routes the message to Claude API
  4. Response streamed back through WebSocket to frontend
Source: equabot-gateway/src/gateway/ for protocol handling

Where Does X Live?

Path Aliases (equa-web)

equa-web uses TypeScript path aliases so you don’t need long relative imports. These are defined in equa-web/tsconfig.json: Source: equa-web/tsconfig.json paths configuration

Architecture Patterns

equa-server uses these key patterns:
  • Modular monolith: Each domain is a separate Yarn workspace package, but they deploy as a single process
  • vineyard-lawn: A custom REST framework that provides endpoint decorators, validation, and routing on top of Express
  • Repository pattern: Data access goes through the persistence module rather than calling TypeORM directly from business logic
  • Service layer: Business logic lives in module src/ directories, HTTP concerns in the api module endpoints
equa-web uses:
  • Module pattern: Features are self-contained under src/modules/ with their own components, services, and routes
  • Redux (legacy): Older modules use Redux for state management; newer code prefers React hooks and local state
  • styled-components: CSS-in-JS for component-scoped styling with a global ThemeProvider
For more depth, the Phase 1 Architecture documents (forthcoming) will cover the data model, entity relationships, permission system, and infrastructure in detail.