Micro-Quest Board

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.

To Do30
Scaffold app stack

Run: npm create vite@latest . -- --template react-ts && npm i && npm i -D tailwindcss postcss autoprefixer && npx tailwindcss init -p && npm i class-variance-authority clsx tailwind-merge lucide-react && npx shadcn@latest init

by system

Add Tailwind globals

Configure Tailwind content and add @tailwind directives plus CSS variables in src/index.css.

by system

Setup shadcn utils

Add src/lib/utils.ts with cn() helper for Tailwind class merging.

by system

Create storage helpers

Implement src/lib/storage.ts with typed localStorage get/set and versioned key helpers.

by system

Define domain types

Add src/lib/types.ts defining QuestTemplate, QuestInstance, BoardDay, Stats, and AppState types.

by system

Seed default templates

Add src/lib/defaults.ts exporting a small set of starter quest templates.

by system

Random board generator

Implement src/lib/generator.ts to roll a daily quest board from templates with difficulty/XP/time rules.

by system

XP and level math

Add src/lib/progression.ts to compute XP totals, level, and progress-to-next-level.

by system

Streaks and stats math

Add src/lib/stats.ts to compute streaks and completion counts by category from history.

by system

Create app state store

Implement src/state/useAppStore.ts using React context + reducer with load/save to localStorage.

by system

Add state actions

Define reducer actions for template CRUD, roll board, complete quest, and reset day in useAppStore.ts.

by system

Wire store to app

Wrap <App/> with the provider and render a basic layout shell in src/App.tsx.

by system

Add app routes

Install and configure react-router in src/main.tsx with routes for Board and Stats pages.

by system

Create main layout

Add src/components/layout/AppLayout.tsx with header area and page container.

by system

Build XP header

Create src/components/header/XPHeader.tsx showing level badge, total XP, and progress bar.

by system

Create avatar badge

Add src/components/header/AvatarBadge.tsx rendering a simple level-based badge.

by system

Add daily roll button

Create src/components/header/RollBoardButton.tsx that triggers the roll-board action.

by system

Create quest board page

Add src/pages/BoardPage.tsx to assemble the header and quest board grid.

by system

Quest board grid

Create src/components/board/QuestBoardGrid.tsx to render today’s quests in a responsive grid.

by system

Quest card component

Add src/components/board/QuestCard.tsx to display quest title, category, difficulty, XP, and timer chip.

by system

Complete quest control

Add src/components/board/CompleteQuestButton.tsx to toggle completion and dispatch XP changes.

by system

Quest details modal

Create src/components/board/QuestDetailsDialog.tsx using shadcn Dialog for expanded quest info.

by system

Template list panel

Add src/components/templates/TemplateList.tsx to list templates with edit/delete actions.

by system

Quest builder modal

Create src/components/templates/QuestBuilderDialog.tsx with a form to create/edit templates.

by system

Template form fields

Add src/components/templates/TemplateForm.tsx with controlled inputs for title, category, difficulty, XP, and time limit.

by system

Category selector

Create src/components/templates/CategorySelect.tsx using shadcn Select and predefined categories.

by system

Difficulty picker

Add src/components/templates/DifficultyToggle.tsx for selecting difficulty with clear visual states.

by system

Create stats page

Add src/pages/StatsPage.tsx to show streaks and completion breakdown cards.

by system

Streaks summary card

Create src/components/stats/StreaksCard.tsx to display current streak and best streak.

by system

Category completions chart

Add src/components/stats/CategoryBreakdown.tsx rendering a simple Tailwind bar list by category (no chart libs).

by system

In Progress0
In Review0
Done0