⚡ Lightweight QR & Fast Docs¶
Sistema QR ultra-leggero per preventivi istantanei su mobile
Architettura¶
Preventivo creato → QR generato (URL corto)
→ QR cached su disco
→ Cliente scansiona
→ Redirect 301 → Landing mobile-first
→ View tracking nel DB
→ CTA WhatsApp per conferma
Endpoint¶
| Metodo | URL | Funzione |
|---|---|---|
| GET | /q/:id |
Shortener → redirect 301 + tracking |
| GET | /preventivo/:id |
Landing page mobile-first |
| GET | /api/quotes/:id/qr |
QR Code PNG (cached) |
| GET | /api/quotes/:id/qr-data |
QR Code base64 |
| GET | /api/quotes/:id/stats |
Views + last_viewed_at |
Ottimizzazioni¶
QR Code¶
- URL corto (
/q/123) = QR piu semplice = lettura piu veloce - Error Correction Level M (15% ridondanza)
- Colori brand: dark
#0d1b2a, light#ffffff - Cache su disco: non rigenerato ad ogni richiesta
- Path:
/var/www/italiasushi/admin/public/cache/qr/
PDF Preventivo¶
- Testo vettoriale (non rasterizzato) — nitido anche con zoom
- System fonts — nessun download di font esterni
- Viewport A4 96DPI — rendering consistente
- Target < 500KB — si apre anche con poco campo
- Warning in log se > 1MB
Landing Page¶
- HTML puro — zero framework JS
- < 5KB — carica in < 1 secondo su 4G
- og:image SVG per preview WhatsApp professionale
- CTA WhatsApp: link
wa.meprecompilato - Scarica PDF: link diretto al PDF
- Cache HTTP:
max-age=300(5 minuti)
View Tracking¶
Ogni apertura di /q/:id incrementa:
- quotes.views (contatore)
- quotes.last_viewed_at (timestamp)
Utile per sapere se il cliente ha effettivamente aperto il preventivo.