Buat Website Restoran Sushi Interaktif dengan AI
Buat website restoran sushi dengan conveyor belt interaktif, pemesanan ambil sendiri, dan dashboard admin. Lihat demo langsung (terbuka di tab baru)
Roadmap & sumber daya
Persyaratan
Claude Desktop
Gunakan Claude Code di aplikasi desktop untuk menyiapkan dan menyesuaikan website restoran Anda.
Unduh Claude Desktop
https://claude.ai/download
Akun GitHub
Gratis. Salinan KAITEN milik Anda tersimpan di sini, dan Hostinger melakukan deploy dari sini.
Buat Akun GitHub
https://github.com/signup
Node.js
Unduh rilis LTS. Claude memakainya untuk memasang dan memeriksa toko Anda.
Unduh Node.js
https://nodejs.org/en/download
Akun Supabase
Paket gratis sudah cukup. Paket ini menyimpan menu, foto, jam buka, pesanan, dan login admin Anda.
Buat Akun Supabase
https://supabase.link/r4gdwhi
Hosting Hostinger
Anda butuh hosting di Langkah 5, saat toko Anda live.
Pilih Paket Hostinger
Gunakan paket Unlimited atau paket Cloud — KAITEN di-deploy sebagai Node.js Web App, bukan situs statis.
Dapatkan Starter KAITEN
Buat Salinan Anda Sendiri
Buka KAITEN di GitHub
https://github.com/salhiworks/kaiten-sushi-store
Klik Use this template, lalu Create a new repository Beri nama dan pilih Public atau Private Klik Create repository dan salin alamatnya
Siapkan Supabase
Buat Proyek Supabase
Buka Dashboard Supabase
https://supabase.com/dashboard
Klik New project — region apa pun dan paket Free sudah cukup Simpan kata sandi database di tempat yang aman — Claude tidak pernah membutuhkannya Setelah proyek siap, salin Project ID-nya
Supabase Project Settings General
Project ID adalah satu-satunya detail proyek yang dibutuhkan Claude. Anda tidak perlu membuat tabel atau menulis SQL apa pun: Claude menyiapkan database di Langkah 3.
Hubungkan Toko Anda dengan Claude Desktop
Bawa ke Claude Desktop
Claude Desktop Code Local
Mulai sesi Local di folder seperti Documents, tambahkan alamat repositori Anda di bawah, lalu kirim:
Clone Salinan Anda
Mengunduh repository KAITEN milik Anda ke subfolder baru dan memeriksa bahwa Claude dapat memperbaruinya.
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.
Alamat repository Anda
https://github.com/your-name/my-sushi-restaurant
Buka Folder KAITEN Anda
Mulai sesi Local baru Buka folder yang baru dibuat Claude — yang berisi README.md Jika Claude Desktop bertanya, percayai folder tersebut
Minta Claude Menghubungkan Toko Anda
Di sesi KAITEN Anda, tambahkan Project ID Anda di bawah, lalu kirim:
Hubungkan KAITEN ke Supabase
Claude menerapkan tiga migrasi dan menu awal dari starter dengan Supabase CLI, memeriksa keamanan dan penyimpanan, lalu memberi Anda dua nilai publik untuk 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.
Project ID Supabase Anda
abcdefghijklmnopqrst
Claude bertanya sebelum setiap tindakan — klik Allow. Claude berhenti saat giliran Anda.
Masuk ke Supabase CLI
Saat Claude meminta, jalankan ini sendiri sekali saja — ini membuka browser Anda:
Klik Terminal di bilah judul sesi Anda Jalankan perintah di bawah Setujui login di jendela browser yang terbuka Beri tahu Claude bahwa Anda sudah masuk
npx supabase login
Buat Akun Admin Anda
Supabase Authentication Users
Klik Add user, lalu Create new user Masukkan email Anda dan kata sandi yang kuat Biarkan Auto Confirm User tetap dicentang, lalu buat user Beri tahu Claude email admin Anda — jangan pernah kata sandinya
Supabase Authentication Sign In / Providers
Matikan Allow new users to sign up dan simpan — toko ini tidak punya akun pelanggan
Claude menambahkan email Anda ke daftar administrator toko. Anda masuk di /admin pada toko live Anda di Langkah 5.
Supabase CLI Tidak Berfungsi? Siapkan Secara Manual
Di proyek Supabase Anda, buka SQL Editor. Jalankan tiga file ini dari folder KAITEN Anda, masing-masing sekali dan sesuai urutan ini. Untuk setiap file, buka, salin semuanya, tempel ke query baru, lalu klik Run.
supabase/migrations/20261102200000_kaiten_schema.sql
supabase/migrations/20261102200100_kaiten_seed.sql
supabase/migrations/20261102200200_kaiten_private_helpers.sql
Salin Project URL dan Publishable key Anda dari Connect — Anda menambahkannya ke Hostinger di Langkah 5. Setelah membuat pengguna admin di atas, tambahkan email Anda di bawah dan jalankan ini di SQL Editor:
Jadikan Saya Administrator
insert into public.admin_users (user_id) select id from auth.users where email = '{{ADMIN_EMAIL}}';
Email admin Anda
you@example.com
Sesuaikan Restoran Sushi Anda
Jelaskan Restoran Anda kepada Claude
Isi yang Anda ketahui — biarkan sisanya kosong, dan Claude akan mempertahankan versi KAITEN. Lalu kirimkan di sesi KAITEN Anda:
Sesuaikan Restoran Sushi Saya
Mengganti nama, teks, dan tampilan, mempertahankan conveyor belt dan pemesanan persis seperti apa adanya, lalu melakukan push perubahan ke repository GitHub milik Anda.
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.
Nama restoran
Sushi Nami
Konsep atau kisah restoran Anda
Konter kaiten milik keluarga di Lyon sejak 2009, dengan ikan dari pasar pagi dan nasi yang dimasak setiap jam.
Identitas visual
Claude mengubah brand, desain, dan kode. Hidangan, foto, harga piring, kategori, jam buka, detail pengambilan, dan pesanan Anda dikelola di admin setelah peluncuran, di Langkah 5. Tinjau perubahan Claude, minta perubahan lain di sesi yang sama, dan beri tahu Claude saat semuanya siap: Claude melakukan push sekali ke repository GitHub Anda, yang di-deploy di Langkah 5.
Deploy & Luncurkan di Hostinger
Buat Web App Anda
Belum punya hosting? Ambil paket di Persyaratan.
Hostinger Websites Create site Web App
Jika Hostinger menawarkan pilihan domain, pilih domain Anda sendiri — jika tidak, aplikasi Anda dimulai di domain sementara Pilih Import Git Repository Otorisasi GitHub dan pilih salinan KAITEN milik Anda, dengan perubahan yang di-push Claude di Langkah 4
Domain terdaftar di tempat lain? Tambahkan record DNS yang ditampilkan Hostinger di registrar Anda, dan pertahankan record email yang sudah ada.
Konfigurasi & Deploy
Pertahankan pengaturan Next.js yang terdeteksi oleh Hostinger — Hostinger sendiri yang membangun dan menjalankan toko Pilih Node.js 22 atau yang lebih baru Pastikan perintah build adalah npm run build dan perintah start adalah npm start — jangan pernah npm run build:demo, yang membangun demo terkunci
Sebelum deploy, buka Environment variables, klik Edit, lalu tambahkan tiga variabel ini. KAITEN_MODE mengaktifkan pemesanan sungguhan dan admin — tanpanya, situs Anda dibangun sebagai demo. Dua nilai Supabase adalah nilai yang ditunjukkan Claude di Langkah 3. Nilai-nilai ini tertanam di dalam toko, jadi mengubah salah satunya nanti memerlukan redeploy.
KAITEN_MODE NEXT_PUBLIC_SUPABASE_URL NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY
KAITEN_MODE
Kata live, dalam huruf kecil
NEXT_PUBLIC_SUPABASE_URL
Supabase Project URL
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY
Publishable key Supabase
Nilai Supabase ada di Connect.
Buka Connect
https://supabase.com/dashboard/project/_?showConnect=true
Hanya nilai publik
Jangan pernah menambahkan Secret key atau service_role key Supabase di sini. Apa pun yang diawali NEXT_PUBLIC_ terlihat di browser.
Klik Finish, lalu Deploy, dan tunggu hingga build selesai
Berjalan di Domain Sementara?
Untuk beralih ke domain Anda sendiri, buka Web App Anda di Hostinger dan hubungkan domainnya di sana, lalu tambahkan record DNS yang ditampilkan di registrar Anda. KAITEN tidak menyimpan alamatnya sendiri, jadi tidak ada yang perlu diubah dan tidak perlu redeploy.
Siapkan Restoran Anda
Buka /admin di toko live Anda dan masuk dengan email admin Anda. Semua yang Anda simpan di admin langsung masuk ke database Anda — tanpa perubahan kode.
Di Restaurant, pilih zona waktu Anda di Hours are in terlebih dahulu, lalu atur Restaurant name, alamat pengambilan, telepon, dan jam buka, lalu klik Save restaurant details Di Plates & prices, atur harga setiap warna piring lalu klik Save plate prices — setiap hidangan di piring itu ikut menyesuaikan Di Menu, klik Edit pada sebuah hidangan, ubah detailnya, gunakan Replace photo untuk foto Anda sendiri, lalu klik Save changes. Gunakan Add dish untuk hidangan baru Matikan On menu untuk hidangan yang tidak Anda sajikan, dan In stock saat suatu hidangan habis untuk hari itu Di Categories, ganti nama, ubah urutan, atau tambahkan bagian menu Anda
Ganti foto awal sebelum Anda buka
Delapan foto hidangan awal berasal dari demo komponen aslinya, dan hak penggunaannya belum diverifikasi. Gunakan foto milik Anda sendiri atau yang sudah Anda lisensikan.
Yang Dibutuhkan Foto Hidangan Anda
Persegi, minimal 800 × 800 px
Diambil dari atas, dengan piring memenuhi bingkai
Latar belakang transparan (PNG atau WebP), agar belt terlihat di sekitar piring
Maksimal 5 MB
Verifikasi & Luncurkan
Buka domain Anda — ikon gembok muncul, belt berputar, dan header menampilkan status buka Anda Ambil beberapa piring ke pesanan Anda, klik Review order, lalu Checkout for pickup Masukkan nama dan nomor telepon, lalu klik Place pickup order Di admin, buka Orders, temukan pesanannya, lalu klik Start preparing Di halaman konfirmasi pesanan, klik Refresh status: sekarang statusnya Preparing
Toko hanya menerima pesanan selama jam buka Anda dan selama Taking orders aktif, di bagian atas setiap halaman admin. Tamu membayar saat mengambil pesanan: tidak ada pembayaran kartu online.
Nanti, ubah hidangan, foto, harga, dan jam buka di admin — perubahannya langsung live. Untuk perubahan desain atau kode, minta Claude lalu setujui push-nya: Hostinger membangun ulang toko Anda setiap kali ada push ke main.