World Vibe Web
The distributed app store for vibe-coded projects. Browse, discover, and install open-source apps from across GitHub.
Sweet Bags — gift bags filled with a random assortment of sweets and a kind message label.
CommerceTypeScript · HTMLGitHub @ASamad150821OnlineOwner 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
This is an application whereby users can order gift bags containing sweets for numerous occasions.
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
A storefront for a single product: the Sweet Surprise Gift Bag — a bag filled with a random
assortment of sweets, finished with a personalised kind-message label.
Frontend on Vercel, API on Render, Postgres on Neon. The API runs on a free instance that sleeps
when idle, so the first request after a quiet spell can take up to a minute.Read the full README ↗A storefront for a single product: the Sweet Surprise Gift Bag — a bag filled with a random assortment of sweets, finished with a personalised kind-message label.
Live demo: https://gift-sweets-bag-application.vercel.app
Frontend on Vercel, API on Render, Postgres on Neon. The API runs on a free instance that sleeps when idle, so the first request after a quiet spell can take up to a minute.
Checkout is real: orders are validated, priced, and stored by a hand-written backend — no payment is taken, but nothing here is faked or mocked.
Frontend: React + TypeScript, Vite, Tailwind CSS v4, React Router, Zustand, Zod.
Backend (server/): Node.js + Express + TypeScript, PostgreSQL + Prisma, JWT auth
(bcryptjs + jsonwebtoken), Zod validation, Vitest + Supertest. Written from scratch — no
backend-as-a-service.
See TUTORIAL.md for how the frontend was built and TUTORIAL_BACKEND.md for how the backend was built — both walk through the project step by step so you can rebuild it yourself.
# 1. Database (pick one)
docker compose up -d # or: brew services start postgresql@16
# 2. API
cd server
cp .env.example .env # then set a real JWT_SECRET (see TUTORIAL_BACKEND.md)
npm install
npx prisma migrate dev --name init
npm run dev # http://localhost:4000
# 3. Frontend (new terminal, repo root)
cp .env.example .env
npm install
npm run dev # http://localhost:5173
Needs Docker Desktop, or Postgres 16 installed with Homebrew. A fresh Homebrew install also
needs the giftbags role and database creating by hand; see
TUTORIAL_BACKEND.md step 1 for the commands.
14 tests (Vitest + Supertest) cover registration and login, and the orders API: auth checks,
server-side pricing that ignores a client-sent price, users only seeing their own orders, and
deleting an order. They run against a real Postgres database, giftbags_test (see
TEST_DATABASE_URL in server/.env), which is wiped between tests so it never touches your
dev data.
One-time setup: create the test database, then apply the migrations to it:
# Docker:
docker compose exec postgres createdb -U giftbags giftbags_test
# Homebrew:
psql postgres -c "CREATE DATABASE giftbags_test OWNER giftbags;"
cd server
DATABASE_URL="postgresql://giftbags:giftbags@localhost:5432/giftbags_test" npx prisma migrate deploy
Then run the tests:
cd server && npm run test
If you see Database "giftbags_test" does not exist, the one-time setup above hasn't been run
yet on this machine.