A curated marketplace where craftspeople sell their work. Premium, invite-only, built for makers who care about provenance.
- Framework: Next.js 16 (App Router), React 19, TypeScript
- Styling: Tailwind CSS v4, shadcn/ui v4
- Database: PostgreSQL + Prisma ORM
- Auth: Auth.js v5 (magic link via Resend)
- Payments: Stripe Connect
- Infra: Docker, Cloud Run, Cloud SQL, GCS, Sentry
cp .env .env.local # Edit with your values
npm install
npx prisma generate
npx prisma db push
npm run dev # http://localhost:3000| Variable | Purpose |
|---|---|
DATABASE_URL |
PostgreSQL connection string |
AUTH_SECRET |
Auth.js JWT encryption key (≥32 chars) |
AUTH_URL |
App URL for callback resolution |
STRIPE_SECRET_KEY |
Stripe secret key |
STRIPE_WEBHOOK_SECRET |
Stripe webhook signing secret |
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY |
Stripe publishable key |
RESEND_API_KEY |
Resend API key for magic link emails |
NEXT_PUBLIC_APP_URL |
Public app URL |
NEXT_PUBLIC_SENTRY_DSN |
Sentry DSN (optional) |
GCS_BUCKET |
GCS bucket for uploads (optional for dev) |
GCS_SERVICE_ACCOUNT_KEY |
GCS service account key (base64) |
npm test # vitest (unit)
npm run test:e2e # playwright (E2E)
npm run test:e2e:full # seed + E2E
# Single E2E file:
npx playwright test e2e/purchase.spec.tsdocs/P1.3-provisioning.md— Real service provisioning guide (Matt, start here)docs/runbook.md— Operational runbook (rollback, refund, webhook replay)STATUS.md— Current P-level progressWORKLOG.md— Session-by-session log
# Build Docker image
docker build -t atelier .
# Staging — push to main, CI auto-deploys via deploy-staging.yml
# Production — tag v* and push, CI deploys with approval gate via deploy-prod.ymlSee .github/workflows/ for the full deploy pipelines (Cloud Run + Cloud SQL migrations + gradual traffic shift with health gates).