# vijaypandav700/saas-analytics-platform architecture

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

- Interactive diagram: https://gitdiagram.com/vijaypandav700/saas-analytics-platform
- Repository: https://github.com/vijaypandav700/saas-analytics-platform

## Overview

This is a multi-tenant SaaS analytics platform: users register and manage organizations, keys, and billing, while clients submit events for ingestion and analytics. The sampled ingestion service validates keys and usage, rate-limits requests, and queues accepted events. The tree also shows a worker and rollup module, but their implementation and connections are not sampled, so those relationships are left unspecified. Database internals and frontend API wiring are likewise only partially evidenced.

Main entry points: [`apps/ingestion/main.go`](https://github.com/vijaypandav700/saas-analytics-platform/blob/main/apps/ingestion/main.go) (Event ingestion), [`apps/api/src/api-keys/api-keys.controller.ts`](https://github.com/vijaypandav700/saas-analytics-platform/blob/main/apps/api/src/api-keys/api-keys.controller.ts) (API key routes), [`apps/api/src/billing/billing.service.ts`](https://github.com/vijaypandav700/saas-analytics-platform/blob/main/apps/api/src/billing/billing.service.ts) (Billing service), [`packages/database/src/schema.ts`](https://github.com/vijaypandav700/saas-analytics-platform/blob/main/packages/database/src/schema.ts) (Application database)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web application"]
  node_webapp["Web interface"]
  node_analyticsui["Analytics dashboard<br/>[page.tsx]"]
  node_settingsui["Organization settings"]
  node_apiclient["API client<br/>[api.ts]"]
end

subgraph group_api["Application API"]
  node_authcontroller["Authentication routes<br/>[auth.controller.ts]"]
  node_authservice["Authentication service<br/>[auth.service.ts]"]
  node_orgcontroller["Organization routes<br/>[orgs.controller.ts]"]
  node_orgservice["Organization service<br/>[orgs.service.ts]"]
  node_keycontroller["API key routes"]
  node_keyservice["API key service"]
  node_billingcontroller["Billing routes"]
  node_billingservice["Billing service<br/>[billing.service.ts]"]
end

subgraph group_events["Event processing"]
  node_ingestion["Event ingestion<br/>[main.go]"]
  node_worker["Event worker<br/>[index.ts]"]
  node_rollup["Analytics rollup<br/>[rollup.ts]"]
  node_eventqueue["Redis event stream"]
end

subgraph group_data["Persistence and billing"]
  node_database[("Application database<br/>[schema.ts]")]
end

node_user(("Organization user"))
node_client(("Event client"))
node_stripe["Stripe"]

node_user -->|"uses"| node_webapp
node_client -->|"submits events"| node_ingestion
node_webapp -->|"opens dashboard"| node_analyticsui
node_webapp -->|"manages account"| node_settingsui
node_authcontroller -->|"calls"| node_authservice
node_orgcontroller -->|"calls"| node_orgservice
node_keycontroller -->|"calls"| node_keyservice
node_keycontroller -->|"checks usage"| node_billingservice
node_billingcontroller -->|"calls"| node_billingservice
node_ingestion -->|"resolves keys"| node_keycontroller
node_ingestion -->|"checks usage"| node_keycontroller
node_ingestion -->|"writes events"| node_eventqueue
node_authservice -->|"reads and writes"| node_database
node_keyservice -->|"reads and writes"| node_database
node_orgservice -->|"reads and writes"| node_database
node_billingservice -->|"reads and writes"| node_database
node_billingservice -->|"creates sessions; verifies webhooks"| node_stripe

click node_webapp "https://github.com/vijaypandav700/saas-analytics-platform/tree/main/apps/web/app"
click node_analyticsui "https://github.com/vijaypandav700/saas-analytics-platform/blob/main/apps/web/app/dashboard/%5BorgId%5D/analytics/page.tsx"
click node_settingsui "https://github.com/vijaypandav700/saas-analytics-platform/tree/main/apps/web/app/dashboard/%5BorgId%5D/settings"
click node_apiclient "https://github.com/vijaypandav700/saas-analytics-platform/blob/main/apps/web/lib/api.ts"
click node_authcontroller "https://github.com/vijaypandav700/saas-analytics-platform/blob/main/apps/api/src/auth/auth.controller.ts"
click node_authservice "https://github.com/vijaypandav700/saas-analytics-platform/blob/main/apps/api/src/auth/auth.service.ts"
click node_orgcontroller "https://github.com/vijaypandav700/saas-analytics-platform/blob/main/apps/api/src/orgs/orgs.controller.ts"
click node_orgservice "https://github.com/vijaypandav700/saas-analytics-platform/blob/main/apps/api/src/orgs/orgs.service.ts"
click node_keycontroller "https://github.com/vijaypandav700/saas-analytics-platform/blob/main/apps/api/src/api-keys/api-keys.controller.ts"
click node_keyservice "https://github.com/vijaypandav700/saas-analytics-platform/blob/main/apps/api/src/api-keys/api-keys.service.ts"
click node_billingcontroller "https://github.com/vijaypandav700/saas-analytics-platform/blob/main/apps/api/src/billing/billing.controller.ts"
click node_billingservice "https://github.com/vijaypandav700/saas-analytics-platform/blob/main/apps/api/src/billing/billing.service.ts"
click node_ingestion "https://github.com/vijaypandav700/saas-analytics-platform/blob/main/apps/ingestion/main.go"
click node_worker "https://github.com/vijaypandav700/saas-analytics-platform/blob/main/apps/worker/src/index.ts"
click node_rollup "https://github.com/vijaypandav700/saas-analytics-platform/blob/main/apps/worker/src/rollup.ts"
click node_database "https://github.com/vijaypandav700/saas-analytics-platform/blob/main/packages/database/src/schema.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_webapp,node_analyticsui,node_settingsui,node_apiclient,node_user,node_client toneBlue
class node_authcontroller,node_authservice,node_orgcontroller,node_orgservice,node_keycontroller,node_keyservice,node_billingcontroller,node_billingservice toneAmber
class node_ingestion,node_worker,node_rollup,node_eventqueue toneMint
class node_database toneRose
class node_stripe toneIndigo
```

## Components

### Web application

- [Web interface](https://github.com/vijaypandav700/saas-analytics-platform/tree/main/apps/web/app): `apps/web/app`
- [Analytics dashboard](https://github.com/vijaypandav700/saas-analytics-platform/blob/main/apps/web/app/dashboard/%5BorgId%5D/analytics/page.tsx): `apps/web/app/dashboard/[orgId]/analytics/page.tsx`
- [Organization settings](https://github.com/vijaypandav700/saas-analytics-platform/tree/main/apps/web/app/dashboard/%5BorgId%5D/settings): `apps/web/app/dashboard/[orgId]/settings`
- [API client](https://github.com/vijaypandav700/saas-analytics-platform/blob/main/apps/web/lib/api.ts): `apps/web/lib/api.ts`

### Application API

- [Authentication routes](https://github.com/vijaypandav700/saas-analytics-platform/blob/main/apps/api/src/auth/auth.controller.ts): `apps/api/src/auth/auth.controller.ts`
- [Authentication service](https://github.com/vijaypandav700/saas-analytics-platform/blob/main/apps/api/src/auth/auth.service.ts): `apps/api/src/auth/auth.service.ts`
- [Organization routes](https://github.com/vijaypandav700/saas-analytics-platform/blob/main/apps/api/src/orgs/orgs.controller.ts): `apps/api/src/orgs/orgs.controller.ts`
- [Organization service](https://github.com/vijaypandav700/saas-analytics-platform/blob/main/apps/api/src/orgs/orgs.service.ts): `apps/api/src/orgs/orgs.service.ts`
- [API key routes](https://github.com/vijaypandav700/saas-analytics-platform/blob/main/apps/api/src/api-keys/api-keys.controller.ts): `apps/api/src/api-keys/api-keys.controller.ts`
- [API key service](https://github.com/vijaypandav700/saas-analytics-platform/blob/main/apps/api/src/api-keys/api-keys.service.ts): `apps/api/src/api-keys/api-keys.service.ts`
- [Billing routes](https://github.com/vijaypandav700/saas-analytics-platform/blob/main/apps/api/src/billing/billing.controller.ts): `apps/api/src/billing/billing.controller.ts`
- [Billing service](https://github.com/vijaypandav700/saas-analytics-platform/blob/main/apps/api/src/billing/billing.service.ts): `apps/api/src/billing/billing.service.ts`

### Event processing

- [Event ingestion](https://github.com/vijaypandav700/saas-analytics-platform/blob/main/apps/ingestion/main.go): `apps/ingestion/main.go`
- [Event worker](https://github.com/vijaypandav700/saas-analytics-platform/blob/main/apps/worker/src/index.ts): `apps/worker/src/index.ts`
- [Analytics rollup](https://github.com/vijaypandav700/saas-analytics-platform/blob/main/apps/worker/src/rollup.ts): `apps/worker/src/rollup.ts`
- **Redis event stream**

### Persistence and billing

- [Application database](https://github.com/vijaypandav700/saas-analytics-platform/blob/main/packages/database/src/schema.ts): `packages/database/src/schema.ts`

### Other components

- **Organization user**
- **Event client**
- **Stripe**

## Connections

- Organization user → Web interface: uses
- Event client → Event ingestion: submits events
- Web interface → Analytics dashboard: opens dashboard
- Web interface → Organization settings: manages account
- Authentication routes → Authentication service: calls
- Organization routes → Organization service: calls
- API key routes → API key service: calls
- API key routes → Billing service: checks usage
- Billing routes → Billing service: calls
- Event ingestion → API key routes: resolves keys
- Event ingestion → API key routes: checks usage
- Event ingestion → Redis event stream: writes events
- Authentication service → Application database: reads and writes
- API key service → Application database: reads and writes
- Organization service → Application database: reads and writes
- Billing service → Application database: reads and writes
- Billing service → Stripe: creates sessions; verifies webhooks
