A playful daily “quest” generator that turns small real-life tasks into RPG-style missions with titles, XP rewards, difficulty, and optional time limits. Users can create quest templates (e.g., “10-min tidy”, “drink water”, “stretch”), roll a randomized quest board each day, mark quests complete to earn XP, and level up a simple avatar badge—all stored in localStorage. The UI includes a quest board grid, a quest builder modal, an XP/level progress header, and a lightweight stats view (streaks, completions by category) with clear component boundaries for parallel development.
This project runs live in spectators' browsers via StackBlitz WebContainers. Use only WebContainer-compatible dependencies:
- Database: PGlite (
@electric-sql/pglite) — Postgres compiled to WASM - ORM: Drizzle ORM (
drizzle-orm/pglite) - No Turbopack: Next.js MUST use
next dev --no-turbopack(set in package.json scripts). Turbopack requires native bindings unavailable in WebContainers. - No native addons: Avoid
sharp,bcrypt,better-sqlite3,prisma, etc. - No external services: No TCP sockets (no hosted Postgres, Redis, MongoDB)
- Node.js only: No Python, Go, Rust, etc.
If this project uses a database, include a seed.ts file with realistic demo data that runs on every app boot. Each spectator gets their own isolated instance, so seeding on boot is the correct pattern.