Ecommerce Template
Next.js·React 등으로 만든 최신 전자상거래 템플릿
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Web app di ordine-e-ritiro per Cheebo (smashburgeria a Roma): il cliente compone il suo ordine, sceglie una fascia di ritiro, paga online e riceve un codice di ritiro; il personale gestisce ordini, cassa, incassi e menù da un pannello admin. Cuore del sistema è un motore di capacità della piastra (13 patty per finestra da 10 minuti) che rende i tempi di ritiro affidabili e impedisce l'overbooking.README 전문 보기 ↗
Web app di ordine-e-ritiro per Cheebo (smashburgeria a Roma): il cliente compone il suo ordine, sceglie una fascia di ritiro, paga online e riceve un codice di ritiro; il personale gestisce ordini, cassa, incassi e menù da un pannello admin. Cuore del sistema è un motore di capacità della piastra (13 patty per finestra da 10 minuti) che rende i tempi di ritiro affidabili e impedisce l'overbooking.
Stack: Vite · React 18 · TypeScript · Firebase (Firestore + Auth) · Stripe · funzioni serverless su Vercel.
Cliente (/) — sfoglia il menù, configura i panini (formato, menu con bibita,
extra, rimozioni, sostituzioni), aggiunge special a disponibilità limitata,
sceglie l'orario di ritiro, paga con Stripe Checkout e ottiene codice di
ritiro, indirizzo con "come arrivare" e conferma via WhatsApp.
Admin (/admin) — pannello a schede:
La cassa e gli export non sono documenti fiscali: nessuna trasmissione di corrispettivi. Il collegamento al registratore telematico (POS-RT) è un lavoro a parte.
Il client non invia mai i prezzi, solo la configurazione del carrello. Il server è l'unico a fissare prezzi e capacità, e la conferma arriva dal webhook, non dal redirect del browser:
POST /api/create-booking — ricalcola dal menù reale, in transazione occupa
piastra e stock, crea un hold con scadenza, apre Stripe Checkout, torna l'URL./pagamento/ok?session_id=….POST /api/stripe-webhook (sola fonte di verità): su
checkout.session.completed crea l'ordine e il codice di ritiro; su
checkout.session.expired rilascia lo slot.GET /api/order-status finché il webhook conferma.src/
lib/ dominio e accesso dati
dispatch.ts motore piastra (puro, testato)
schedule.ts calendario dei servizi e sessioni prenotabili
menu.ts modello prodotto, configuratore, carrello
booking.ts resolveCart: ricalcolo autoritativo lato server (puro, testato)
orders.ts prenotazione/stream Firestore + startCheckout
menuStore.ts CRUD del menù
settings.ts impostazioni dell'attività (settings/app)
export.ts report incassi
firebase.ts init Firebase + costanti del locale
whatsapp.ts messaggio e link wa.me
pages/
Prenotazioni.tsx sito cliente
AdminCassa.tsx pannello admin a schede
EsitoPagamento.tsx esito del pagamento con polling
main.tsx router (/, /admin, /pagamento/ok, /pagamento/annullato)
api/ funzioni serverless (Vercel + Firebase Admin + Stripe)
create-booking.ts order-status.ts stripe-webhook.ts
_lib/ admin.ts stripe.ts holds.ts
scripts/ seed / reset / verifica-regole (girano da Node)
firestore.rules regole di sicurezza
tests/rules.test.mjs test delle regole (richiede l'emulatore Firestore)
/api)npm install
Copia il template e compila con i valori del tuo progetto:
cp .env.example .env.local
Le VITE_* sono pubbliche (finiscono nel bundle client). STRIPE_SECRET_KEY,
STRIPE_WEBHOOK_SECRET, FIREBASE_SERVICE_ACCOUNT e APP_URL sono solo server.
firebase deploy --only firestore:rules.npm run seed (richiede l'enforcement App Check temporaneamente spento).Le funzioni /api sono servite da vercel dev, non dal dev server di Vite. Su
Windows è comodo dev.bat, che carica le env server in sessione e avvia Vercel:
vercel dev # serve app + funzioni su http://localhost:3000
In una finestra separata, l'inoltro del webhook Stripe:
stripe listen --forward-to localhost:3000/api/stripe-webhook
Prova il flusso con la carta di test 4242 4242 4242 4242.
Nota:
vercel devnon inietta.env.localnelle funzioni serverless — vanno caricate nell'ambiente della shell prima dell'avvio (dev.batlo fa).
npm test # test unitari del dominio (non serve Firebase: il motore è puro)
npm run build # type-check + build di produzione
Il type-check delle funzioni serverless è separato:
npx tsc -p api/tsconfig.json
I test delle regole (tests/rules.test.mjs) richiedono l'emulatore Firestore
(npm run test:rules, serve Java 11+).
https://<dominio>/api/stripe-webhook (con il suo whsec_).APP_URL = dominio di produzione..env, .env.local, service account) non sono versionati
(.gitignore); nel repo c'è solo .env.example con i placeholder.sessions/orders all'admin e holds è server-only.