E-commerce per L863
Shop online scritto da zero, frontend, backoffice e pagamenti, per uno spazio di Roma dedicato a dischi, editoria e abbigliamento.
Contesto
L863 è uno spazio a Roma, in Garbatella, dedicato a dischi, editoria e abbigliamento selezionato. Lo shop online doveva avere la stessa cura del posto fisico, con un design molto personalizzato firmato da un designer che non voleva vederlo piegato a un tema pronto. Frontend, backoffice e backend scritti da zero, pagamenti con Stripe, PayPal e contrassegno.
Il mio ruolo
Tutto lo sviluppo, dal template al go-live, coordinandomi con il designer e con il cliente.
Le decisioni
- Il pagamento come unica fonte di verità. L'importo si verifica lato server alla cattura, e il passaggio dell'ordine a pagato è un aggiornamento atomico che vale solo se l'ordine è ancora in attesa: due notifiche contemporanee non possono chiudere lo stesso ordine due volte.
- Lo stock si impegna quando i soldi ci sono, alla cattura confermata e non alla creazione dell'ordine. Altrimenti un carrello abbandonato blocca un disco che magari è l'ultimo.
- Nessun ordine resta a metà. Se il webhook di Stripe fallisce in modo inatteso parte il rimborso automatico; i contrassegni non confermati scadono dopo 48 ore.
- Gli ordini sopravvivono ai clienti. Quando un cliente si cancella, il suo riferimento negli ordini diventa vuoto invece di cancellarli a cascata: quei documenti servono alla contabilità.
- Niente consenso per funzioni che non esistono. La newsletter non era prevista, quindi l'ho tolta da sito, backend, email, privacy e database invece di lasciare una casella GDPR senza scopo.
Il test più delicato
Le chiavi Stripe e PayPal erano già live e gli account erano del cliente: ogni prova era un acquisto vero. Le ho coordinate con un documento condiviso con il cliente, una prova alla volta.
L'errore che mi ha cambiato il metodo
Un deploy con sincronizzazione senza l'esclusione della cartella delle immagini ha cancellato le foto dei prodotti dal server. Le ho recuperate dal backup notturno, che avevo già verificato con un ripristino reale e non solo controllando che il file esistesse. Da allora il server riceve solo i deploy della pipeline: niente build o comandi manuali in produzione.
Cosa farei diversamente
Scrivere da zero carrello, pagamenti e ordini mi ha insegnato dove si rompe un e-commerce. Proprio per questo, su un progetto più strutturato oggi sceglierei un'architettura headless: frontend su misura in Nuxt, e Shopify dietro a gestire catalogo, pagamenti e ordini. Il design resta libero, la parte che deve essere a prova di errore la fa chi la fa da anni.