Files
pulse-crm-backend/docs/ARCHITECTURE.md
Flux_bot d9e4539dd6 feat: Architektur & Tech-Stack Dokumentation
📐 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
2026-02-11 09:59:54 +00:00

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)