📐 Architektur: - Cloud-basiert (SaaS) Entscheidung - Multi-Tenancy Konzept - Architektur-Diagramm 🛠️ Tech-Stack: - Deno + Oak Backend - PostgreSQL Datenbank - Vue 3 + PrimeVue Frontend - Hetzner Hosting (DSGVO) 📁 Projektstruktur: - src/ mit routes, middleware, services - docs/ mit Architektur-Doku - Basis main.ts mit Health Check
104 lines
8.7 KiB
Markdown
104 lines
8.7 KiB
Markdown
# Pulse CRM - Architektur
|
|
|
|
## Übersicht
|
|
|
|
Pulse CRM ist eine cloud-basierte (SaaS) Customer Relationship Management Lösung, entwickelt für den deutschen Markt mit voller DSGVO-Konformität.
|
|
|
|
## Architektur-Diagramm
|
|
|
|
```
|
|
┌─────────────────────────────────────────────────────────────────┐
|
|
│ CLIENTS │
|
|
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
|
|
│ │ Web App │ │ Mobile │ │ API │ │ Webhooks │ │
|
|
│ │ (Vue 3) │ │ PWA │ │ Client │ │ │ │
|
|
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘ │
|
|
└───────┼─────────────┼─────────────┼─────────────┼───────────────┘
|
|
│ │ │ │
|
|
└─────────────┴──────┬──────┴─────────────┘
|
|
│ HTTPS
|
|
▼
|
|
┌─────────────────────────────────────────────────────────────────┐
|
|
│ LOAD BALANCER │
|
|
│ (nginx / Traefik) │
|
|
└────────────────────────────┬────────────────────────────────────┘
|
|
│
|
|
▼
|
|
┌─────────────────────────────────────────────────────────────────┐
|
|
│ API GATEWAY │
|
|
│ ┌──────────────────────────────────────────────────────────┐ │
|
|
│ │ Deno + Oak │ │
|
|
│ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │
|
|
│ │ │ Auth │ │ CORS │ │ Rate │ │ Logging │ │ │
|
|
│ │ │Middleware│ │Middleware│ │ Limiter │ │ │ │ │
|
|
│ │ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │ │
|
|
│ └──────────────────────────────────────────────────────────┘ │
|
|
└────────────────────────────┬────────────────────────────────────┘
|
|
│
|
|
▼
|
|
┌─────────────────────────────────────────────────────────────────┐
|
|
│ API ROUTES │
|
|
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
|
|
│ │ /auth │ │/contacts│ │ /deals │ │/pipeline│ │
|
|
│ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │
|
|
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
|
|
│ │/company │ │/activity│ │ /users │ │/settings│ │
|
|
│ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │
|
|
└────────────────────────────┬────────────────────────────────────┘
|
|
│
|
|
▼
|
|
┌─────────────────────────────────────────────────────────────────┐
|
|
│ SERVICE LAYER │
|
|
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
|
|
│ │ContactService│ │ DealService │ │ UserService │ │
|
|
│ └──────────────┘ └──────────────┘ └──────────────┘ │
|
|
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
|
|
│ │ AuthService │ │ EmailService │ │ AuditService │ │
|
|
│ └──────────────┘ └──────────────┘ └──────────────┘ │
|
|
└────────────────────────────┬────────────────────────────────────┘
|
|
│
|
|
▼
|
|
┌─────────────────────────────────────────────────────────────────┐
|
|
│ DATA LAYER │
|
|
│ ┌─────────────────────────────────────────────────────────┐ │
|
|
│ │ PostgreSQL │ │
|
|
│ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │
|
|
│ │ │ users │ │contacts │ │ deals │ │activities│ │ │
|
|
│ │ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │ │
|
|
│ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │
|
|
│ │ │companies│ │pipelines│ │ orgs │ │audit_log│ │ │
|
|
│ │ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │ │
|
|
│ └─────────────────────────────────────────────────────────┘ │
|
|
└─────────────────────────────────────────────────────────────────┘
|
|
```
|
|
|
|
## Entscheidungen
|
|
|
|
### Cloud vs. Client
|
|
|
|
**Entscheidung: Cloud-basiert (SaaS)**
|
|
|
|
| Kriterium | Cloud | Client |
|
|
|-----------|-------|--------|
|
|
| Installation | Keine | Erforderlich |
|
|
| Updates | Automatisch | Manuell |
|
|
| Wartung | Zentral | Pro Installation |
|
|
| Zugriff | Überall | Nur lokal |
|
|
| DSGVO | EU-Hosting | Kunde verantwortlich |
|
|
| Skalierung | Einfach | Komplex |
|
|
| Time-to-Market | Schnell | Langsam |
|
|
|
|
### Multi-Tenancy
|
|
|
|
**Shared Database, Separate Schemas** - Jeder Kunde (Organization) hat:
|
|
- Eigene `org_id` in allen Tabellen
|
|
- Row-Level Security in PostgreSQL
|
|
- Isolierte Daten, geteilte Infrastruktur
|
|
|
|
## Hosting (DSGVO-konform)
|
|
|
|
- **Provider:** Hetzner Cloud
|
|
- **Standort:** Falkenstein/Nürnberg, Deutschland 🇩🇪
|
|
- **Backup:** Täglich, 30 Tage Retention
|
|
- **Verschlüsselung:** TLS 1.3 (Transit), AES-256 (Rest)
|