Skip to main content

Engineering

Technical documentation for CRM platform development.

Architecture & Design

DocumentDescription
ArchitectureSystem architecture and design decisions
Data ModelPrisma schema and database design
Event SystemEvent-driven architecture
Queue WorkersBullMQ job processing
Testing StrategyTesting approach and patterns

AI Features

DocumentDescription
AI Segment BuilderNatural language to segment criteria

Reference Library

Project Structure

libs/
├── prisma/crm-client/ # Prisma schema and client
├── crm/core/ # Core services
├── crm/events/ # Event processing
├── crm/campaigns/ # Campaign management
├── crm/automation/ # Marketing automation
└── crm/social/ # Social integration

apps/
└── crm/crm-backend/ # NestJS application

Key Design Decisions

  1. CRM owns segmentation - Rich cross-service data, Messaging handles delivery
  2. Event-driven sync - All data flows via events, not direct queries
  3. Denormalization - Frequently queried data on CustomerProfile
  4. Consent in Messaging - CRM only reads consent, never writes