Ecommerce Template
Next.js·React 등으로 만든 최신 전자상거래 템플릿
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Mobile-first AI TikTok carousel idea builder for CHRGD.
Open http://localhost:3000 on mobile or in DevTools mobile view (360px+).
Production lives on the apex domain https://getchrgd.co.uk.
/hub and /portal are the old names for the last two and redirect. Moving the
site to a new domain, or changing these paths, touches Stripe, every OAuth
provider and Cloudflare DNS — the runbook is docs/DOMAIN_SETUP.md.
Works out of the box — no API keys needed. All 8 builder stages run with realistic CHRGD example data.README 전문 보기 ↗Mobile-first AI TikTok carousel idea builder for CHRGD.
npm install
npm run dev
Open http://localhost:3000 on mobile or in DevTools mobile view (360px+).
Production lives on the apex domain https://getchrgd.co.uk.
| Path | What it is |
|---|---|
/ | The quiz — the front door |
/shop | The shop |
/bundles/[slug] | Bundle landing pages |
/myhub | Customers' subscription hub (sign-in required) |
/founderhub | Founders Hub — the business (founder password required) |
/hub and /portal are the old names for the last two and redirect. Moving the
site to a new domain, or changing these paths, touches Stripe, every OAuth
provider and Cloudflare DNS — the runbook is docs/DOMAIN_SETUP.md.
Works out of the box — no API keys needed. All 8 builder stages run with realistic CHRGD example data.
Copy .env.example to .env.local and add:
OPENAI_API_KEY — enables live idea generationServer-side only. Every OpenAI call goes through a route handler, so the key
never reaches the browser — don't add a NEXT_PUBLIC_ copy of it. The
NEXT_PUBLIC_ prefix inlines a value into the JavaScript bundle served to every
visitor, which for an API key means publishing it.
Add to .env.local:
GOOGLE_SERVICE_ACCOUNT_EMAILGOOGLE_PRIVATE_KEYGOOGLE_SHEET_IDGOOGLE_SHEET_TAB (default: Content Pipeline)Share your Sheet with the service account email.
Which products the shop, quiz and hub serve:
NEXT_PUBLIC_DATA_SOURCE=mock # mock | real
mock (default) — the built-in sample catalogue, plus anything added from PowerBody.
Every journey works without adding a single product.real — only the products you have added from the PowerBody feed. This is the shop
you actually sell, and it starts empty: add products in Hub → Products → Add products.No credentials are involved, so this can't silently fall back. Flip it at runtime in the
Founders Hub (Settings → Catalogue). A previous storefront integration was the old
"live" side of this switch and has been removed — a stale shopify or auto value reads
as mock, so an old deploy degrades quietly.
Reading products and writing orders are two separate switches, so the catalogue can run fully live while every order is still simulated:
SUPPLIER_SOURCE=powerbody # mock | auto | powerbody — catalogue, stock, prices
POWERBODY_API_URL=https://www.powerbody.co.uk/api/soap/
POWERBODY_API_USER=... # all three are required
POWERBODY_API_KEY=...
SUPPLIER_ORDERING=simulate # simulate | live — does "Send" really place an order?
Both default to the safe option and can be flipped at runtime from the Founders Hub
(Settings → Supplier, where both switches live). live ordering also requires the live
supplier — mock SKUs are sample data. See docs/POWERBODY_API.md.
Customer accounts (hub sign-in), sessions, subscriptions, feedback and portal
edits persist in a database — zero-config SQLite locally, and Postgres
automatically when DATABASE_URL is set (required on serverless / Vercel, where
SQLite doesn't persist). Email + password works out of the box; social sign-in
is available at both the hub login and the checkout account gate for Google,
Microsoft, Amazon, Facebook, X, Discord, LinkedIn, GitHub (all free to set up)
and Apple (needs a paid Apple Developer account). Each one appears only once its
credentials are set — add GOOGLE_CLIENT_ID / GOOGLE_CLIENT_SECRET and
"Continue with Google" shows up. See docs/BACKEND.md (includes the Vercel
deploy steps).
Order and subscription confirmations carry the same printed receipt the website shows, and every change to someone's plan is written to them too. Everything is queued in the database and listed in Founders Hub → Emails, which is both the send queue and a searchable log of every email that has ever gone out.
Once a provider is configured, receipts send themselves and everything that
reports a decision — a swap, a price rise, a plan settled — waits in the hub for
a founder to read it first. A receipt has no judgement in it and is expected
within seconds of paying; the rest is occasionally wrong and worth reading before
several hundred people do. NOTIFY_AUTO_SEND moves that line either way. With no
provider at all, everything waits and is copied out by hand.
Two ways to actually send. NOTIFY_SOURCE=gmail goes through the Google
Workspace account the business already has — no third-party service, 2,000 a day,
and the Founders Hub has a Connect Google Workspace button that does the
OAuth round trip for you. NOTIFY_SOURCE=resend uses a dedicated provider, worth
it once bounce data or volume start to matter. Both use an HTTP API rather than
SMTP, because Vercel blocks outbound port 25 and SMTP from a serverless function
hangs rather than fails.
Setting NOTIFY_DOMAIN puts each kind on its own address —
orderconfirmation.noreply@, subscriptions.noreply@, billing.noreply@ — with
replies going to the real contact inbox. The setup guide for both routes is
docs/EMAILS.md.
The quiz collects special category health data (pregnancy, medication, allergies) under Article 9, so the handling of it is deliberate rather than incidental:
docs/DPIA.md R6). Leave it unticked and
the health answers are refused on tap, dropped at commit, and stripped again
server-side; the quiz carries on and still builds a plan.
src/components/legal/HealthDataConsent.tsx, enforced in
src/lib/legal/health-data.ts./api/cron/daily. Windows live in RETENTION
(src/lib/legal/content.ts) and are read by both the privacy notice and the
job, so the notice cannot promise a period the code does not enforce.src/lib/db/erasure.ts.The paperwork is docs/DPIA.md and docs/PROCESSORS.md (Article 30 record,
processor register and transfer position). Both carry 🔲 markers for the
decisions and facts still needed before go-live.
npm test # 3,530 unit tests
npm run e2e # the browser suite — every product, every journey, no keys needed
npm run e2e starts its own server against the app's mock modes and drives a
real browser through the quiz, the shop, bundles, checkout, My Hub, the Founders
Hub and the Partners Hub, including a rendered-output pass that catches text and
icon faults the unit suite cannot see. It is written up in
docs/E2E_AUTOMATED_PLAN.md; the manual walkthrough for the parts that need real
money and a real supplier is docs/E2E_TEST_PLAN.md.
Next.js 16 · App Router · TypeScript · Tailwind CSS v4 · SQLite / Postgres · PowerBody dropship API · Stripe · OpenAI API · Google Sheets API