Ecommerce Template
Next.js·React 등으로 만든 최신 전자상거래 템플릿
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Organize orders, pre-orders, payments, and shipments in one place.
PandaTrack is a web app for collectors who buy across multiple stores and channels. It turns scattered orders, tracking links, and upcoming payments into a single source of truth so collecting stays fun instead of chaotic.
PandaTrack is one product with two durable surfaces: a public landing and an authenticated collector app. Both are shipped and in active use; neither is a placeholder for the other.README 전문 보기 ↗Organize orders, pre-orders, payments, and shipments in one place.
PandaTrack is a web app for collectors who buy across multiple stores and channels. It turns scattered orders, tracking links, and upcoming payments into a single source of truth so collecting stays fun instead of chaotic.
PandaTrack is one product with two durable surfaces: a public landing and an authenticated collector app. Both are shipped and in active use; neither is a placeholder for the other.
/es, /en).Authenticated workspace for collectors who buy across many stores and channels:
See docs/product/README.md for the product-documentation tree and the source of truth for scope — docs/product/prd-01-public-landing/prd-01-public-landing.md and docs/product/prd-02-collector-app/prd-02-collector-app.md.
| Area | Technology |
|---|---|
| Framework | Next.js 16 (App Router) |
| Language | TypeScript |
| Styling | Tailwind CSS v4 |
| i18n | next-intl |
| Database | PostgreSQL (Neon) + Prisma 7 |
| Validation | Zod |
| Analytics | PostHog |
| Monitoring | Sentry |
| Deployment | Vercel (intended) |
.env.example to .env and set your values (database URL, optional PostHog/Sentry keys for analytics and errors).git clone <repository-url>
cd pandatrack
npm install
Create a .env file from the example and configure at least the database URL:
cp .env.example .env
# Edit .env and set DATABASE_URL and any optional keys (PostHog, Sentry).
Generate the Prisma client and sync the schema (development):
npm run db-push
For a clean reset (drops data):
npm run db-reset
npm run dev
Open http://localhost:3000. The app will redirect to the default locale (e.g. /es). Use /en for English.
| Command | Description |
|---|---|
npm run dev | Start Next.js dev server |
npm run build | Full deploy build: Prisma generate + migrate deploy + Next.js build |
npm run validate-build | Local validation: Prisma generate + Next.js build (no DB migrations) |
npm run start | Start production server (after build) |
npm run db-push | Push Prisma schema and generate client |
npm run db-reset | Force-reset DB and push schema |
npm run type-check | Run TypeScript check (tsc --noEmit) |
npm run lint | Run ESLint |
npm run prettier | Format code with Prettier |
npm run download-og-fonts | Download fonts used by OG image generation |
npm run smoke-image-intake | Manual only. Sends 3 real Gemini requests (costs a few cents) |
smoke-image-intake is never part of npm run test or CI, and it is the only check that catches
two failures nothing else can see. One is a mismatch between the request we build and what the
Gemini API accepts, which fails as an opaque HTTP 400 and breaks every extraction at once. The
other is a data-contract break: the model answers with a valid draft carrying amounts in the wrong
unit, so a purchase of S/ 59.90 is saved as S/ 0.59 and no schema notices. The script sends
synthetic receipts with known amounts and asserts the figures that come back. Run it by hand after
changing IMAGE_INTAKE_RESPONSE_SCHEMA, buildRequestConfig, the extraction prompt, the draft
contract, or the model id. It needs GEMINI_API_KEY and IMAGE_INTAKE_PAID_TIER_CONFIRMED in
.env.
pandatrack/
├── src/
│ ├── app/ # Next.js App Router
│ │ └── [locale]/ # Locale segment (es, en)
│ │ ├── (landing)/ # Public landing route group
│ │ │ ├── page.tsx
│ │ │ └── _components/ # Page-specific components
│ │ ├── (auth)/ # Sign-in, sign-up, password recovery, email verification
│ │ ├── (app)/ # Authenticated collector app (stores, orders, deliveries,
│ │ │ # dashboard, settings), each with its own _components/_actions
│ │ ├── terms/
│ │ ├── privacy/
│ │ └── globals.css
│ ├── components/
│ │ ├── core/ # Reusable UI (Button, Typography, etc.)
│ │ └── modules/ # Complex reusable (Modal, FaqAccordion, etc.)
│ ├── contexts/ # React context (e.g. Theme)
│ ├── i18n/ # next-intl config and locales
│ │ ├── locales/{es,en}/
│ │ ├── request.ts
│ │ └── routing.ts
│ ├── lib/ # Shared utilities, Prisma, constants
│ │ └── data/ # Per-domain query + mutation modules (see ADR 0015)
│ ├── hooks/ # Shared hooks
│ ├── types/ # Shared TypeScript types
│ └── queries/ # Prisma data access, one file per model (see ADR 0015)
├── prisma/
│ └── schema.prisma
├── docs/ # Product, design, and process docs
├── proxy.ts # Next.js 16 proxy (e.g. locale redirect, private-route auth gate)
└── next.config.ts
Route-level code (actions, hooks, utils, types) lives in _actions/, _hooks/, _utils/, _types/ next to _components/ for that route. See .agents/rules/project-structure.mdc for full conventions.
es, default) and English (en)./es and /en (default locale may be served at /).src/i18n/locales/{locale}/*.json; no hardcoded strings in components.useTranslations(), useLocale(), useMessages() in components; getTranslations() in server/non-React code.Details: docs/development/i18n.md.
| Document | Description |
|---|---|
| docs/product/README.md | Product docs index (PRD, FRDs, blueprints, work orders) |
| docs/design/README.md | Design system index (visual language, patterns, ADRs) |
| docs/development/i18n.md | i18n setup, locales, and how to add translations |
| docs/development/og-images.md | OG image generation conventions |
| docs/process/workflow-ai.md | AI delivery workflow (GitHub Epic/Slice first) |
| AGENTS.md | Guidelines for AI and human contributors |
.agents/rules/.npm run type-check, npm run lint, and ensure npm run validate-build succeeds.Proprietary. All rights reserved.