The full online shopping experience, from bag to doorstep, with nothing charged and nothing shipped.
CommerceTypeScript · CSSGitHub @lovablesofaOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
A complete online store where nothing costs anything. Users browse, fill a bag, check out with a simulated
payment, get a real order confirmation email, and follow tracking updates (also by email) until "delivery".
Then they're asked whether they still want the item. The account page shows how much money they kept.
All brands and products are fictional. No card details are ever collected.
Next.js 16 (App Router, Server Actions) · TypeScript · Tailwind 4 · Drizzle ORM on libSQL (SQLite locally,
Turso in production) · Resend for email.Read the full README ↗A complete online store where nothing costs anything. Users browse, fill a bag, check out with a simulated payment, get a real order confirmation email, and follow tracking updates (also by email) until "delivery". Then they're asked whether they still want the item. The account page shows how much money they kept.
All brands and products are fictional. No card details are ever collected.
Next.js 16 (App Router, Server Actions) · TypeScript · Tailwind 4 · Drizzle ORM on libSQL (SQLite locally, Turso in production) · Resend for email.
pnpm install
cp .env.example .env.local
pnpm db:push # create tables in local.db
pnpm dev
Without RESEND_API_KEY, emails are not sent. They show up at http://localhost:3000/dev/outbox, including
the magic sign-in link.
TRACKING_SPEED=60 in .env.example turns hours into minutes, so a standard order is "delivered" in about
an hour. Use TRACKING_SPEED=1 for realistic timing.
| Piece | Where |
|---|---|
| Catalog (static, fictional) | src/lib/catalog.ts, art in src/components/product-art.tsx |
| Cart (httpOnly cookie) | src/lib/cart.ts |
| Magic-link auth, DB sessions | src/lib/auth.ts, src/app/login, src/app/auth/verify |
| Checkout & all mutations | src/app/actions.ts |
| Tracking timeline | src/lib/tracking.ts |
| Tracking emails | advanceOrders() in src/lib/orders.ts |
| Email templates / sending | src/lib/email/ |
| Savings dashboard | src/lib/savings.ts, src/app/account |
Each order stores its scheduled stage times when placed. advanceOrders() emails the latest stage reached,
and a conditional update on notified_stage makes sure each email goes out only once. It runs:
src/instrumentation.ts, on by default in dev; set INTERNAL_SCHEDULER=on on a long-lived server),GET /api/cron/advance with Authorization: Bearer $CRON_SECRET on serverless hosts. Call it every few minutes.RESEND_API_KEY and EMAIL_FROM on a verified domainAPP_URL set to the public URL (used in email links)DATABASE_URL / DATABASE_AUTH_TOKEN pointing at Turso (or another libSQL server), then pnpm db:pushCRON_SECRET plus a scheduler hitting /api/cron/advance, or INTERNAL_SCHEDULER=onTRACKING_SPEED=1