Crie com IA um site interativo para um restaurante de sushi
Crie o site de um restaurante de sushi com uma esteira interativa, pedidos para retirada e um painel de administração. Ver demo ao vivo (abre em uma nova aba)
Roadmap e recursos
Pré-requisitos
Claude Desktop
Use o Claude Code no app para desktop para configurar e personalizar o site do seu restaurante.
Baixar o Claude Desktop
https://claude.ai/download
Conta no GitHub
Grátis. Sua própria cópia do KAITEN fica aqui, e a Hostinger faz o deploy a partir dela.
Criar conta no GitHub
https://github.com/signup
Node.js
Baixe a versão LTS. O Claude a usa para instalar e verificar a sua loja.
Baixar Node.js
https://nodejs.org/en/download
Conta no Supabase
O plano gratuito é suficiente. Ele guarda seu cardápio, fotos, horário de funcionamento, pedidos e o login do admin.
Criar conta no Supabase
https://supabase.link/r4gdwhi
Hospedagem Hostinger
Você precisa de hospedagem no Passo 5, quando sua loja for ao ar.
Escolha um plano da Hostinger
Use o plano Unlimited ou um plano Cloud — o KAITEN é implantado como uma Node.js Web App, não como um site estático.
Obter o KAITEN Starter
Crie sua própria cópia
Abrir o KAITEN no GitHub
https://github.com/salhiworks/kaiten-sushi-store
Clique em Use this template e depois em Create a new repository Dê um nome e escolha Public ou Private Clique em Create repository e copie o endereço dele
Configure o Supabase
Criar um projeto no Supabase
Abrir o painel do Supabase
https://supabase.com/dashboard
Clique em New project — qualquer região e o plano Free servem Guarde a senha do banco de dados em um lugar seguro — o Claude nunca precisa dela Quando o projeto estiver pronto, copie o Project ID dele
Supabase Project Settings General
O Project ID é o único dado do projeto de que o Claude precisa. Você não cria nenhuma tabela nem escreve SQL: o Claude configura o banco de dados no Passo 3.
Conecte sua loja com o Claude Desktop
Leve-o para o Claude Desktop
Claude Desktop Code Local
Inicie uma sessão Local em uma pasta como Documentos, adicione o endereço do seu repositório abaixo e envie:
Clone sua cópia
Baixa seu próprio repositório do KAITEN em uma nova subpasta e confere se o Claude consegue atualizá-lo.
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.
O endereço do seu repositório
https://github.com/your-name/my-sushi-restaurant
Abra sua pasta do KAITEN
Inicie uma nova sessão Local Abra a pasta que o Claude acabou de criar — a que tem o README.md dentro Se o Claude Desktop pedir, confie na pasta
Peça ao Claude para conectar sua loja
Na sua sessão do KAITEN, adicione seu Project ID abaixo e envie:
Conecte o KAITEN ao Supabase
O Claude aplica as três migrações do starter e o cardápio inicial com a Supabase CLI, verifica a segurança e o armazenamento e depois te passa os dois valores públicos para a 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.
Seu Project ID do Supabase
abcdefghijklmnopqrst
O Claude pergunta antes de cada ação — clique em Allow. Ele para quando for a sua vez.
Faça login na Supabase CLI
Quando o Claude pedir, execute isto você mesmo, uma única vez — abre o seu navegador:
Clique em Terminal na barra de título da sua sessão Execute o comando abaixo Aprove o login na janela do navegador que abrir Avise o Claude que você entrou
npx supabase login
Crie sua conta de administrador
Supabase Authentication Users
Clique em Add user e depois em Create new user Digite seu e-mail e uma senha forte Deixe Auto Confirm User marcado e crie o usuário Informe ao Claude seu e-mail de administrador — nunca sua senha
Supabase Authentication Sign In / Providers
Desative Allow new users to sign up e salve — a loja não tem contas de clientes
O Claude adiciona o seu e-mail à lista de administradores da loja. Você faz login em /admin na sua loja no ar no Passo 5.
A Supabase CLI não funciona? Configure manualmente
No seu projeto do Supabase, abra o SQL Editor. Execute estes três arquivos da sua pasta do KAITEN, uma vez cada e nesta ordem. Para cada um, abra-o, copie tudo, cole em uma nova consulta e clique em Run.
supabase/migrations/20261102200000_kaiten_schema.sql
supabase/migrations/20261102200100_kaiten_seed.sql
supabase/migrations/20261102200200_kaiten_private_helpers.sql
Copie o seu Project URL e a Publishable key de Connect — você vai adicioná-los à Hostinger no Passo 5. Depois de criar acima o seu usuário administrador, adicione abaixo o seu e-mail e execute isto no SQL Editor:
Torne-me administrador
insert into public.admin_users (user_id) select id from auth.users where email = '{{ADMIN_EMAIL}}';
Seu e-mail de administrador
you@example.com
Personalize seu restaurante de sushi
Descreva seu restaurante para o Claude
Preencha o que você sabe — deixe o resto em branco e o Claude mantém a versão do KAITEN. Depois envie na sua sessão do KAITEN:
Personalizar meu restaurante de sushi
Muda o nome, os textos e o visual, mantém a esteira e os pedidos exatamente como estão e envia as mudanças para o seu próprio repositório no 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 do restaurante
Sushi Nami
O conceito ou a história do seu restaurante
Um balcão de kaiten familiar em Lyon desde 2009, com peixe do mercado da manhã e arroz feito a cada hora.
Identidade visual
O Claude muda a marca, o design e o código. Seus pratos, fotos, preços dos pratinhos, categorias, horário de funcionamento, dados de retirada e pedidos são gerenciados no admin depois do lançamento, no Passo 5. Revise as mudanças do Claude, peça mais na mesma sessão e avise o Claude quando estiver pronto: ele faz um único push para o seu repositório no GitHub, que o Passo 5 implanta.
Implante e lance na Hostinger
Crie sua Web App
Ainda não tem hospedagem? Escolha um plano nos Pré-requisitos.
Hostinger Websites Create site Web App
Se a Hostinger oferecer a escolha de domínio, escolha seu próprio domínio — caso contrário, seu app começa em um domínio temporário Selecione Import Git Repository Autorize o GitHub e selecione sua própria cópia do KAITEN, com as mudanças que o Claude enviou no Passo 4
Domínio registrado em outro lugar? Adicione no seu registrador os registros DNS que a Hostinger mostra e mantenha seus registros de e-mail existentes.
Configure e implante
Mantenha as configurações de Next.js que a Hostinger detecta — ela mesma faz o build e inicia a loja Escolha Node.js 22 ou mais recente Confira se o comando de build é npm run build e o de inicialização npm start — nunca npm run build:demo, que gera a demo bloqueada
Antes de fazer o deploy, abra Environment variables, clique em Edit e adicione estas três. KAITEN_MODE ativa os pedidos reais e o admin — sem ela, seu site é gerado como a demo. Os dois valores do Supabase são os que o Claude te mostrou no Passo 3. Eles ficam embutidos na loja, então mudar um deles depois exige um novo deploy.
KAITEN_MODE NEXT_PUBLIC_SUPABASE_URL NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY
KAITEN_MODE
A palavra live, em letras minúsculas
NEXT_PUBLIC_SUPABASE_URL
Supabase Project URL
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY
Publishable key do Supabase
Os valores do Supabase estão em Connect.
Abrir o Connect
https://supabase.com/dashboard/project/_?showConnect=true
Somente valores públicos
Nunca adicione aqui a Secret key nem a chave service_role do Supabase. Tudo que começa com NEXT_PUBLIC_ fica visível no navegador.
Clique em Finish, depois em Deploy, e espere o build terminar
Rodando em um domínio temporário?
Para usar seu próprio domínio, abra sua Web App na Hostinger e conecte o domínio por lá, adicionando no seu registrador os registros DNS exibidos. O KAITEN não guarda o próprio endereço, então não há nada para mudar nem é preciso fazer um novo deploy.
Configure seu restaurante
Abra /admin na sua loja no ar e entre com seu e-mail de admin. Tudo o que você salva no admin vai direto para o seu banco de dados — sem mudar código.
Em Restaurant, escolha primeiro seu fuso horário em Hours are in, depois defina seu Restaurant name, o endereço de retirada, o telefone e o horário de funcionamento, e clique em Save restaurant details Em Plates & prices, defina o preço de cada cor de pratinho e clique em Save plate prices — todos os pratos daquele pratinho acompanham Em Menu, clique em Edit em um prato, altere os dados, use Replace photo para colocar sua própria foto e clique em Save changes. Use Add dish para pratos novos Desative On menu nos pratos que você não serve, e In stock quando um acabar no dia Em Categories, renomeie, reordene ou adicione as seções do seu cardápio
Substitua as fotos iniciais antes de abrir
As oito fotos iniciais dos pratos vêm da demo do componente original, e os direitos delas não foram verificados. Use fotos suas ou licenciadas.
Do que as fotos dos seus pratos precisam
Quadradas, com pelo menos 800 × 800 px
Tiradas de cima, com o pratinho preenchendo o quadro
Fundo transparente (PNG ou WebP), para a esteira aparecer em volta do pratinho
Até 5 MB
Verifique e lance
Abra seu domínio — o cadeado aparece, a esteira gira e o cabeçalho mostra se você está aberto Coloque alguns pratinhos no seu pedido, clique em Review order e depois em Checkout for pickup Informe um nome e um número de telefone e clique em Place pickup order No admin, abra Orders, encontre o pedido e clique em Start preparing Na página de confirmação do pedido, clique em Refresh status: agora aparece Preparing
A loja só aceita pedidos durante o seu horário de funcionamento e enquanto Taking orders estiver ativado, no topo de cada página do admin. Os clientes pagam na retirada: não há pagamento com cartão on-line.
Depois, mude pratos, fotos, preços e horários no admin — eles entram no ar na hora. Para mudanças de design ou código, peça ao Claude e aprove o push: a Hostinger recompila sua loja a cada push na main.