Client-Onboarding¶
Diese Seite beschreibt den vollständigen Prozess zum Anlegen eines neuen easySale-Kunden.
Das Onboarding ist vollständig automatisiert über Bash-Skripte im onboarding/-Verzeichnis.
Voraussetzungen¶
Folgende Tools müssen lokal installiert und konfiguriert sein:
| Tool | Verwendung |
|---|---|
| Firebase CLI | Firebase-Projekt erstellen, Rules/Functions deployen |
GitHub CLI (gh) |
Repo erstellen, Secrets setzen, Workflows installieren |
| Flutter SDK | App-Konfiguration validieren |
| Node.js / npm | Cloud Functions deployen |
gsutil / gcloud |
CORS auf Firebase Storage setzen |
Außerdem benötigt:
- Zugang zur GitHub Organisation Tech-Schuppen (Owner)
- Firebase Billing-Account (für Cloud Functions)
- Apple Developer Account (für iOS)
- Google Play Console Zugang (für Android)
Onboarding starten¶
cd /path/to/easySale
chmod +x onboarding/client_onboarding/create_client.sh
./onboarding/client_onboarding/create_client.sh
Das Skript ist interaktiv und fragt alle notwendigen Eingaben ab.
Einzelne Schritte können mit --step <name> ausgeführt werden:
./onboarding/client_onboarding/create_client.sh --step icons
./onboarding/client_onboarding/create_client.sh --step seed
Schritte im Detail¶
Das Onboarding durchläuft 21 automatisierte Schritte in zwei Phasen:
Phase 1: Infrastruktur erstellen¶
| Schritt | Name | Beschreibung |
|---|---|---|
| 01 | Prerequisites | Prüft alle Voraussetzungen (Tools, Zugänge) |
| 02 | Collect Inputs | Fragt: Kundenname, Slug, Apps (ERP/Shop/beide), Environments |
| 03 | Client Structure | Erstellt Verzeichnisstruktur im Client-Repo |
| 04 | Flutter ERP | Richtet ERP Flutter-App ein (pubspec, firebase config) |
| 05 | Flutter Shop | Richtet Shop Flutter-App ein (pubspec, firebase config) |
| 06 | VS Code | Erstellt Multi-Root Workspace .code-workspace und launch.json |
| 07 | GitHub Repo | Erstellt easysale-client-<slug> bei Tech-Schuppen |
| 08 | App Icons | Generiert App-Icons aus Kundenmaterial |
| 09 | Resend Email | Konfiguriert Transaktions-E-Mail via Resend API |
| 10 | Firebase Project | Erstellt Firebase-Projekt(e) (Dev + Prod) |
| 11 | Firebaserc | Erstellt .firebaserc mit Projekt-Aliases |
| 12 | Deploy Rules | Merged Core + Client Firestore/Storage Rules und deployed |
| 13 | Deploy CORS | Setzt CORS-Konfiguration auf Firebase Storage |
| 14 | Deploy Functions | Merged Core + Client Functions und deployed |
| 15 | Cloud Tasks | Richtet Cloud Tasks Queue ein |
| 16 | Deploy Hosting | Baut Web-App und deployed auf Firebase Hosting |
| 17 | Admin Users | Erstellt initiale Admin-Benutzer in Firebase Auth |
| 18 | App Store Config | Konfiguriert Android (Play Console) + iOS (App Store Connect) |
| 19 | Legal Settings | Setzt AGBs, Datenschutzerklärung, Impressum |
| 20 | Seed from Website | Importiert initiale Stammdaten (optional) |
| 21 | Finalize GitHub | Pusht alle Änderungen, erstellt initialen Release |
Phase 2: CI/CD einrichten (Setup-Schritte)¶
| Schritt | Name | Beschreibung |
|---|---|---|
| 01 | Install Workflows | Kopiert GitHub Actions Workflows aus Core-Templates |
| 02 | Pin Version | Setzt ref: im Client-Repo auf aktuellen Core-Tag |
| 03 | Register Client | Trägt Client in client-registry.json ein |
| 04 | Commit Changes | Commit + Push aller Änderungen |
Ergebnis¶
Nach dem erfolgreichen Onboarding existiert:
GitHub: Tech-Schuppen/easysale-client-<slug>
├── erp/ ← Flutter ERP (Web + Mobile)
│ ├── pubspec.yaml ← Git-Dependency auf Core-Tag
│ └── assets/firebase_config/ ← Firebase-Konfiguration
├── shop/ (optional) ← Flutter Shop App
├── firebase/ ← Optional: Client-spezifische Rules/Functions
├── .firebaserc ← Firebase-Projekt-Aliases
└── .github/
└── workflows/
├── auto-build.yml ← Automatischer Build bei Core-Update
├── promote-to-prod.yml ← Manueller Prod-Release
├── env-health-check.yml
└── sync-prod-to-dev.yml
Firebase Console:
├── <slug>-dev ← Development-Projekt
└── <slug>-prod ← Produktiv-Projekt
GitHub Actions:
└── Beim nächsten Core-Push → autom. Build + Deploy auf Dev
Nachträgliche Konfiguration¶
Service Account Berechtigungen reparieren¶
chmod +x onboarding/scripts/fix_sa_permissions.sh
./onboarding/scripts/fix_sa_permissions.sh /path/to/client-repo
CORS manuell neu setzen¶
Prod-Daten nach Dev synchronisieren¶
Konfigurierbare Client-Einstellungen¶
Folgende Aspekte können durch das Client-Repo ohne Core-Änderungen angepasst werden:
| Bereich | Mechanismus | Details |
|---|---|---|
| UI-Overrides | ClientConfig Klasse |
Farben, Texte, Feature-Flags |
| Model-Erweiterungen | CustomDataMixin |
Zusätzliche Felder |
| BLoC-Overrides | Vererbung | Eigene Business Logic |
| Firestore Rules | _extra Merge |
Zusätzliche Sicherheitsregeln |
| Cloud Functions | Merge-at-Deploy | Eigene Cloud-Jobs/Triggers |
Siehe Client Override System für Details.