← Terug naar de homepage

Technische werking

Hoe de offline app, de CRM-API en de lead-capture samenwerken — plus wat er al in de app zit.

1. Lead capture form Klaar

Het aanvraagformulier post direct naar de CRM LeadIntake API — zonder tussenliggende server.

Formulier (testwebsite/index.html)

<!-- POST via fetch → https://launcherp.be/api/v1/leads -->
{
  "name":      "...",        // naam
  "email":     "...",        // e-mail (verplicht)
  "company":   "...",        // bedrijf
  "plan":      "hidden",     // gekozen plan (uit prijzen.html)
  "source":    "salesonipad" // bron → lead wordt getagd in CRM
}

✓ Honeypot-veld website filtert bots. ✓ Netwerkfout → nette melding, geen verloren lead.

CRM-kant (Laravel)

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

// bootstrap/app.php — uitzondering CSRF voor het lead-endpoint
->withMiddleware(function (Middleware $middleware) {
    $middleware->validateCsrfTokens(except: ['api/v1/leads']);
})

✓ Bestaande LeadIntakeController verwerkt de data; geen nieuwe backend nodig.

2. Dataflow & sync Bestaand

De app synchroniseert al met de CRM-API via dezelfde patronen als orders. Deze modules draaien en hoeven enkel te worden gekoppeld.

2-way lead sync — scripts/leads.js

2-way opportunity sync — scripts/opportunities.js

Creditnota's — pdf.js: creditNotaFromFactuur

Delta-sync — scripts/novasync.js

3. Beveiliging & data

Wat er op de iPad en in het CRM gebeurt.

OnderdeelWerking
PIN-beveiligingApp afsluiten tegen ongeautoriseerd gebruik
Dropbox backupOAuth 2.0 PKCE — één tik backup, later terugzetten op zelfde/nieuwe iPad
Offline-wachtrijOpenstaande orders overleven een herstart; aparte backup-wachtrij
Peppol-readyVelden voor e-facturatie aanwezig; de CRM-module genereert de UBL e-factuur als download. Verzending via een Peppol Access Point is nog niet operationeel.
PWA / offlineService worker cached de volledige app — werkt zonder netwerk
🌐 PWA-installatie

De app is een Progressive Web App: vertegenwoordigers installeren hem op hun iPad zonder App Store en hij werkt volledig offline.

4. Bundel-architectuur Design

De combinatie gebruikt de bestaande sync — geen nieuwe infrastructuur.

Flow

1. CRM-account aangemaakt (Stripe checkout)
2. SalesOnIPad-licentie gekoppeld aan het CRM-bedrijf
3. App weet via config welk sync-endpoint te gebruiken
4. Sync loopt automatisch — gebruikers zien "gesynchroniseerd" in de app
5. CRM opzeggen = sync stopt; de app blijft lokaal werken
🔌 Geen nieuwe code nodig

De orders, leads, opportunities en creditnota's gebruiken al hetzelfde sync-patroon. De veldverkoop-module sluit deze aan op het CRM-dashboard.

5. Roadmap

Wat er nog moet gebeuren om de koppeling live te zetten.

StapWerkStatus
1. Lead-capture onlineFormulier posten naar API + CORSKlaar (testwebsite)
2. Veldverkoop-moduleCRMModules activeren + prijzenVolgende stap
3. Sync verbindenEndpoints koppelen per klantPilot
4. Upsell in checkoutStripe + welkomstpaginaUitbreiding

Nieuwsgierig hoe het eruitziet op de iPad?

Bekijk de datastroom Vraag een demo aan