← Volver a la página de inicio

Funcionamiento técnico

Cómo colaboran la app sin conexión, la API del CRM y la captación de leads, además de lo que ya incluye la app.

1. Formulario de captación de leads Listo

El formulario de solicitud envía directamente a la API LeadIntake del CRM, sin servidor intermedio.

Formulario (testwebsite/index.html)

<!-- POST mediante fetch → https://launcherp.be/api/v1/leads -->
{
  "name":      "...",        // nombre
  "email":     "...",        // correo electrónico (obligatorio)
  "company":   "...",        // empresa
  "plan":      "hidden",     // plan elegido (desde prijzen.html)
  "source":    "salesonipad" // fuente → el lead se etiqueta en el CRM
}

✓ El campo honeypot website filtra bots. ✓ Error de red → aviso claro, sin leads perdidos.

Lado del CRM (Laravel)

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

// bootstrap/app.php — excepción CSRF para el endpoint de leads
->withMiddleware(function (Middleware $middleware) {
    $middleware->validateCsrfTokens(except: ['api/v1/leads']);
})

✓ El LeadIntakeController existente procesa los datos; no se necesita backend nuevo.

2. Flujo de datos y sincronización Existente

La app ya se sincroniza con la API del CRM mediante los mismos patrones que los pedidos. Estos módulos ya funcionan y solo hay que conectarlos.

Sincronización bidireccional de leads — scripts/leads.js

Sincronización bidireccional de oportunidades — scripts/opportunities.js

Notas de crédito — pdf.js: creditNotaFromFactuur

Sincronización delta — scripts/novasync.js

3. Seguridad y datos

Qué ocurre en el iPad y en el CRM.

ComponenteFuncionamiento
Protección con PINCierra la app frente al uso no autorizado
Copia de seguridad en DropboxOAuth 2.0 PKCE — copia de seguridad con un solo toque, restauración posterior en el mismo iPad o en uno nuevo
Cola sin conexiónLos pedidos pendientes sobreviven a un reinicio; cola de copia de seguridad separada
Preparado para PeppolCampos para la facturación electrónica presentes; el módulo del CRM genera la factura electrónica UBL como descarga. El envío a través de un Peppol Access Point todavía no está operativo.
PWA / sin conexiónEl service worker guarda en caché la app completa — funciona sin red
🌐 Instalación de la PWA

La app es una Progressive Web App: los representantes la instalan en su iPad sin App Store y funciona completamente sin conexión.

4. Arquitectura del bundle Diseño

La combinación utiliza la sincronización existente — sin infraestructura nueva.

Flujo

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
🔌 No se necesita código nuevo

Los pedidos, leads, oportunidades y notas de crédito ya usan el mismo patrón de sincronización. El módulo de venta de campo los conecta al panel del CRM.

5. Roadmap

Lo que queda por hacer para poner en marcha la conexión.

PasoTrabajoEstado
1. Captación de leads en líneaEnviar el formulario a la API + CORSListo (testwebsite)
2. Módulo de venta de campoActivar CRMModules + preciosSiguiente paso
3. Conectar la sincronizaciónConectar endpoints por clientePiloto
4. Upsell en el checkoutStripe + página de bienvenidaAmpliación

¿Curioso por ver cómo se ve en el iPad?

Ver el flujo de datos Solicitar una demo