# magpiecrm/magpie-crm-app architecture

> Architecture diagram of the GitHub repository magpiecrm/magpie-crm-app, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-11). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/magpiecrm/magpie-crm-app
- Repository: https://github.com/magpiecrm/magpie-crm-app

## Overview

MagpieCRM is a self-hosted B2B prospecting, contact-management, email-marketing, and sales web app. The principal workflow is to find prospects, retain them in contact lists, and reach them through campaigns or sales sequences; results and engagement can then be managed in sales and inbox features. Separate branches cover forms and surveys, the email builder, and AI assistance. The README documents these capabilities and integrations; sampled source confirms JSON-file persistence and sequence sending, but many feature-to-server call paths were not shown, so those links are omitted or marked unverified.

Main entry points: [`src/server/nodemailer.ts`](https://github.com/magpiecrm/magpie-crm-app/blob/main/src/server/nodemailer.ts) (Email delivery), [`src/server/copilot/agent.ts`](https://github.com/magpiecrm/magpie-crm-app/blob/main/src/server/copilot/agent.ts) (AI copilot), [`src/server/prospecting/search.ts`](https://github.com/magpiecrm/magpie-crm-app/blob/main/src/server/prospecting/search.ts) (Prospect sourcing), [`src/server/emailService.ts`](https://github.com/magpiecrm/magpie-crm-app/blob/main/src/server/emailService.ts) (Campaign management)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_prospecting["Prospecting"]
  node_prospect_search["Prospect search"]
  node_prospecting_service["Prospect sourcing<br/>[search.ts]"]
end

subgraph group_marketing["Marketing"]
  node_contacts["Contact management<br/>[index.tsx]"]
  node_campaigns["Campaign management<br/>[emailService.ts]"]
  node_email_sender["Email delivery<br/>[nodemailer.ts]"]
end

subgraph group_sales["Sales"]
  node_sequences["Sales sequences<br/>[engine.ts]"]
  node_sales_pipeline["Sales pipeline<br/>[pipeline.tsx]"]
  node_sales_records["Sales records<br/>[pipelines.ts]"]
end

subgraph group_content["Content and feedback"]
  node_email_builder["Email builder"]
  node_forms["Forms<br/>[FormBuilder.tsx]"]
  node_surveys["Surveys"]
end

subgraph group_platform["Shared platform"]
  node_copilot["AI copilot<br/>[agent.ts]"]
  node_mcp["MCP access<br/>[mcp.ts]"]
  node_server_functions["Server functions<br/>[index.ts]"]
  node_database[("JSON database<br/>[db.ts]")]
  node_settings["Settings<br/>[SettingsPage.tsx]"]
end

node_user(("Team user"))
node_socialfetch{{"SocialFetch"}}
node_smtp{{"SMTP service"}}
node_ai_providers{{"Claude / OpenAI"}}

node_user -->|"searches prospects"| node_prospect_search
node_prospect_search -.->|"searches"| node_prospecting_service
node_prospecting_service -->|"sources prospect data"| node_socialfetch
node_user -->|"manages contacts"| node_contacts
node_user -->|"builds campaigns"| node_campaigns
node_campaigns -->|"sends campaign email"| node_email_sender
node_email_sender -->|"delivers email"| node_smtp
node_user -->|"manages sequences"| node_sequences
node_sequences -->|"sends sequence email"| node_email_sender
node_user -->|"manages deals"| node_sales_pipeline
node_sales_pipeline -.->|"loads pipeline data"| node_sales_records
node_user -->|"edits email designs"| node_email_builder
node_user -->|"builds forms"| node_forms
node_user -->|"builds surveys"| node_surveys
node_user -->|"asks for assistance"| node_copilot
node_copilot -->|"uses model"| node_ai_providers
node_user -->|"connects AI apps"| node_mcp
node_mcp -->|"exposes tools"| node_copilot
node_settings -.->|"configures features"| node_server_functions
node_database -->|"loads and saves JSON"| node_database

click node_prospecting_service "https://github.com/magpiecrm/magpie-crm-app/blob/main/src/server/prospecting/search.ts"
click node_contacts "https://github.com/magpiecrm/magpie-crm-app/blob/main/src/routes/marketing/contacts/index.tsx"
click node_campaigns "https://github.com/magpiecrm/magpie-crm-app/blob/main/src/server/emailService.ts"
click node_email_sender "https://github.com/magpiecrm/magpie-crm-app/blob/main/src/server/nodemailer.ts"
click node_sequences "https://github.com/magpiecrm/magpie-crm-app/blob/main/src/server/sequences/engine.ts"
click node_sales_pipeline "https://github.com/magpiecrm/magpie-crm-app/blob/main/src/routes/sales/pipeline.tsx"
click node_sales_records "https://github.com/magpiecrm/magpie-crm-app/blob/main/src/server/sales/pipelines.ts"
click node_email_builder "https://github.com/magpiecrm/magpie-crm-app/blob/main/src/features/email-builder/EmailBuilderContainer.tsx"
click node_forms "https://github.com/magpiecrm/magpie-crm-app/blob/main/src/features/forms/components/FormBuilder.tsx"
click node_surveys "https://github.com/magpiecrm/magpie-crm-app/blob/main/src/features/survey-builder/SurveyBuilderContainer.tsx"
click node_copilot "https://github.com/magpiecrm/magpie-crm-app/blob/main/src/server/copilot/agent.ts"
click node_mcp "https://github.com/magpiecrm/magpie-crm-app/blob/main/src/server/copilot/mcp.ts"
click node_server_functions "https://github.com/magpiecrm/magpie-crm-app/blob/main/src/server/functions/index.ts"
click node_database "https://github.com/magpiecrm/magpie-crm-app/blob/main/src/server/db.ts"
click node_settings "https://github.com/magpiecrm/magpie-crm-app/blob/main/src/features/settings/components/SettingsPage.tsx"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_prospect_search,node_prospecting_service,node_user toneBlue
class node_contacts,node_campaigns,node_email_sender toneAmber
class node_sequences,node_sales_pipeline,node_sales_records toneMint
class node_email_builder,node_forms,node_surveys toneRose
class node_copilot,node_mcp,node_server_functions,node_database,node_settings,node_socialfetch,node_smtp,node_ai_providers toneIndigo
```

## Components

### Prospecting

- **Prospect search**
- [Prospect sourcing](https://github.com/magpiecrm/magpie-crm-app/blob/main/src/server/prospecting/search.ts): `src/server/prospecting/search.ts`

### Marketing

- [Contact management](https://github.com/magpiecrm/magpie-crm-app/blob/main/src/routes/marketing/contacts/index.tsx): `src/routes/marketing/contacts/index.tsx`
- [Campaign management](https://github.com/magpiecrm/magpie-crm-app/blob/main/src/server/emailService.ts): `src/server/emailService.ts`
- [Email delivery](https://github.com/magpiecrm/magpie-crm-app/blob/main/src/server/nodemailer.ts): `src/server/nodemailer.ts`

### Sales

- [Sales sequences](https://github.com/magpiecrm/magpie-crm-app/blob/main/src/server/sequences/engine.ts): `src/server/sequences/engine.ts`
- [Sales pipeline](https://github.com/magpiecrm/magpie-crm-app/blob/main/src/routes/sales/pipeline.tsx): `src/routes/sales/pipeline.tsx`
- [Sales records](https://github.com/magpiecrm/magpie-crm-app/blob/main/src/server/sales/pipelines.ts): `src/server/sales/pipelines.ts`

### Content and feedback

- [Email builder](https://github.com/magpiecrm/magpie-crm-app/blob/main/src/features/email-builder/EmailBuilderContainer.tsx): `src/features/email-builder/EmailBuilderContainer.tsx`
- [Forms](https://github.com/magpiecrm/magpie-crm-app/blob/main/src/features/forms/components/FormBuilder.tsx): `src/features/forms/components/FormBuilder.tsx`
- [Surveys](https://github.com/magpiecrm/magpie-crm-app/blob/main/src/features/survey-builder/SurveyBuilderContainer.tsx): `src/features/survey-builder/SurveyBuilderContainer.tsx`

### Shared platform

- [AI copilot](https://github.com/magpiecrm/magpie-crm-app/blob/main/src/server/copilot/agent.ts): `src/server/copilot/agent.ts`
- [MCP access](https://github.com/magpiecrm/magpie-crm-app/blob/main/src/server/copilot/mcp.ts): `src/server/copilot/mcp.ts`
- [Server functions](https://github.com/magpiecrm/magpie-crm-app/blob/main/src/server/functions/index.ts): `src/server/functions/index.ts`
- [JSON database](https://github.com/magpiecrm/magpie-crm-app/blob/main/src/server/db.ts): `src/server/db.ts`
- [Settings](https://github.com/magpiecrm/magpie-crm-app/blob/main/src/features/settings/components/SettingsPage.tsx): `src/features/settings/components/SettingsPage.tsx`

### Other components

- **Team user**
- **SocialFetch**
- **SMTP service**
- **Claude / OpenAI**

## Connections

- Team user → Prospect search: searches prospects
- Prospect search → Prospect sourcing: searches
- Prospect sourcing → SocialFetch: sources prospect data
- Team user → Contact management: manages contacts
- Team user → Campaign management: builds campaigns
- Campaign management → Email delivery: sends campaign email (evidence: `src/server/emailService.ts`)
- Email delivery → SMTP service: delivers email
- Team user → Sales sequences: manages sequences
- Sales sequences → Email delivery: sends sequence email (evidence: `src/server/sequences/engine.ts`)
- Team user → Sales pipeline: manages deals
- Sales pipeline → Sales records: loads pipeline data
- Team user → Email builder: edits email designs
- Team user → Forms: builds forms
- Team user → Surveys: builds surveys
- Team user → AI copilot: asks for assistance
- AI copilot → Claude / OpenAI: uses model
- Team user → MCP access: connects AI apps
- MCP access → AI copilot: exposes tools
- Settings → Server functions: configures features
- JSON database → JSON database: loads and saves JSON (evidence: `src/server/db.ts`)
