Xây dựng cửa hàng đèn tương tác bằng AI (Supabase + Hostinger)
Ra mắt một cửa hàng đèn nơi khách lướt dọc thanh ray đồng thau để bật đèn, rồi chỉnh độ sáng và mua. Xem bản demo trực tiếp (mở trong thẻ mới)
Lộ trình & tài nguyên
Yêu cầu
Claude Desktop
Claude Code chạy bên trong đó và tùy chỉnh cửa hàng của bạn. Cần có gói Claude trả phí.
Tải Claude Desktop
https://claude.ai/download
Tài khoản GitHub
Miễn phí. Bản sao LUMIÈRE của riêng bạn nằm ở đây, và Hostinger triển khai từ đó.
Tạo tài khoản GitHub
https://github.com/signup
Hosting Hostinger
Cửa hàng trực tuyến của bạn chạy ở đây. Bạn chọn gói ở Bước 2.
Bạn không cần Node.js, trình soạn thảo mã hay terminal. Hostinger build và chạy cửa hàng, còn Claude lo phần chỉnh sửa.
Lấy bộ khởi đầu cửa hàng đèn của bạn
Xem trước và sao chép LUMIÈRE
Hãy thử cửa hàng hoàn chỉnh trước: lướt dọc thanh ray đồng thau để bật các đèn thả, kéo chúng, và nhấn vào một chiếc để mở bộ chỉnh độ sáng. Bản demo không có trang quản trị và không có thanh toán.
Mở Live Demo của LUMIÈRE
Mặt tiền cửa hàng hoàn chỉnh, chạy ngay trong trình duyệt của bạn.
https://lumiere-lighting-store.vercel.app/
Mở LUMIÈRE trên GitHub
https://github.com/salhiworks/lumiere-lighting-store
Nhấn Use this template, rồi Create a new repository Đặt tên và chọn Public hoặc Private Nhấn Create repository
Xác nhận đây là bản sao của riêng bạn
Địa chỉ của kho bắt đầu bằng github.com/ và tên người dùng của chính bạn
Bên dưới tên kho, GitHub ghi rằng nó được tạo từ salhiworks/lumiere-lighting-store
Từ đây, bạn chỉ dùng kho của riêng mình. Hostinger deploy nó ở Bước 2, và Claude Desktop chỉnh sửa nó ở Bước 3. Bộ khởi đầu gốc không bao giờ bị thay đổi.
Deploy trên Hostinger
Mua hosting Node.js
Xuất bản trước, tùy chỉnh sau: chỉ sau vài phút cửa hàng của bạn đã là một website thật, và mọi thay đổi về sau đều hiện lên đó.
Chọn gói Hostinger
Dùng gói Unlimited hoặc gói Cloud — LUMIÈRE được triển khai dưới dạng Node.js Web App, không phải website tĩnh.
Nhập repository của bạn
Hostinger Websites Create site Web App
Chọn một tên miền tạm thời để bắt đầu — bạn sẽ kết nối tên miền riêng ở Bước 5 Chọn Import Git Repository Cấp quyền cho GitHub và chọn bản sao LUMIÈRE của riêng bạn, bản bạn đã tạo ở Bước 1 — không phải bộ khởi đầu gốc
Cấu hình và triển khai
Giữ các thiết lập Next.js mà Hostinger phát hiện — nó tự build và khởi động cửa hàng Chọn Node.js 22 Đảm bảo script build là build — không bao giờ dùng build:demo, lệnh đó build bản demo bị khóa
Trước khi triển khai, hãy thêm địa chỉ website của bạn làm biến môi trường: địa chỉ tạm thời bạn vừa chọn. Bạn chưa cần tên miền chính thức — Bước 5 sẽ thay nó và triển khai lại.
NEXT_PUBLIC_SITE_URL
NEXT_PUBLIC_SITE_URL
Địa chỉ tạm thời của bạn, bắt đầu bằng https://
Cửa hàng chỉ cần bấy nhiêu thôi. Supabase và Stripe đều là tùy chọn, nên hãy để sau.
Nhấn Deploy và chờ build hoàn tất Mở địa chỉ tạm thời của bạn
Xem cửa hàng của bạn hoạt động trực tuyến
Địa chỉ tạm thời của bạn mở ra cửa hàng LUMIÈRE
Lướt thanh ray làm đèn sáng lên, và mọi ảnh đều tải được
Trang cửa hàng và một trang sản phẩm mở được
Cửa hàng của bạn đã trực tuyến. Từ giờ, mọi thay đổi được đẩy lên nhánh main của kho sẽ được Hostinger tự động build lại và xuất bản.
Tùy chỉnh bằng Claude Desktop
Mở dự án của bạn trong Claude Desktop
Claude Desktop Code Local
Bắt đầu một phiên Local trong một thư mục như Documents, thêm địa chỉ repository của bạn bên dưới rồi gửi:
Clone bản sao của bạn
Tải kho LUMIÈRE của riêng bạn về một thư mục con mới và kiểm tra xem Claude có thể cập nhật nó không.
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.
Địa chỉ kho của bạn
https://github.com/your-name/my-lighting-store
Mở thư mục LUMIÈRE của bạn
Bắt đầu một phiên Local mới Mở thư mục Claude vừa tạo — thư mục có README.md bên trong Nếu Claude Desktop hỏi, hãy tin cậy thư mục này
Claude thay đổi bản sao cửa hàng này và gửi các thay đổi lên kho GitHub của riêng bạn. Sau đó Hostinger cập nhật website trực tuyến của bạn.
Mô tả cửa hàng của bạn cho Claude
Điền những gì bạn biết — để trống phần còn lại và Claude sẽ giữ phiên bản của LUMIÈRE. Rồi gửi trong phiên LUMIÈRE của bạn:
Tùy chỉnh cửa hàng đèn của tôi
Đổi tên, sản phẩm, nội dung và giao diện, đồng thời giữ nguyên hiệu ứng đèn và các cặp ảnh.
This folder is my own copy of the LUMIÈRE lighting store. Before you change anything, read README.md, AGENTS.md, docs/ARCHITECTURE.md and docs/ASSETS.md. AGENTS.md matters: this version of Next.js differs from what you may know. Customize the store for my business. Store name: {{STORE_NAME}} What makes us different: {{STORE_STORY}} Visual identity: {{VISUAL_STYLE}} Products: {{PRODUCTS}} Photos: {{PHOTOS}} Where each change belongs: - Name, description and navigation: lib/site.ts and the wordmark in components/layout/wordmark.tsx - Products and collections: lib/catalog/demo-data.ts. Make the same changes in supabase/seed.sql, so a database I connect later starts with the same catalog. - Homepage and studio copy: components/home/ - Colours and fonts: app/globals.css and app/layout.tsx Keep these exactly as they are: - The Pendant Lamp Rail in components/ui/pendant-lamp-rail.tsx: brushing the rail to switch lamps on, dragging, the detail view with its dimmer, and every animation, timing and hit area - The paired photos: every product keeps one OFF and one ON photo of the same size, at /lamps/<product-id>-off.webp and /lamps/<product-id>-on.webp, following the rules in docs/ASSETS.md - The admin, checkout, Supabase migrations and environment variables - The dependencies: don't add new ones Prices are in cents, as the catalog already stores them ($240 = 24000). The store uses one currency, USD by default. 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 and don't push anything yet: I'll ask you to publish when I'm ready.
Tên cửa hàng
Atelier Nord
Điều gì làm studio đèn của bạn khác biệt?
Đèn thả gốm và đồng thau sản xuất số lượng nhỏ, làm thủ công tại Lisbon và giao khắp châu Âu.
Nhận diện thương hiệu
Đèn của bạn — mỗi dòng một chiếc: tên, lớp hoàn thiện, giá
Chụp gốm, Màu cát, $240 Chóp đồng thau, Xước mờ, $310
Ảnh đèn
Đọc kế hoạch trước khi duyệt. Yêu cầu Claude thay đổi thêm trong cùng phiên cho đến khi cửa hàng thật sự là của bạn.
Dùng ảnh đèn của riêng bạn
Thay ảnh demo trước khi bán
16 ảnh đèn demo lấy từ bản demo của component gốc, và bản quyền của chúng chưa được xác minh. Với cửa hàng thật, hãy dùng ảnh bạn sở hữu hoặc đã được cấp phép.
Mỗi đèn cần hai ảnh: một khi tắt và một khi bật. Thanh ray bật đèn bằng cách chuyển mờ giữa hai ảnh, nên chúng phải khớp nhau tuyệt đối:
Cùng máy ảnh, vị trí và tỷ lệ — chỉ ánh sáng thay đổi
Nền trong suốt, không có bóng đổ dính vào ảnh
Dây đèn đi ra từ cạnh trên, ở chính giữa
Ảnh dọc, cùng một khung cho mọi ảnh — bản demo dùng 557 × 900 px
Nếu không dùng Supabase, hãy đặt từng cặp vào thư mục này trong dự án của bạn, đặt tên theo sản phẩm — ví dụ dome-enamel-off.webp và dome-enamel-on.webp — rồi nhờ Claude dùng chúng và xuất bản. Nếu dùng Supabase, bạn tải các cặp lên trong trang admin, và trang đó sẽ kiểm tra giúp bạn.
public/lamps/
Xuất bản các thay đổi của bạn
Claude gửi cửa hàng đã tùy chỉnh của bạn lên kho GitHub của riêng bạn, và Hostinger build lại website trực tuyến từ đó. Khi bạn hài lòng với các thay đổi, hãy gửi:
Xuất bản các thay đổi của tôi
Kiểm tra cửa hàng, sau đó commit các thay đổi và đẩy chúng lên nhánh main của kho của bạn.
Publish my customized store. 1. Make sure npm run lint, npm run typecheck and npm run build all pass, and fix anything that fails. 2. Make sure .env.local and any other secrets are not committed. 3. Commit all my changes with a clear message and push them 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.
Xem các thay đổi hoạt động trực tuyến
Chờ vài phút để Hostinger build lại cửa hàng của bạn Tải lại địa chỉ trực tuyến của bạn Lướt dọc thanh ray — mọi đèn đều sáng và dây đèn chạm vào ray Nhấn vào một đèn và kéo bộ chỉnh độ sáng — chỉ có ánh sáng thay đổi Mở trang cửa hàng và một trang sản phẩm, rồi thêm một chiếc đèn vào giỏ hàng
Sau vài phút vẫn chưa thấy thay đổi? Mở Settings & Redeploy trong Web App của bạn và redeploy. Thấy có gì đó lạ? Hãy mô tả cho Claude ngay trong cùng phiên, yêu cầu nó sửa mà không đụng đến thanh đèn, rồi xuất bản lại.
Muốn xem trước trên máy tính của bạn? (Tùy chọn)
Bạn không bắt buộc phải làm vậy. Nếu muốn xem các thay đổi trước khi xuất bản, hãy nhờ Claude trong phiên của bạn: cài các dependency, khởi động development server bằng npm run dev và cho tôi địa chỉ local. Cần có Node.js 22 trở lên, và Claude sẽ báo nếu thiếu. Cửa hàng trực tuyến của bạn không bao giờ phụ thuộc vào bước này.
Kết nối Supabase & Admin (Tùy chọn)
Tạo một dự án Supabase
Cửa hàng trực tuyến của bạn đã chạy được mà không cần Supabase — nếu chỉ cần vậy, hãy chuyển thẳng sang Bước 5. Hãy kết nối nó để quản lý sản phẩm, ảnh, tồn kho và đơn hàng trong trang admin riêng của bạn tại /admin.
Tạo tài khoản Supabase
https://supabase.link/r4gdwhi
Nhấn New project — khu vực nào và gói Free đều được Lưu mật khẩu cơ sở dữ liệu ở nơi an toàn Khi dự án sẵn sàng, sao chép Project ID của nó
Supabase Project Settings General
Cho phép Claude truy cập dự án của bạn
Cách này cho phép Claude thiết lập cơ sở dữ liệu giúp bạn. Trong phiên LUMIÈRE của bạn ở Claude Desktop:
Mở Customize trong thanh bên, rồi Connectors, và thêm Supabase — hoặc nhấp + bên cạnh ô nhập prompt rồi chọn Add connectors Nhấp Connect và chấp thuận quyền truy cập trong trình duyệt, chọn tổ chức chứa dự án của bạn Bắt đầu một phiên Local mới trong cùng thư mục, để Claude nhận kết nối
Bạn đăng nhập qua Supabase trong trình duyệt — không có khóa hay mật khẩu nào được đưa vào prompt. Kết nối này có thể thấy mọi dự án trong tổ chức bạn chấp thuận, vì vậy prompt tiếp theo giới hạn Claude chỉ làm việc với dự án LUMIÈRE của bạn.
Không tìm thấy trình kết nối Supabase, hoặc không muốn dùng? Bỏ qua prompt tiếp theo và dùng phần thiết lập thủ công ở cuối Bước 4: cùng ba tệp SQL đó, không cần trình kết nối.
Nhờ Claude thiết lập cơ sở dữ liệu
Thiết lập LUMIÈRE trên Supabase
Claude áp dụng các migration và sản phẩm của bộ khởi đầu, kiểm tra bảo mật và lưu trữ, rồi đưa cho bạn hai giá trị công khai để dùng cho Hostinger.
Connect this LUMIÈRE store to my Supabase project {{PROJECT_REF}}. Work only on that project and never touch any other. Read README.md ("Connect Supabase"), docs/SUPABASE.md and docs/ADMIN.md first, and follow them. 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. How to reach Supabase: - Use the Supabase connection in this session if it is connected. - Otherwise, use the Supabase CLI if I'm signed in, with the commands in docs/SUPABASE.md. - If neither works, stop and tell me exactly what to do. Never ask me for a password, an access token or a Secret key. Tell me what each step does before you run it: 1. Apply supabase/migrations/20261101120000_catalog_and_admin.sql, then supabase/migrations/20261101150000_orders_checkout.sql, in that order. They create the tables, the Row Level Security policies and the lamp-photos storage bucket. 2. Run supabase/seed.sql to add the three collections and the eight pendants. 3. Verify the setup: Row Level Security is on for every table, the lamp-photos bucket exists, there are 8 products and 3 collections, and Supabase's security advisor shows no warnings. Fix nothing by hand: tell me what's wrong. 4. Read my Project URL and Publishable key from the project, and show them to me as NEXT_PUBLIC_SUPABASE_URL and NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY, ready to copy into Hostinger. 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/ADMIN.md, check that the row exists, and tell me to sign in at /admin on my live store.
Project ID Supabase của bạn
abcdefghijklmnopqrst
Claude hỏi trước mỗi thao tác — hãy đọc, rồi cho phép. Nó dừng lại khi đến lượt bạn.
Tạo tài khoản quản trị
Supabase Authentication Users
Nhấn Add user, rồi Create new user Nhập email và một mật khẩu mạnh Để nguyên Auto Confirm User được đánh dấu và tạo người dùng Cho Claude biết email quản trị của bạn — không bao giờ cho mật khẩu
Supabase Authentication Sign In / Providers
Tắt Allow new users to sign up và lưu — cửa hàng không có tài khoản khách hàng
Chưa có kết nối Supabase? Thiết lập thủ công
Trong dự án Supabase, mở SQL Editor. Chạy ba tệp này từ thư mục LUMIÈRE của bạn, theo đúng thứ tự. Với mỗi tệp, mở ra, sao chép toàn bộ, dán vào một query mới và nhấn Run. Chạy lại tệp nào cũng an toàn.
supabase/migrations/20261101120000_catalog_and_admin.sql
supabase/migrations/20261101150000_orders_checkout.sql
supabase/seed.sql
Sao chép Project URL và Publishable key từ Connect vào Hostinger, như hướng dẫn ở bước tiếp theo. Sau khi tạo người dùng admin ở trên, hãy thêm email của bạn bên dưới và chạy đoạn này trong SQL Editor:
Đặt tôi làm quản trị viên
insert into public.admin_users (user_id) select id from auth.users where email = '{{ADMIN_EMAIL}}';
Email quản trị của bạn
you@example.com
Thêm các biến Supabase trên Hostinger
Cửa hàng trực tuyến của bạn đọc Supabase qua hai giá trị công khai. Trong dashboard của Web App, mở Environment Variables và thêm:
NEXT_PUBLIC_SUPABASE_URL NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY
NEXT_PUBLIC_SUPABASE_URL
Project URL của Supabase
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY
Publishable key của Supabase
Claude đã đưa cho bạn cả hai giá trị. Chúng cũng có trong Connect.
Mở Connect
https://supabase.com/dashboard/project/_?showConnect=true
Chỉ giá trị công khai
Tuyệt đối không thêm Secret key hay service_role key của Supabase vào đây. Mọi biến bắt đầu bằng NEXT_PUBLIC_ đều hiển thị được trong trình duyệt.
Lưu các biến — Hostinger sẽ build lại cửa hàng của bạn với chúng Chưa build lại? Redeploy từ Settings & Redeploy Mở /admin trên địa chỉ trực tuyến của bạn và đăng nhập bằng email admin
Trong trang quản trị, bạn thêm và sửa sản phẩm, tải lên các cặp ảnh OFF/ON, và quản lý tồn kho cùng đơn hàng. Mỗi lần lưu đều cập nhật thanh ray, trang cửa hàng và các trang sản phẩm.
Kết nối tên miền & ra mắt
Kết nối tên miền của bạn
Hostinger Your Web App Connect domain
Nhập tên miền và làm theo các bước kết nối Tên miền đăng ký ở nơi khác? Thêm các bản ghi DNS mà Hostinger hiển thị tại nhà đăng ký tên miền Giữ lại mọi bản ghi email hiện có Đợi đến khi tên miền hiện là đã kết nối và SSL đang hoạt động
Thay đổi DNS có thể mất vài giờ để đến được với mọi người — tối đa 24 giờ.
Kết nối tên miền tùy chỉnh với website hoặc Web App của bạn
Hướng dẫn đầy đủ, bao gồm cả tên miền đăng ký ở nơi khác.
/video/connect-a-custom-domain-to-your-website-or-web-app
Chuyển sang tên miền của bạn và deploy lại
Cửa hàng xây dựng các liên kết, sitemap và đăng nhập bảo mật của trang quản trị từ chính địa chỉ này. Trong bảng điều khiển Web App, mở Environment Variables và đổi nó thành tên miền của bạn:
NEXT_PUBLIC_SITE_URL
NEXT_PUBLIC_SITE_URL
Tên miền của bạn, bắt đầu bằng https://
Lưu biến Deploy lại từ Settings & Redeploy, để địa chỉ mới được đưa vào bản build Chờ build hoàn tất
Kiểm tra cửa hàng trực tuyến
Mở tên miền của bạn và kiểm tra:
Địa chỉ bắt đầu bằng https:// và có biểu tượng ổ khóa
Lướt thanh ray làm đèn sáng lên, và mọi ảnh đều tải được
Trang cửa hàng và trang sản phẩm mở được, và một chiếc đèn được thêm vào giỏ hàng
Có Supabase: bạn đăng nhập được tại /admin
Một địa chỉ bịa ra, như /shop/no-such-lamp, hiển thị trang không tìm thấy
Cửa hàng đèn của bạn đã trực tuyến trên tên miền riêng. Để thay đổi sau này, hãy chỉnh sản phẩm trong trang admin — hoặc nhờ Claude thay đổi mã và xuất bản: Hostinger build lại cửa hàng của bạn sau mỗi lần push lên main.