Crea con l'IA un sito interattivo per un ristorante di sushi

Crea il sito di un ristorante di sushi con un nastro trasportatore interattivo, ordini da ritirare e una dashboard di amministrazione. Vedi la demo live (si apre in una nuova scheda)

Roadmap e risorse

Requisiti

Claude Desktop

Usa Claude Code nell'app desktop per configurare e personalizzare il sito del tuo ristorante.

Scarica Claude Desktop

https://claude.ai/download

Account GitHub

Gratis. Qui c'è la tua copia di KAITEN, e Hostinger la distribuisce da qui.

Crea un account GitHub

https://github.com/signup

Node.js

Scarica la versione LTS. Claude la usa per installare e controllare il tuo negozio.

Scarica Node.js

https://nodejs.org/en/download

Account Supabase

Il piano gratuito basta. Contiene il tuo menu, le foto, gli orari di apertura, gli ordini e l'accesso all'admin.

Crea un account Supabase

https://supabase.link/r4gdwhi

Hosting Hostinger

L'hosting ti serve al Passaggio 5, quando il negozio va online.

Scegli un piano Hostinger

Usa il piano Unlimited o un piano Cloud: KAITEN viene distribuito come Node.js Web App, non come sito statico.

Ottieni il KAITEN Starter

Crea la tua copia

Apri KAITEN su GitHub

https://github.com/salhiworks/kaiten-sushi-store

Clicca su Use this template, poi su Create a new repository Dagli un nome e scegli Public o Private Clicca su Create repository e copia il suo indirizzo

Configura Supabase

Creare un progetto Supabase

Apri la dashboard di Supabase

https://supabase.com/dashboard

Clicca su New project: va bene qualsiasi regione e il piano Free Conserva la password del database in un posto sicuro: a Claude non serve mai Quando il progetto è pronto, copia il suo Project ID

Supabase Project Settings General

Il Project ID è l'unico dato del progetto che serve a Claude. Non crei nessuna tabella e non scrivi SQL: Claude configura il database nel Passo 3.

Collega il tuo negozio con Claude Desktop

Portalo su Claude Desktop

Claude Desktop Code Local

Avvia una sessione Local in una cartella come Documenti, aggiungi qui sotto l'indirizzo del tuo repository e invia:

Clona la tua copia

Scarica il tuo repository KAITEN in una nuova sottocartella e verifica che Claude possa aggiornarlo.

Clone {{REPOSITORY_URL}} into a NEW subfolder inside the folder I selected, named after the repository. Never clone directly into the selected folder and never overwrite existing files. If Git is missing, tell me exactly how to install it. Then check that you can push to this repository with git push --dry-run. If GitHub needs me to sign in, tell me exactly what to do, and never ask me to paste a password or token into the chat. When it is done, tell me which new folder to open in my next Claude Desktop Local session.

L'indirizzo del tuo repository

https://github.com/your-name/my-sushi-restaurant

Apri la tua cartella KAITEN

Avvia una nuova sessione Local Apri la cartella che Claude ha appena creato, quella che contiene README.md Se Claude Desktop lo chiede, considera attendibile la cartella

Chiedi a Claude di collegare il tuo negozio

Nella tua sessione KAITEN, aggiungi qui sotto il tuo Project ID e invia:

Collega KAITEN a Supabase

Claude applica le tre migrazioni dello starter e il menu iniziale con la Supabase CLI, controlla sicurezza e storage, poi ti dà i due valori pubblici per Hostinger.

Connect this KAITEN restaurant to my Supabase project {{PROJECT_REF}}. Work only on that project and never touch any other. Read README.md (step 2, "Make it a real store with Supabase") and docs/SUPABASE.md first, and follow docs/SUPABASE.md's Supabase CLI steps. Use only the SQL this project already has. Don't write new tables, policies or setup SQL, and don't change the store's code. Use only this project's own pinned Supabase CLI, through npx supabase after npm install — never a global supabase command — always on my hosted project. Never run supabase db reset, supabase migration repair or any command that deletes data, never use --include-seed, and never start a local database or Docker. Never ask me for a password, an access token or a Secret key, and never use --reveal. Do these yourself, and tell me what each one does before you run it: 1. Check that Node.js 22 or newer is installed (if it isn't, stop and tell me how to install it), then run npm install and check that npx supabase --version shows 2.122.0. If it doesn't, stop and tell me. 2. Check that I'm signed in to the Supabase CLI. If I'm not, stop and tell me to run npx supabase login in the Terminal myself, and continue when I say I'm signed in. 3. Link this folder with npx supabase link --project-ref {{PROJECT_REF}}, then show me the project's name and URL and ask me to confirm it's the right one. 4. Show me the project's migration history (npx supabase migration list --linked). If it has migrations that aren't in supabase/migrations, stop and explain what you see. If the history is empty but the table public.dishes already exists, the setup was already run by hand: stop and tell me, and push nothing, because these files must not run twice. 5. Show me what the push would apply (npx supabase db push --linked --dry-run). It must be exactly the three files in supabase/migrations, in order: kaiten_schema, kaiten_seed, kaiten_private_helpers. Then apply them with npx supabase db push --linked, so they are recorded in the project's migration history. They create the tables, the Row Level Security policies, the dish-images storage bucket and the starting menu. There is no separate seed step. 6. Verify the setup with npx supabase db query --linked: Row Level Security is on for all seven tables in public, the public dish-images bucket exists, and there are 5 plate tiers, 4 categories and 8 dishes. Fix nothing by hand: tell me what's wrong. 7. Show me my Project URL and Publishable key (sb_publishable_...) as NEXT_PUBLIC_SUPABASE_URL and NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY, ready to copy into Hostinger, using npx supabase projects api-keys --project-ref {{PROJECT_REF}}. If no Publishable key is listed, tell me to copy it from Connect in the Supabase Dashboard. Never read, use or write the Secret key or service_role key, and don't create .env.local. Then stop and tell me to create my admin user in the Supabase Dashboard. When I give you my admin email, never my password, add that user to public.admin_users with the SQL in docs/SUPABASE.md ("Your admin account"), through npx supabase db query --linked, and check that the row exists. Finally, tell me in plain words what passed and what is still left to do.

Il tuo Project ID di Supabase

abcdefghijklmnopqrst

Claude chiede prima di ogni azione: clicca su Allow. Si ferma quando tocca a te.

Accedi alla Supabase CLI

Quando Claude te lo chiede, eseguilo tu una sola volta: apre il browser.

Clicca su Terminal nella barra del titolo della sessione Esegui il comando qui sotto Approva l'accesso nella finestra del browser che si apre Di' a Claude che hai effettuato l'accesso

npx supabase login

Crea il tuo account amministratore

Supabase Authentication Users

Clicca su Add user, poi su Create new user Inserisci la tua email e una password sicura Lascia selezionato Auto Confirm User e crea l'utente Comunica a Claude la tua email di amministratore, mai la password

Supabase Authentication Sign In / Providers

Disattiva Allow new users to sign up e salva: il negozio non ha account cliente

Claude aggiunge la tua email all'elenco degli amministratori del negozio. Accedi su /admin nel tuo negozio online al Passaggio 5.

La Supabase CLI non funziona? Configura a mano

Nel tuo progetto Supabase, apri SQL Editor. Esegui questi tre file della tua cartella KAITEN, una volta ciascuno e in quest'ordine. Per ognuno, aprilo, copia tutto, incollalo in una nuova query e clicca su Run.

supabase/migrations/20261102200000_kaiten_schema.sql

supabase/migrations/20261102200100_kaiten_seed.sql

supabase/migrations/20261102200200_kaiten_private_helpers.sql

Copia la tua Project URL e la Publishable key da Connect: le aggiungi a Hostinger al Passaggio 5. Dopo aver creato qui sopra il tuo utente admin, aggiungi qui sotto la tua email ed eseguila nello SQL Editor:

Rendimi amministratore

insert into public.admin_users (user_id) select id from auth.users where email = '{{ADMIN_EMAIL}}';

La tua email di amministratore

you@example.com

Personalizza il tuo ristorante di sushi

Descrivi il tuo ristorante a Claude

Compila quello che sai: lascia vuoto il resto e Claude mantiene la versione di KAITEN. Poi invialo nella tua sessione KAITEN:

Personalizza il mio ristorante di sushi

Cambia il nome, i testi e lo stile, mantiene il nastro trasportatore e gli ordini esattamente come sono e invia le modifiche al tuo repository GitHub.

This folder is my own copy of the KAITEN sushi restaurant. Before you change anything, read README.md ("How it works"), AGENTS.md and docs/ASSETS.md. AGENTS.md matters: this version of Next.js differs from what you may know. Customize the website for my restaurant. Restaurant name: {{RESTAURANT_NAME}} Our concept and story: {{RESTAURANT_STORY}} Visual identity: {{VISUAL_STYLE}} Where each change belongs: - The brand mark and its default name: src/components/site/brand-mark.tsx - Homepage and about copy: src/components/home/ and src/app/(store)/about/page.tsx - Colours and fonts: src/app/globals.css and src/app/layout.tsx The restaurant name guests see in the header, footer and page titles, plus the address, phone, opening hours, dishes, photos and plate prices, come from the database. Don't hard-code them: I'll set them in the admin after launch. Tell me which name to enter there. Keep these exactly as they are: - The sushi conveyor belt in src/components/ui/sushi-conveyor-menu.tsx: dragging, flicking, lifting a plate, the plate stack and every animation, timing and hit area - The menu, the order and checkout, pickup ordering, the admin, the Supabase migrations, KAITEN_MODE and the other environment variables - The dependencies: don't add new ones First show me a short plan: every file you will change, and what changes in it. Wait for my approval. Then make the changes, and run npm install, npm run lint and npm run typecheck so the build can't break. Fix anything they report. Don't start a local server. Then summarize what you changed and wait. I may ask for more changes. Only when I say it's ready: make sure .env.local and any other secrets are not committed, commit everything with a clear message and push it to the main branch of my own GitHub repository. Never push to any other repository. If GitHub needs me to sign in, tell me exactly what to do. When it is done, tell me the commit you pushed.

Nome del ristorante

Sushi Nami

Il concept o la storia del tuo ristorante

Un bancone kaiten a conduzione familiare a Lione dal 2009, con pesce del mercato del mattino e riso cotto ogni ora.

Identità visiva

Claude cambia il brand, il design e il codice. I tuoi piatti, le foto, i prezzi dei piattini, le categorie, gli orari di apertura, i dati per il ritiro e gli ordini si gestiscono nell'admin dopo il lancio, nel Passo 5. Controlla le modifiche di Claude, chiedine altre nella stessa sessione e di' a Claude quando è pronto: fa un solo push sul tuo repository GitHub, che il Passo 5 distribuisce.

Deploy e lancio su Hostinger

Crea la tua Web App

Non hai ancora un hosting? Scegli un piano nei Requisiti.

Hostinger Websites Create site Web App

Se Hostinger ti offre la scelta del dominio, scegli il tuo dominio, altrimenti la tua app parte su un dominio temporaneo Seleziona Import Git Repository Autorizza GitHub e seleziona la tua copia di KAITEN, con le modifiche che Claude ha inviato nel Passo 4

Dominio registrato altrove? Aggiungi presso il tuo registrar i record DNS che mostra Hostinger e mantieni i record email esistenti.

Configura ed esegui il deploy

Mantieni le impostazioni Next.js rilevate da Hostinger: compila e avvia il negozio da solo Scegli Node.js 22 o successivo Assicurati che il comando di build sia npm run build e quello di avvio npm start: mai npm run build:demo, che genera la demo bloccata

Prima del deploy, apri Environment variables, clicca su Edit e aggiungi queste tre. KAITEN_MODE attiva gli ordini reali e l'admin: senza, il tuo sito viene generato come la demo. I due valori di Supabase sono quelli che Claude ti ha mostrato nel Passo 3. Sono integrati nello store, quindi cambiarne uno in seguito richiede un nuovo deploy.

KAITEN_MODE NEXT_PUBLIC_SUPABASE_URL NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY

KAITEN_MODE

La parola live, in minuscolo

NEXT_PUBLIC_SUPABASE_URL

Supabase Project URL

NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY

Publishable key di Supabase

I valori Supabase si trovano in Connect.

Apri Connect

https://supabase.com/dashboard/project/_?showConnect=true

Solo valori pubblici

Non aggiungere mai qui la Secret key o la service_role key di Supabase. Tutto ciò che inizia con NEXT_PUBLIC_ è visibile nel browser.

Clicca su Finish, poi su Deploy, e attendi la fine della build

Sei su un dominio temporaneo?

Per passare al tuo dominio, apri la tua Web App in Hostinger e collega lì il dominio, aggiungendo presso il tuo registrar i record DNS mostrati. KAITEN non memorizza il proprio indirizzo, quindi non c'è nulla da cambiare e non serve un nuovo deploy.

Configura il tuo ristorante

Apri /admin sul tuo store online e accedi con la tua email di admin. Tutto ciò che salvi nell'admin va direttamente nel tuo database, senza modifiche al codice.

In Restaurant, scegli prima il tuo fuso orario in Hours are in, poi imposta il Restaurant name, l'indirizzo di ritiro, il telefono e gli orari di apertura, e clicca su Save restaurant details In Plates & prices, imposta il prezzo di ogni colore di piattino e clicca su Save plate prices: tutti i piatti di quel piattino si adeguano In Menu, clicca su Edit su un piatto, modificane i dati, usa Replace photo per la tua foto e clicca su Save changes. Usa Add dish per aggiungerne di nuovi Disattiva On menu per i piatti che non servi, e In stock quando uno finisce per la giornata In Categories, rinomina, riordina o aggiungi le sezioni del tuo menu

Sostituisci le foto iniziali prima di aprire

Le otto foto iniziali dei piatti provengono dalla demo del componente originale e i loro diritti non sono verificati. Usa foto tue o con licenza.

Cosa serve per le foto dei tuoi piatti

Quadrate, almeno 800 × 800 px

Scattate dall'alto, con il piattino che riempie l'inquadratura

Sfondo trasparente (PNG o WebP), così il nastro si vede intorno al piattino

Fino a 5 MB

Verifica e lancia

Apri il tuo dominio: compare il lucchetto, il nastro gira e l'intestazione mostra se sei aperto Metti qualche piattino nel tuo ordine, clicca su Review order, poi su Checkout for pickup Inserisci un nome e un numero di telefono e clicca su Place pickup order Nell'admin, apri Orders, trova l'ordine e clicca su Start preparing Nella pagina di conferma dell'ordine, clicca su Refresh status: ora mostra Preparing

Lo store accetta ordini solo durante i tuoi orari di apertura e finché Taking orders è attivo, in cima a ogni pagina dell'admin. I clienti pagano al ritiro: non ci sono pagamenti con carta online.

In seguito, cambia piatti, foto, prezzi e orari nell'admin: sono online subito. Per modifiche al design o al codice, chiedi a Claude e approva il push: Hostinger ricompila il tuo store a ogni push su main.