Lovable.dev — E-commerce con AI

Guida 2026 · React + Supabase · Stripe + PayPal · Prompt Engineering · Marco Consiglio
Volta Institute · Napoli
A.A. 2026
🤖 Cos'è Lovable.dev — il "full-stack AI developer"
Lovable.dev (fondato nel 2023, ex GPT Engineer) è una piattaforma che usa l'AI per generare applicazioni web full-stack complete partendo da descrizioni in linguaggio naturale. Non è un builder drag-and-drop come Wix: genera codice React/TypeScript reale, integra Supabase come backend (database + autenticazione + storage) e permette di deployare con un click. Il codice è esportabile su GitHub.
▶ Frontend: React 18 + TypeScript + Tailwind CSS + Shadcn/UI
▶ Backend: Supabase (PostgreSQL + Auth + Storage + Edge Functions)
▶ Pagamenti: Stripe (via Supabase Edge Functions) / PayPal
▶ Hosting: Lovable Cloud (incluso) oppure export su Vercel/Netlify
▶ Versioning: GitHub sync automatico
✅ Scegli Lovable se: vuoi un MVP e-commerce funzionante in ore anziché settimane, hai bisogno di personalizzazione completa (è codice reale), vuoi integrazioni custom non disponibili su Shopify/Wix, o stai prototipando rapidamente per validare un'idea di business.
⚠️ Non scegliere Lovable se: non hai nessuna familiarità con i concetti di sviluppo web (l'AI aiuta ma devi capire cosa genera), hai bisogno di un ecosistema di plugin pronto come Shopify, o il tuo e-commerce è semplice e non richiede personalizzazione (Shopify/Wix sono più veloci).
💰 Piani Lovable.dev 2026
PianoPrezzoCrediti/meseNote
Free€ 05 messaggi/giornoProgetti pubblici, hosting Lovable
Starter~€ 20/mese100 creditiProgetti privati, custom domain
Pro~€ 50/mese500 creditiPriorità AI, collaboratori
Teams~€ 40/utenteIllimitatiTeam collaboration, white label
💡 Costi Supabase separati: Lovable usa Supabase come backend — il piano Free di Supabase (500MB DB, 50.000 auth users, 2GB storage) è sufficiente per iniziare. Per produzione con volumi reali considera il piano Pro Supabase ($25/mese).
✍️ Come scrivere prompt efficaci — principi chiave
La qualità del prompt determina la qualità del codice generato. Un buon prompt per Lovable è specifico, strutturato e progressivo: non chiedere tutto in una volta, costruisci per iterazioni.
PrincipioEsempio SBAGLIATOEsempio CORRETTO
Specificità"Crea un negozio online""Crea un negozio React con catalogo prodotti, carrello e checkout Stripe — prodotti salvati in Supabase"
Stack esplicito"Aggiungi pagamenti""Integra Stripe Checkout con Supabase Edge Functions — usa stripe-js sul frontend e stripe-node nel backend"
ProgressivitàPrompt da 500 parole tutto insiemeStep 1: struttura → Step 2: database → Step 3: UI → Step 4: pagamenti
Contesto tecnico"Aggiungi un database""Crea tabelle Supabase: products (id, name, price, stock, image_url), orders (id, user_id, total, status)"
Norma IT esplicita"Aggiungi i cookie""Aggiungi un cookie banner conforme al Garante Privacy italiano con consenso granulare per analytics/marketing"
📋 Prompt 1 — Struttura iniziale e-commerce
Primo prompt da usare per creare la struttura base del progetto:
PROMPT FONDATIVO — usa questo come primo messaggio: Crea un'applicazione e-commerce React con TypeScript e Tailwind CSS. Stack: React 18, Supabase, Shadcn/UI. Struttura pagine: - / → Homepage con hero section e prodotti in evidenza - /products → Catalogo prodotti con filtri categoria e ricerca - /products/:id → Scheda prodotto con galleria immagini, varianti, aggiungi al carrello - /cart → Carrello con modifica quantità e riepilogo - /checkout → Form checkout + integrazione Stripe - /orders → Storico ordini utente (solo loggati) - /admin → Dashboard admin: gestione prodotti e ordini Funzionalità richieste: - Autenticazione Supabase (email + password + Google OAuth) - Carrello persistente su Supabase per utenti loggati, localStorage per anonimi - Wishlist prodotti - Design: palette neutro con accent viola, mobile-first, responsive // Non aggiungere ancora i pagamenti — gestiremo Stripe in un secondo step
📋 Prompt 2 — Schema database Supabase
PROMPT DATABASE — da inviare dopo la struttura base: Crea lo schema SQL Supabase per il negozio. Esegui questo SQL nell'editor Supabase: Tabelle richieste: CREATE TABLE products ( id UUID DEFAULT gen_random_uuid() PRIMARY KEY, name TEXT NOT NULL, description TEXT, price DECIMAL(10,2) NOT NULL, stock INTEGER DEFAULT 0, category TEXT, image_url TEXT, images TEXT[], -- array URL immagini active BOOLEAN DEFAULT true, created_at TIMESTAMPTZ DEFAULT NOW() ); CREATE TABLE orders ( id UUID DEFAULT gen_random_uuid() PRIMARY KEY, user_id UUID REFERENCES auth.users(id), status TEXT DEFAULT 'pending', -- pending|paid|shipped|delivered|cancelled total DECIMAL(10,2) NOT NULL, stripe_payment_id TEXT, shipping_address JSONB, created_at TIMESTAMPTZ DEFAULT NOW() ); CREATE TABLE order_items ( id UUID DEFAULT gen_random_uuid() PRIMARY KEY, order_id UUID REFERENCES orders(id), product_id UUID REFERENCES products(id), quantity INTEGER NOT NULL, price_at_purchase DECIMAL(10,2) NOT NULL ); -- Abilita Row Level Security per sicurezza ALTER TABLE orders ENABLE ROW LEVEL SECURITY; -- Policy: utenti vedono solo i propri ordini CREATE POLICY "Users see own orders" ON orders FOR SELECT USING (auth.uid() = user_id);
📋 Prompt 3 — UI catalogo prodotti
PROMPT UI PRODOTTI: Nella pagina /products implementa: 1. Griglia prodotti con card responsive (4 col desktop, 2 tablet, 1 mobile) - Immagine prodotto con lazy loading - Badge "Esaurito" se stock = 0 - Prezzo formattato in EUR con Intl.NumberFormat - Pulsante "Aggiungi al carrello" disabilitato se esaurito 2. Filtri sidebar: - Selezione categoria (dropdown o chip) - Range prezzo (slider min/max) - Solo disponibili (checkbox) - Ordinamento: prezzo asc/desc, novità 3. Ricerca full-text in tempo reale con debounce 300ms 4. Paginazione con 12 prodotti per pagina Query Supabase di riferimento: supabase.from('products') .select('*') .eq('active', true) .ilike('name', '%' + searchTerm + '%') .gte('price', minPrice) .lte('price', maxPrice) .order('created_at', { ascending: false }) .range(from, to)
🗄️ Supabase — il backend di Lovable
Supabase è il backend open source usato da Lovable. Fornisce PostgreSQL, autenticazione, storage file e Edge Functions (serverless) — tutto ciò che serve per un e-commerce completo.
Servizio SupabaseUso in e-commercePiano richiesto
PostgreSQL DatabaseProdotti, ordini, utenti, carrelloFree fino a 500MB
AuthenticationLogin, registrazione, OAuth (Google, Apple)Free fino a 50.000 utenti
StorageImmagini prodotti, file digitaliFree fino a 1GB
Edge FunctionsStripe webhook, logica pagamento, emailFree 500.000 invocazioni/mese
RealtimeAggiornamento stock in tempo realeFree 2M messaggi/mese
Row Level SecuritySicurezza: ogni utente vede solo i propri datiFree — sempre attivo
✅ Row Level Security (RLS): è fondamentale abilitarla su tutte le tabelle sensibili. Impedisce che un utente malintenzionato legga ordini o dati di altri utenti tramite query dirette all'API Supabase.
📋 Prompt 4 — Admin dashboard prodotti
PROMPT ADMIN PANEL: Nella pagina /admin (accessibile solo agli utenti con ruolo 'admin') crea: 1. Lista prodotti con tabella: nome, prezzo, stock, categoria, attivo/disattivo - Toggle attivo/disattivo inline - Bottone modifica e cancella per ogni riga 2. Form aggiungi/modifica prodotto: - Input: nome, descrizione (richtext), prezzo, stock, categoria - Upload immagine principale → carica su Supabase Storage - Upload immagini aggiuntive (max 5) - Preview immagini prima del salvataggio 3. Dashboard ordini: - Tabella ordini con stato, totale, data, cliente - Filtro per stato (pending/paid/shipped/delivered) - Bottone modifica stato ordine Per il controllo ruolo admin, aggiungi a Supabase: -- In auth.users metadata o tabella profiles separata CREATE TABLE profiles ( id UUID REFERENCES auth.users PRIMARY KEY, role TEXT DEFAULT 'customer' ); -- Policy admin: solo ruolo 'admin' vede tutti gli ordini CREATE POLICY "Admin sees all orders" ON orders FOR ALL USING ( EXISTS (SELECT 1 FROM profiles WHERE id = auth.uid() AND role = 'admin') );
💳 Integrazione Stripe — architettura corretta
In Lovable/Supabase, Stripe si integra tramite Supabase Edge Functions (serverless) — la chiave segreta Stripe non va mai esposta nel frontend React. Il flusso corretto è: Frontend → Edge Function (verifica + crea sessione) → Stripe → Webhook → Database.
1️⃣ Utente clicca "Paga" nel frontend React
2️⃣ Frontend chiama Supabase Edge Function /create-checkout
3️⃣ Edge Function crea Stripe Checkout Session (chiave segreta sicura)
4️⃣ Frontend riceve URL Stripe → redirect su pagina Stripe
5️⃣ Cliente paga su Stripe (PCI compliant)
6️⃣ Stripe chiama Webhook → Edge Function /stripe-webhook
7️⃣ Webhook aggiorna ordine su Supabase: status → 'paid'
8️⃣ Redirect su /order-success?session_id=...
📋 Prompt 5 — Integrazione Stripe Checkout
PROMPT STRIPE — integrazione pagamenti: Integra Stripe Checkout nel negozio. Usa Supabase Edge Functions per sicurezza. Edge Function 1: /functions/v1/create-checkout - Riceve: { items: [{product_id, quantity}], user_id, success_url, cancel_url } - Verifica stock disponibile per ogni prodotto - Calcola totale con IVA 22% (importo × 1.22) - Crea Stripe Checkout Session con: - line_items dai prodotti (nome, prezzo, quantità, immagine) - metadata: { user_id, order_items: JSON.stringify(items) } - success_url: '/order-success?session_id={CHECKOUT_SESSION_ID}' - cancel_url: '/cart' - payment_method_types: ['card'] - billing_address_collection: 'required' - shipping_address_collection con allowed_countries: ['IT', 'EU'] - Crea ordine in Supabase con status 'pending' e stripe_session_id - Ritorna: { url: checkoutUrl } Edge Function 2: /functions/v1/stripe-webhook - Verifica firma webhook con STRIPE_WEBHOOK_SECRET - Gestisce evento checkout.session.completed: - Recupera session.metadata.user_id e order_items - Aggiorna ordine su Supabase: status → 'paid' - Scala lo stock di ogni prodotto - (Opzionale) Invia email conferma tramite Resend/SendGrid Nel frontend React, in /checkout: const handlePayment = async () => { const { data } = await supabase.functions.invoke('create-checkout', { body: { items: cartItems, user_id: user.id, success_url: window.location.origin + '/order-success', cancel_url: window.location.origin + '/cart' } }); window.location.href = data.url; // redirect a Stripe };
📋 Prompt 6 — Integrazione PayPal
PROMPT PAYPAL — alternativa a Stripe: Aggiungi PayPal come secondo metodo di pagamento nel checkout. Usa @paypal/react-paypal-js per il frontend. Setup nel componente Checkout: import { PayPalScriptProvider, PayPalButtons } from '@paypal/react-paypal-js'; Flusso PayPal Orders API v2: 1. Al click PayPal → Edge Function /create-paypal-order - Crea ordine PayPal con amount.value = totale_con_iva - currency_code: 'EUR' - Ritorna: orderId 2. PayPal gestisce il pagamento lato suo 3. onApprove callback → Edge Function /capture-paypal-order - Cattura il pagamento con orderId - Verifica capture.status === 'COMPLETED' - Aggiorna ordine Supabase: status → 'paid', paypal_order_id Nel component: <PayPalScriptProvider options={{ 'client-id': import.meta.env.VITE_PAYPAL_CLIENT_ID, currency: 'EUR' }}> <PayPalButtons createOrder={async () => (await supabase.functions.invoke('create-paypal-order', { body: { amount: total } })).data.orderId} onApprove={async (data) => await supabase.functions.invoke('capture-paypal-order', { body: { orderId: data.orderID } })} /> </PayPalScriptProvider> // IMPORTANTE: PayPal client-id va in .env.local come VITE_PAYPAL_CLIENT_ID // PayPal secret va solo nelle Edge Functions (variabile ambiente Supabase)
⚖️ Normativa IT — prompt per conformità legale
Un e-commerce Lovable deve rispettare la normativa italiana ed europea come qualsiasi altro negozio online. Ecco i prompt specifici per ogni adempimento.
ObbligoNormativaPrompt da usare
Cookie Banner conforme ITGarante 2021Prompt 7 — vedi sotto
Privacy Policy + T&CGDPR 679/2016"Crea pagine /privacy e /terms con testo placeholder conforme GDPR. Aggiungi link nel footer."
IVA 22% in checkoutDPR 633/72"Nel riepilogo ordine mostra: subtotale (imponibile), IVA 22% e totale separati"
Recesso 14 giorniD.Lgs. 21/2014"In /orders aggiungi pulsante 'Richiedi recesso' disponibile entro 14gg dall'acquisto"
Info venditore obbligatorieCodice Consumo"Nel footer mostra: P.IVA, ragione sociale, sede legale, email PEC, REA"
Consenso esplicito T&CCodice Consumo"Nel checkout aggiungi checkbox obbligatoria: 'Accetto i T&C e la Privacy Policy' prima del pulsante Paga"
Email conferma ordineDir. 2011/83/UE"Nel webhook Stripe invia email conferma con riepilogo ordine usando Resend API"
📋 Prompt 7 — Cookie Banner conforme Garante IT
PROMPT COOKIE BANNER GDPR/GARANTE IT: Aggiungi un cookie banner conforme al Garante Privacy italiano (provvedimento 2021). Requisiti obbligatori: - Appare al primo accesso in basso (posizione sticky) - NON pre-selezionare i cookie non essenziali (violazione GDPR) - 3 categorie distinte con toggle on/off: 1. Tecnici/necessari → sempre attivi, non modificabili (toggle disabilitato) 2. Analytics (es. Google Analytics) → disattivati di default 3. Marketing → disattivati di default - Pulsante "Accetta tutti" e "Personalizza" e "Rifiuta tutti" - Link a Privacy Policy e Cookie Policy - Scelta salvata in localStorage ('cookie_consent') - Se l'utente rifiuta: non caricare GA né script marketing Implementazione React: - Componente CookieBanner globale in App.tsx - Hook useCookieConsent() che legge localStorage - Carica Google Analytics solo se consent.analytics === true - Rende disponibile bottone "Gestisci preferenze cookie" nel footer
📋 Prompt 8 — IVA italiana nel checkout
PROMPT IVA 22%: Nel riepilogo carrello e checkout, mostra la scomposizione IVA italiana: Calcolo corretto per prezzi IVA-inclusi (consumer italiano): const ivaRate = 0.22; const totalConIva = cartTotal; // prezzo finale const imponibile = totalConIva / (1 + ivaRate); // base imponibile const ivaAmount = totalConIva - imponibile; // IVA Nel riepilogo ordine mostra: - Subtotale (imponibile): €XX,XX - IVA 22%: €XX,XX - Spedizione: €X,XX (o GRATIS sopra soglia) - Totale: €XX,XX A Stripe passa sempre l'importo in centesimi con IVA inclusa: const amountInCents = Math.round(totalConIva * 100); // Stripe gestisce automaticamente la valuta EUR Nel Stripe Dashboard IT: // Imposta Tax Rates in Stripe per applicare IVA automatica // oppure gestisci tu la scomposizione come sopra
🔄 Lovable vs piattaforme tradizionali — quando ha senso
CriterioLovable.devShopifyPrestaShop
Tempo al primo deployOre (con AI)GiorniSettimane
Personalizzazione UI⭐⭐⭐⭐⭐ Totale⭐⭐⭐ Limitata⭐⭐⭐⭐ Alta
Commissioni piattaforma0%0-2%0%
Ecosistema plugin pronto❌ No⭐⭐⭐⭐⭐⭐⭐⭐⭐
Competenze richiesteBase coding/AIZeroIntermediate
Costo mensile (base)€20 + €0 Supabase€29€20-50 hosting
Export codice✅ GitHub❌ No✅ Sì
Funzioni custom✅ Illimitate⚠️ Solo via app⚠️ Via moduli
Logica business custom✅ Edge Functions⚠️ Limitata⚠️ PHP custom
💡 Lovable è ideale per: startup che vogliono un MVP unico e personalizzato, marketplace o logiche di business non standard, negozi con funzionalità custom (preventivi, configuratori prodotto, abbonamenti complessi) o developer che vogliono accelerare il lavoro senza scrivere tutto da zero.
⚠️ Lovable NON sostituisce Shopify per: negozi con catalogo ampio che necessitano di migliaia di integrazioni pronte (ERP, marketplace, logistica), team non tecnici che devono gestire il negozio autonomamente, o chi ha bisogno di supporto 24/7 certificato.