← Zurück zur Startseite

Technische Funktionsweise

Wie die Offline-App, die CRM-API und die Lead-Erfassung zusammenarbeiten — plus was bereits in der App steckt.

1. Lead-Erfassungsformular Fertig

Das Anfrageformular sendet direkt an die CRM-LeadIntake-API — ohne zwischengeschalteten Server.

Formular (testwebsite/index.html)

<!-- POST über fetch → https://launcherp.be/api/v1/leads -->
{
  "name":      "...",        // Name
  "email":     "...",        // E-Mail (Pflichtfeld)
  "company":   "...",        // Firma
  "plan":      "hidden",     // gewählter Plan (aus prijzen.html)
  "source":    "salesonipad" // Quelle → Lead wird im CRM getaggt
}

✓ Das Honeypot-Feld website filtert Bots. ✓ Netzwerkfehler → verständliche Meldung, kein verlorener Lead.

CRM-Seite (Laravel)

// config/cors.php
'paths' => ['api/*', 'sanctum/csrf-cookie'],
'allowed_origins' => [env('APP_URL'), 'https://salesonipad.com'],

// bootstrap/app.php — CSRF-Ausnahme für den Lead-Endpoint
->withMiddleware(function (Middleware $middleware) {
    $middleware->validateCsrfTokens(except: ['api/v1/leads']);
})

✓ Der bestehende LeadIntakeController verarbeitet die Daten; kein neues Backend nötig.

2. Datenfluss & Sync Bestehend

Die App synchronisiert bereits über dieselben Muster wie Aufträge mit der CRM-API. Diese Module laufen und müssen nur noch angebunden werden.

2-Wege-Lead-Sync — scripts/leads.js

2-Wege-Opportunity-Sync — scripts/opportunities.js

Gutschriften — pdf.js: creditNotaFromFactuur

Delta-Sync — scripts/novasync.js

3. Sicherheit & Daten

Was auf dem iPad und im CRM passiert.

BausteinFunktionsweise
PIN-SchutzApp gegen unbefugte Nutzung schützen
Dropbox-BackupOAuth 2.0 PKCE — ein Tipp Backup, später auf derselben/neuen iPad wiederherstellen
Offline-WarteschlangeOffene Aufträge überstehen einen Neustart; separate Backup-Warteschlange
Peppol-readyFelder für die E-Rechnung vorhanden; das CRM-Modul erzeugt die UBL-E-Rechnung als Download. Der Versand über einen Peppol Access Point ist noch nicht operativ.
PWA / offlineDer Service Worker cached die gesamte App — funktioniert ohne Netzwerk
🌐 PWA-Installation

Die App ist eine Progressive Web App: Außendienstmitarbeiter installieren sie ohne App Store auf ihrem iPad und sie funktioniert vollständig offline.

4. Bundle-Architektur Design

Die Kombination nutzt den bestehenden Sync — keine neue Infrastruktur.

Ablauf

1. CRM-Konto angelegt (Stripe-Checkout)
2. SalesOnIPad-Lizenz mit dem CRM-Unternehmen verknüpft
3. Die App weiß über die Konfiguration, welchen Sync-Endpoint sie verwenden muss
4. Der Sync läuft automatisch — Benutzer sehen „gesynchronisiert" in der App
5. CRM kündigen = Sync stoppt; die App funktioniert weiterhin lokal
🔌 Kein neuer Code nötig

Aufträge, Leads, Opportunities und Gutschriften nutzen bereits dasselbe Sync-Muster. Das Außendienst-Modul bindet sie an das CRM-Dashboard an.

5. Roadmap

Was noch passieren muss, um die Anbindung live zu schalten.

SchrittArbeitStatus
1. Lead-Erfassung onlineFormular an API senden + CORSFertig (testwebsite)
2. Außendienst-ModulCRMModules aktivieren + PreiseNächster Schritt
3. Sync verbindenEndpoints pro Kunde anbindenPilot
4. Upsell im CheckoutStripe + WillkommensseiteErweiterung

Neugierig, wie es auf dem iPad aussieht?

Datenfluss ansehen Demo anfordern