BiteMine is a mobile-first growth platform for restaurants and contributors:
- Restaurants launch AI-assisted QR menus and social missions.
- Contributors complete missions, submit proof, and earn offchain
PICKS. - Gamification includes quests, levels, streaks, leaderboards, district progress, and referral rewards.
This repo is demo-ready with seeded data for local showcase flows.
- Next.js 14 (App Router), TypeScript
- Tailwind CSS + custom premium UI primitives
- Prisma + PostgreSQL
- Framer Motion + Sonner
- OpenAI Vision for menu extraction (optional at runtime)
npm installCreate .env in project root with at least:
DATABASE_URL="postgresql://<user>:<password>@localhost:5432/premium?schema=billion"
DEMO_MODE=true
OPENAI_API_KEY=<your_openai_key_optional_for_full_ai_menu_extraction>Notes:
OPENAI_API_KEYis required only for real AI menu extraction.- With
DEMO_MODE=true, fallback/demo flows are available.
npm run prisma:generate
npx prisma db push
npm run prisma:seednpm run devOpen the local URL shown in terminal.
- Landing:
/ - Public restaurant page (menu + missions):
/r/sunset-bistro - Public page with personalized progress:
/r/sunset-bistro?userId=<taskerUserId> - Player hub:
/player?userId=<taskerUserId> - Rewards center:
/rewards?userId=<taskerUserId> - Restaurant onboarding:
/restaurant/onboarding - Restaurant dashboard:
/restaurant/dashboard - Admin:
/admin
- Open
/and show the people-first hero + live sections. - Go to
/restaurant/onboarding, upload photos, share location, publish. - Open
/r/sunset-bistro?userId=<taskerUserId>, pick a mission, submit proof. - Go to
/restaurant/dashboard, approve pending submission. - Return to
/playerand/rewardsto show updated progress, quests, and referral loop.
npm run dev
npm run lint
npm run build
npm run prisma:generate
npm run prisma:seedPICKSare DB credits in this MVP (offchain), with service-layer design ready for future onchain sync.- Rewards are transaction-logged and idempotent through backend services.
- If dev server chunk errors appear, stop duplicate dev servers, delete
.next, then restartnpm run dev.