# samoskito/nod-rastrackdash-wpp architecture

> Architecture diagram of the GitHub repository samoskito/nod-rastrackdash-wpp, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/samoskito/nod-rastrackdash-wpp
- Repository: https://github.com/samoskito/nod-rastrackdash-wpp

## Overview

RastrackDash is a self-hosted, multi-tenant dashboard for agencies managing WhatsApp leads and Meta Ads. The main workflow receives provider webhooks, parses and records lead activity, applies conversion rules, and can send eligible conversion events to Meta; operators review purchase conversions before approval. The web app also supports workspace setup, provider and Meta integrations, campaign reporting, external data connectors, and diagnostics. The map uses documented capabilities and sampled call relationships; unsampled subsystem links are omitted where wiring is uncertain.

Main entry points: [`apps/api/src/common/prisma/prisma.service.ts`](https://github.com/samoskito/nod-rastrackdash-wpp/blob/main/apps/api/src/common/prisma/prisma.service.ts) (Application database), [`apps/api/src/inbound-webhooks/inbound-webhook-ingestion.service.ts`](https://github.com/samoskito/nod-rastrackdash-wpp/blob/main/apps/api/src/inbound-webhooks/inbound-webhook-ingestion.service.ts) (Webhook intake), [`apps/api/src/auth/auth.service.ts`](https://github.com/samoskito/nod-rastrackdash-wpp/blob/main/apps/api/src/auth/auth.service.ts) (Authentication), [`apps/web/src/app/(app)/integrations/page.tsx`](https://github.com/samoskito/nod-rastrackdash-wpp/blob/main/apps/web/src/app/(app)/integrations/page.tsx) (Integration controls)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["Dashboard"]
  node_dashboard["Web dashboard<br/>[page.tsx]"]
  node_integrations_ui["Integration controls<br/>[page.tsx]"]
  node_events_ui["Events &amp; reviews<br/>[page.tsx]"]
  node_reports_ui["Reports<br/>[page.tsx]"]
end

subgraph group_access["Access &amp; Workspaces"]
  node_auth_api["Authentication<br/>[auth.service.ts]"]
  node_workspaces["Workspace access"]
  node_license["License client"]
end

subgraph group_ingest["Lead Ingestion"]
  node_provider["WhatsApp providers"]
  node_webhooks["Webhook intake"]
  node_parsers["Provider parsers"]
  node_lead_service["Lead attribution<br/>[leads.service.ts]"]
  node_external_data["External connectors"]
  node_external_ingestion["External event ingestion"]
end

subgraph group_conversion["Conversion Operations"]
  node_rules["Conversion rules"]
  node_conversion_orchestrator["Conversion orchestration"]
  node_review_api["Purchase reviews"]
  node_review_approval["Review approval"]
  node_conversion_events["Conversion delivery"]
end

subgraph group_analytics["Integrations &amp; Analytics"]
  node_meta["Meta Ads &amp; CAPI<br/>[meta.adapter.ts]"]
  node_reporting["Reporting metrics"]
  node_diagnostics["Operational diagnostics"]
end

node_agency(("Agency operator"))
node_db[("Application database<br/>[prisma.service.ts]")]
node_meta_service(("Meta platform"))
node_whatsapp_service(("WhatsApp provider service"))
node_external_mysql[("External MySQL")]

node_agency -->|"uses"| node_dashboard
node_agency -->|"configures"| node_integrations_ui
node_agency -->|"reviews"| node_events_ui
node_agency -->|"views"| node_reports_ui
node_dashboard -->|"authenticates"| node_auth_api
node_integrations_ui -->|"authenticates"| node_auth_api
node_events_ui -->|"authenticates"| node_auth_api
node_reports_ui -->|"authenticates"| node_auth_api
node_auth_api -->|"resolves access"| node_workspaces
node_auth_api -->|"reads/writes"| node_db
node_workspaces -->|"reads/writes"| node_db
node_license -->|"records status"| node_db
node_whatsapp_service -->|"delivers events"| node_webhooks
node_webhooks -->|"parses payload"| node_parsers
node_webhooks -->|"records delivery"| node_db
node_webhooks -->|"resolves provider"| node_provider
node_webhooks -->|"records lead activity"| node_lead_service
node_webhooks -->|"records diagnostics"| node_diagnostics
node_provider -.->|"calls provider"| node_whatsapp_service
node_external_mysql -.->|"supplies rows"| node_external_data
node_external_data -->|"dispatches events"| node_external_ingestion
node_external_ingestion -->|"upserts lead"| node_lead_service
node_external_ingestion -->|"records conversion"| node_conversion_events
node_external_ingestion -->|"reads/writes"| node_db
node_rules -->|"reads/writes"| node_db
node_conversion_orchestrator -->|"persists decisions"| node_db
node_review_api -->|"reads/writes"| node_db
node_events_ui -->|"manages reviews"| node_review_api
node_review_api -->|"prepares approval"| node_review_approval
node_review_approval -->|"orchestrates decision"| node_conversion_orchestrator
node_review_approval -->|"updates review"| node_db
node_conversion_events -->|"records events"| node_db
node_conversion_events -->|"dispatches conversions"| node_meta
node_meta -.->|"calls Meta"| node_meta_service
node_reports_ui -->|"requests metrics"| node_reporting
node_reporting -->|"reads reporting data"| node_db
node_integrations_ui -->|"configures Meta"| node_meta
node_integrations_ui -->|"configures providers"| node_provider

click node_dashboard "https://github.com/samoskito/nod-rastrackdash-wpp/blob/main/apps/web/src/app/(app)/overview/page.tsx"
click node_integrations_ui "https://github.com/samoskito/nod-rastrackdash-wpp/blob/main/apps/web/src/app/(app)/integrations/page.tsx"
click node_events_ui "https://github.com/samoskito/nod-rastrackdash-wpp/blob/main/apps/web/src/app/(app)/events/page.tsx"
click node_reports_ui "https://github.com/samoskito/nod-rastrackdash-wpp/blob/main/apps/web/src/app/(app)/reports/page.tsx"
click node_auth_api "https://github.com/samoskito/nod-rastrackdash-wpp/blob/main/apps/api/src/auth/auth.service.ts"
click node_workspaces "https://github.com/samoskito/nod-rastrackdash-wpp/blob/main/apps/api/src/workspaces/workspaces.service.ts"
click node_license "https://github.com/samoskito/nod-rastrackdash-wpp/blob/main/apps/api/src/licensing-client/license-client.service.ts"
click node_db "https://github.com/samoskito/nod-rastrackdash-wpp/blob/main/apps/api/src/common/prisma/prisma.service.ts"
click node_provider "https://github.com/samoskito/nod-rastrackdash-wpp/blob/main/apps/api/src/integrations/whatsapp-providers/whatsapp-provider.registry.ts"
click node_webhooks "https://github.com/samoskito/nod-rastrackdash-wpp/blob/main/apps/api/src/inbound-webhooks/inbound-webhook-ingestion.service.ts"
click node_parsers "https://github.com/samoskito/nod-rastrackdash-wpp/blob/main/apps/api/src/inbound-webhooks/providers/inbound-webhook-parser.registry.ts"
click node_lead_service "https://github.com/samoskito/nod-rastrackdash-wpp/blob/main/apps/api/src/leads/leads.service.ts"
click node_external_data "https://github.com/samoskito/nod-rastrackdash-wpp/blob/main/apps/api/src/external-data/external-data.service.ts"
click node_external_ingestion "https://github.com/samoskito/nod-rastrackdash-wpp/blob/main/apps/api/src/external-data/external-event-ingestion.service.ts"
click node_rules "https://github.com/samoskito/nod-rastrackdash-wpp/blob/main/apps/api/src/conversion-rules/conversion-rules.service.ts"
click node_conversion_orchestrator "https://github.com/samoskito/nod-rastrackdash-wpp/blob/main/apps/api/src/conversion-rules/provider-conversion-orchestrator.service.ts"
click node_review_api "https://github.com/samoskito/nod-rastrackdash-wpp/blob/main/apps/api/src/inbound-webhook-production/purchase-reviews.service.ts"
click node_review_approval "https://github.com/samoskito/nod-rastrackdash-wpp/blob/main/apps/api/src/conversion-rules/provider-conversion-review-approval.service.ts"
click node_conversion_events "https://github.com/samoskito/nod-rastrackdash-wpp/blob/main/apps/api/src/conversion-events/conversion-events.service.ts"
click node_meta "https://github.com/samoskito/nod-rastrackdash-wpp/blob/main/apps/api/src/integrations/meta/meta.adapter.ts"
click node_reporting "https://github.com/samoskito/nod-rastrackdash-wpp/blob/main/apps/api/src/reporting/reporting-metrics.engine.ts"
click node_diagnostics "https://github.com/samoskito/nod-rastrackdash-wpp/blob/main/apps/api/src/diagnostics/diagnostics.service.ts"

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_dashboard,node_integrations_ui,node_events_ui,node_reports_ui toneBlue
class node_auth_api,node_workspaces,node_license,node_db,node_external_mysql toneAmber
class node_provider,node_webhooks,node_parsers,node_lead_service,node_external_data,node_external_ingestion toneMint
class node_rules,node_conversion_orchestrator,node_review_api,node_review_approval,node_conversion_events toneRose
class node_meta,node_reporting,node_diagnostics,node_agency,node_meta_service,node_whatsapp_service toneIndigo
```

## Components

### Dashboard

- [Web dashboard](https://github.com/samoskito/nod-rastrackdash-wpp/blob/main/apps/web/src/app/(app)/overview/page.tsx): `apps/web/src/app/(app)/overview/page.tsx`
- [Integration controls](https://github.com/samoskito/nod-rastrackdash-wpp/blob/main/apps/web/src/app/(app)/integrations/page.tsx): `apps/web/src/app/(app)/integrations/page.tsx`
- [Events & reviews](https://github.com/samoskito/nod-rastrackdash-wpp/blob/main/apps/web/src/app/(app)/events/page.tsx): `apps/web/src/app/(app)/events/page.tsx`
- [Reports](https://github.com/samoskito/nod-rastrackdash-wpp/blob/main/apps/web/src/app/(app)/reports/page.tsx): `apps/web/src/app/(app)/reports/page.tsx`

### Access & Workspaces

- [Authentication](https://github.com/samoskito/nod-rastrackdash-wpp/blob/main/apps/api/src/auth/auth.service.ts): `apps/api/src/auth/auth.service.ts`
- [Workspace access](https://github.com/samoskito/nod-rastrackdash-wpp/blob/main/apps/api/src/workspaces/workspaces.service.ts): `apps/api/src/workspaces/workspaces.service.ts`
- [License client](https://github.com/samoskito/nod-rastrackdash-wpp/blob/main/apps/api/src/licensing-client/license-client.service.ts): `apps/api/src/licensing-client/license-client.service.ts`

### Lead Ingestion

- [WhatsApp providers](https://github.com/samoskito/nod-rastrackdash-wpp/blob/main/apps/api/src/integrations/whatsapp-providers/whatsapp-provider.registry.ts): `apps/api/src/integrations/whatsapp-providers/whatsapp-provider.registry.ts`
- [Webhook intake](https://github.com/samoskito/nod-rastrackdash-wpp/blob/main/apps/api/src/inbound-webhooks/inbound-webhook-ingestion.service.ts): `apps/api/src/inbound-webhooks/inbound-webhook-ingestion.service.ts`
- [Provider parsers](https://github.com/samoskito/nod-rastrackdash-wpp/blob/main/apps/api/src/inbound-webhooks/providers/inbound-webhook-parser.registry.ts): `apps/api/src/inbound-webhooks/providers/inbound-webhook-parser.registry.ts`
- [Lead attribution](https://github.com/samoskito/nod-rastrackdash-wpp/blob/main/apps/api/src/leads/leads.service.ts): `apps/api/src/leads/leads.service.ts`
- [External connectors](https://github.com/samoskito/nod-rastrackdash-wpp/blob/main/apps/api/src/external-data/external-data.service.ts): `apps/api/src/external-data/external-data.service.ts`
- [External event ingestion](https://github.com/samoskito/nod-rastrackdash-wpp/blob/main/apps/api/src/external-data/external-event-ingestion.service.ts): `apps/api/src/external-data/external-event-ingestion.service.ts`

### Conversion Operations

- [Conversion rules](https://github.com/samoskito/nod-rastrackdash-wpp/blob/main/apps/api/src/conversion-rules/conversion-rules.service.ts): `apps/api/src/conversion-rules/conversion-rules.service.ts`
- [Conversion orchestration](https://github.com/samoskito/nod-rastrackdash-wpp/blob/main/apps/api/src/conversion-rules/provider-conversion-orchestrator.service.ts): `apps/api/src/conversion-rules/provider-conversion-orchestrator.service.ts`
- [Purchase reviews](https://github.com/samoskito/nod-rastrackdash-wpp/blob/main/apps/api/src/inbound-webhook-production/purchase-reviews.service.ts): `apps/api/src/inbound-webhook-production/purchase-reviews.service.ts`
- [Review approval](https://github.com/samoskito/nod-rastrackdash-wpp/blob/main/apps/api/src/conversion-rules/provider-conversion-review-approval.service.ts): `apps/api/src/conversion-rules/provider-conversion-review-approval.service.ts`
- [Conversion delivery](https://github.com/samoskito/nod-rastrackdash-wpp/blob/main/apps/api/src/conversion-events/conversion-events.service.ts): `apps/api/src/conversion-events/conversion-events.service.ts`

### Integrations & Analytics

- [Meta Ads & CAPI](https://github.com/samoskito/nod-rastrackdash-wpp/blob/main/apps/api/src/integrations/meta/meta.adapter.ts): `apps/api/src/integrations/meta/meta.adapter.ts`
- [Reporting metrics](https://github.com/samoskito/nod-rastrackdash-wpp/blob/main/apps/api/src/reporting/reporting-metrics.engine.ts): `apps/api/src/reporting/reporting-metrics.engine.ts`
- [Operational diagnostics](https://github.com/samoskito/nod-rastrackdash-wpp/blob/main/apps/api/src/diagnostics/diagnostics.service.ts): `apps/api/src/diagnostics/diagnostics.service.ts`

### Other components

- **Agency operator**
- [Application database](https://github.com/samoskito/nod-rastrackdash-wpp/blob/main/apps/api/src/common/prisma/prisma.service.ts): `apps/api/src/common/prisma/prisma.service.ts`
- **Meta platform**
- **WhatsApp provider service**
- **External MySQL**

## Connections

- Agency operator → Web dashboard: uses
- Agency operator → Integration controls: configures
- Agency operator → Events & reviews: reviews
- Agency operator → Reports: views
- Web dashboard → Authentication: authenticates
- Integration controls → Authentication: authenticates
- Events & reviews → Authentication: authenticates
- Reports → Authentication: authenticates
- Authentication → Workspace access: resolves access
- Authentication → Application database: reads/writes
- Workspace access → Application database: reads/writes
- License client → Application database: records status
- WhatsApp provider service → Webhook intake: delivers events
- Webhook intake → Provider parsers: parses payload
- Webhook intake → Application database: records delivery
- Webhook intake → WhatsApp providers: resolves provider
- Webhook intake → Lead attribution: records lead activity
- Webhook intake → Operational diagnostics: records diagnostics
- WhatsApp providers → WhatsApp provider service: calls provider
- External MySQL → External connectors: supplies rows
- External connectors → External event ingestion: dispatches events
- External event ingestion → Lead attribution: upserts lead
- External event ingestion → Conversion delivery: records conversion
- External event ingestion → Application database: reads/writes
- Conversion rules → Application database: reads/writes
- Conversion orchestration → Application database: persists decisions
- Purchase reviews → Application database: reads/writes
- Events & reviews → Purchase reviews: manages reviews
- Purchase reviews → Review approval: prepares approval
- Review approval → Conversion orchestration: orchestrates decision
- Review approval → Application database: updates review
- Conversion delivery → Application database: records events
- Conversion delivery → Meta Ads & CAPI: dispatches conversions
- Meta Ads & CAPI → Meta platform: calls Meta
- Reports → Reporting metrics: requests metrics
- Reporting metrics → Application database: reads reporting data
- Integration controls → Meta Ads & CAPI: configures Meta
- Integration controls → WhatsApp providers: configures providers
