Zum Inhalt

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

./onboarding/scripts/deploy_cors.sh <firebase-project-id>

Prod-Daten nach Dev synchronisieren

# Im Client-Repo:
gh workflow run sync-prod-to-dev.yml

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.