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
This commit is contained in:
103
docs/ARCHITECTURE.md
Normal file
103
docs/ARCHITECTURE.md
Normal file
@@ -0,0 +1,103 @@
|
||||
# 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)
|
||||
Reference in New Issue
Block a user