# ratons127/wp-saas-plattfrom-my architecture

> Architecture diagram of the GitHub repository ratons127/wp-saas-plattfrom-my, 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/ratons127/wp-saas-plattfrom-my
- Repository: https://github.com/ratons127/wp-saas-plattfrom-my

## Overview

This is a managed WordPress hosting platform: WHMCS bills and initiates account lifecycle changes, the Core API coordinates hosting operations, and a per-VM agent performs site-level work. Clients manage sites through the Client Portal; operators use the Admin Portal. The README documents the control-plane deployment and WHMCS/Vultr relationship, while the tree and excerpts expose broad portal and API capabilities. Some feature wiring is not sampled, so the graph groups those capabilities without asserting their internal call sequence.

Main entry points: [`services/core-api/src/database/database.module.ts`](https://github.com/ratons127/wp-saas-plattfrom-my/blob/main/services/core-api/src/database/database.module.ts) (Platform database), [`services/core-api/src/admin-accounts/admin-accounts.controller.ts`](https://github.com/ratons127/wp-saas-plattfrom-my/blob/main/services/core-api/src/admin-accounts/admin-accounts.controller.ts) (Admin API), [`services/core-api/src/accounts/accounts.controller.ts`](https://github.com/ratons127/wp-saas-plattfrom-my/blob/main/services/core-api/src/accounts/accounts.controller.ts) (Client API), [`services/core-api/src/provisioning/provisioning.service.ts`](https://github.com/ratons127/wp-saas-plattfrom-my/blob/main/services/core-api/src/provisioning/provisioning.service.ts) (Account provisioning)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_portals["User portals"]
  node_client_portal["Client Portal<br/>[page.tsx]"]
  node_admin_portal["Admin Portal<br/>[page.tsx]"]
end

subgraph group_control["Control plane"]
  node_client_api["Client API"]
  node_admin_api["Admin API"]
  node_identity["Authentication<br/>[auth.service.ts]"]
  node_provisioning["Account provisioning"]
  node_domains["Domains and DNS<br/>[domains.service.ts]"]
  node_operations["Site operations<br/>[agent.service.ts]"]
  node_backup_restore["Backups and restore<br/>[backups.service.ts]"]
  node_queue["Job queue<br/>[queue.service.ts]"]
end

subgraph group_hosting["Hosting runtime"]
  node_agent["Per-VM agent<br/>[main.go]"]
  node_wordpress_vm["WordPress VM<br/>[main.go]"]
end

subgraph group_integrations["External services"]
  node_vultr["Vultr infrastructure<br/>[vultr.service.ts]"]
  node_cloudflare["Cloudflare DNS"]
  node_object_storage["S3-compatible storage"]
  node_email["Email delivery<br/>[mailer.service.ts]"]
end

subgraph group_state["Platform state"]
  node_database[("Platform database<br/>[database.module.ts]")]
  node_audit["Audit logging"]
end

node_client(("Hosting client"))
node_operator(("Platform operator"))
node_whmcs["WHMCS billing<br/>[wpsaas.php]"]

node_client -->|"manages sites"| node_client_portal
node_operator -->|"operates platform"| node_admin_portal
node_client_portal -->|"authenticates"| node_identity
node_admin_portal -->|"authenticates"| node_identity
node_client_portal -->|"requests site actions"| node_client_api
node_admin_portal -->|"requests operations"| node_admin_api
node_whmcs -->|"provisions accounts"| node_client_api
node_client_api -->|"reads and writes"| node_database
node_admin_api -->|"reads and writes"| node_database
node_provisioning -->|"creates instances"| node_vultr
node_provisioning -->|"configures DNS"| node_cloudflare
node_provisioning -->|"records accounts"| node_database
node_domains -->|"manages DNS"| node_cloudflare
node_operations -->|"enqueues jobs"| node_queue
node_queue -->|"persists jobs"| node_database
node_agent -->|"polls and reports"| node_queue
node_agent -->|"executes site work"| node_wordpress_vm
node_backup_restore -->|"stores backups"| node_object_storage
node_backup_restore -->|"requests backup work"| node_agent
node_admin_api -->|"browses backup objects"| node_object_storage
node_admin_api -->|"records actions"| node_audit
node_client_api -->|"records actions"| node_audit
node_database -->|"stores user records"| node_identity

click node_whmcs "https://github.com/ratons127/wp-saas-plattfrom-my/blob/main/whmcs-module/wpsaas/wpsaas.php"
click node_client_portal "https://github.com/ratons127/wp-saas-plattfrom-my/blob/main/apps/client-portal/src/app/(dashboard)/page.tsx"
click node_admin_portal "https://github.com/ratons127/wp-saas-plattfrom-my/blob/main/apps/admin-portal/src/app/(dashboard)/page.tsx"
click node_client_api "https://github.com/ratons127/wp-saas-plattfrom-my/blob/main/services/core-api/src/accounts/accounts.controller.ts"
click node_admin_api "https://github.com/ratons127/wp-saas-plattfrom-my/blob/main/services/core-api/src/admin-accounts/admin-accounts.controller.ts"
click node_identity "https://github.com/ratons127/wp-saas-plattfrom-my/blob/main/services/core-api/src/auth/auth.service.ts"
click node_provisioning "https://github.com/ratons127/wp-saas-plattfrom-my/blob/main/services/core-api/src/provisioning/provisioning.service.ts"
click node_domains "https://github.com/ratons127/wp-saas-plattfrom-my/blob/main/services/core-api/src/domains/domains.service.ts"
click node_operations "https://github.com/ratons127/wp-saas-plattfrom-my/blob/main/services/core-api/src/agent/agent.service.ts"
click node_backup_restore "https://github.com/ratons127/wp-saas-plattfrom-my/blob/main/services/core-api/src/backups/backups.service.ts"
click node_queue "https://github.com/ratons127/wp-saas-plattfrom-my/blob/main/services/core-api/src/queue/queue.service.ts"
click node_agent "https://github.com/ratons127/wp-saas-plattfrom-my/blob/main/agent/main.go"
click node_wordpress_vm "https://github.com/ratons127/wp-saas-plattfrom-my/blob/main/agent/main.go"
click node_vultr "https://github.com/ratons127/wp-saas-plattfrom-my/blob/main/services/core-api/src/integrations/vultr/vultr.service.ts"
click node_cloudflare "https://github.com/ratons127/wp-saas-plattfrom-my/blob/main/services/core-api/src/integrations/cloudflare/cloudflare.service.ts"
click node_object_storage "https://github.com/ratons127/wp-saas-plattfrom-my/blob/main/services/core-api/src/integrations/object-storage/object-storage.service.ts"
click node_email "https://github.com/ratons127/wp-saas-plattfrom-my/blob/main/services/core-api/src/mailer/mailer.service.ts"
click node_database "https://github.com/ratons127/wp-saas-plattfrom-my/blob/main/services/core-api/src/database/database.module.ts"
click node_audit "https://github.com/ratons127/wp-saas-plattfrom-my/blob/main/services/core-api/src/audit/audit-log.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_client_portal,node_admin_portal,node_client toneBlue
class node_client_api,node_admin_api,node_identity,node_provisioning,node_domains,node_operations,node_backup_restore,node_queue toneAmber
class node_agent,node_wordpress_vm toneMint
class node_vultr,node_cloudflare,node_object_storage,node_email toneRose
class node_database,node_audit,node_operator toneIndigo
class node_whmcs toneTeal
```

## Components

### User portals

- [Client Portal](https://github.com/ratons127/wp-saas-plattfrom-my/blob/main/apps/client-portal/src/app/(dashboard)/page.tsx): `apps/client-portal/src/app/(dashboard)/page.tsx`
- [Admin Portal](https://github.com/ratons127/wp-saas-plattfrom-my/blob/main/apps/admin-portal/src/app/(dashboard)/page.tsx): `apps/admin-portal/src/app/(dashboard)/page.tsx`

### Control plane

- [Client API](https://github.com/ratons127/wp-saas-plattfrom-my/blob/main/services/core-api/src/accounts/accounts.controller.ts): `services/core-api/src/accounts/accounts.controller.ts`
- [Admin API](https://github.com/ratons127/wp-saas-plattfrom-my/blob/main/services/core-api/src/admin-accounts/admin-accounts.controller.ts): `services/core-api/src/admin-accounts/admin-accounts.controller.ts`
- [Authentication](https://github.com/ratons127/wp-saas-plattfrom-my/blob/main/services/core-api/src/auth/auth.service.ts): `services/core-api/src/auth/auth.service.ts`
- [Account provisioning](https://github.com/ratons127/wp-saas-plattfrom-my/blob/main/services/core-api/src/provisioning/provisioning.service.ts): `services/core-api/src/provisioning/provisioning.service.ts`
- [Domains and DNS](https://github.com/ratons127/wp-saas-plattfrom-my/blob/main/services/core-api/src/domains/domains.service.ts): `services/core-api/src/domains/domains.service.ts`
- [Site operations](https://github.com/ratons127/wp-saas-plattfrom-my/blob/main/services/core-api/src/agent/agent.service.ts): `services/core-api/src/agent/agent.service.ts`
- [Backups and restore](https://github.com/ratons127/wp-saas-plattfrom-my/blob/main/services/core-api/src/backups/backups.service.ts): `services/core-api/src/backups/backups.service.ts`
- [Job queue](https://github.com/ratons127/wp-saas-plattfrom-my/blob/main/services/core-api/src/queue/queue.service.ts): `services/core-api/src/queue/queue.service.ts`

### Hosting runtime

- [Per-VM agent](https://github.com/ratons127/wp-saas-plattfrom-my/blob/main/agent/main.go): `agent/main.go`
- [WordPress VM](https://github.com/ratons127/wp-saas-plattfrom-my/blob/main/agent/main.go): `agent/main.go`

### External services

- [Vultr infrastructure](https://github.com/ratons127/wp-saas-plattfrom-my/blob/main/services/core-api/src/integrations/vultr/vultr.service.ts): `services/core-api/src/integrations/vultr/vultr.service.ts`
- [Cloudflare DNS](https://github.com/ratons127/wp-saas-plattfrom-my/blob/main/services/core-api/src/integrations/cloudflare/cloudflare.service.ts): `services/core-api/src/integrations/cloudflare/cloudflare.service.ts`
- [S3-compatible storage](https://github.com/ratons127/wp-saas-plattfrom-my/blob/main/services/core-api/src/integrations/object-storage/object-storage.service.ts): `services/core-api/src/integrations/object-storage/object-storage.service.ts`
- [Email delivery](https://github.com/ratons127/wp-saas-plattfrom-my/blob/main/services/core-api/src/mailer/mailer.service.ts): `services/core-api/src/mailer/mailer.service.ts`

### Platform state

- [Platform database](https://github.com/ratons127/wp-saas-plattfrom-my/blob/main/services/core-api/src/database/database.module.ts): `services/core-api/src/database/database.module.ts`
- [Audit logging](https://github.com/ratons127/wp-saas-plattfrom-my/blob/main/services/core-api/src/audit/audit-log.service.ts): `services/core-api/src/audit/audit-log.service.ts`

### Other components

- **Hosting client**
- **Platform operator**
- [WHMCS billing](https://github.com/ratons127/wp-saas-plattfrom-my/blob/main/whmcs-module/wpsaas/wpsaas.php): `whmcs-module/wpsaas/wpsaas.php`

## Connections

- Hosting client → Client Portal: manages sites
- Platform operator → Admin Portal: operates platform
- Client Portal → Authentication: authenticates
- Admin Portal → Authentication: authenticates
- Client Portal → Client API: requests site actions
- Admin Portal → Admin API: requests operations
- WHMCS billing → Client API: provisions accounts
- Client API → Platform database: reads and writes
- Admin API → Platform database: reads and writes
- Account provisioning → Vultr infrastructure: creates instances
- Account provisioning → Cloudflare DNS: configures DNS
- Account provisioning → Platform database: records accounts
- Domains and DNS → Cloudflare DNS: manages DNS
- Site operations → Job queue: enqueues jobs
- Job queue → Platform database: persists jobs
- Per-VM agent → Job queue: polls and reports
- Per-VM agent → WordPress VM: executes site work
- Backups and restore → S3-compatible storage: stores backups
- Backups and restore → Per-VM agent: requests backup work
- Admin API → S3-compatible storage: browses backup objects
- Admin API → Audit logging: records actions
- Client API → Audit logging: records actions
- Platform database → Authentication: stores user records
