bd369825c3475ee63c5d23078d88c3da38710570
Replace default gray previews so clothing and accessories in the shop grid reflect each layer's saved color, including skin tone for eyes.
HaBit
Hackathon app for building habits while growing a customizable digital self (your bit).
Stack
- Next.js 16 (App Router)
- Supabase (auth + Postgres)
- Tailwind CSS + shadcn/ui
- Vercel deployment via GitHub Actions
Features
- Auth — email/password sign up and login
- Onboarding — focus-topic quiz, then required avatar customization (DB-gated)
- Avatar — layered sprite bit with per-layer styles and hex colors, naming, equipped shop items
- Habits — catalog + custom habits, streaks, coin rewards
- Daily quiz — wellness sliders and journal that affect bit mood
- Shop — buy and equip items from
shop_items/user_items(hats, glasses, backgrounds) - Profile — focus topic, vibe, and reminder preferences
User flow
- Sign up / sign in
- Step 1: onboarding quiz (focus topic only)
- Step 2: avatar customization (required confirm + bit name)
- Main app via bottom nav: Bit, Habits, Quiz, Shop, Profile
Onboarding progress is stored in the database (profiles.onboarding_quiz_complete, profiles.onboarding_complete, avatar_state.avatar_customized) and mirrored in auth metadata for fast client checks.
On the Bit tab, users view their digital self and open Style to customize name, look, and room.
Local setup
-
Install dependencies:
npm install -
Create local environment file:
cp .env.example .env.local -
Add Supabase values to
.env.local:NEXT_PUBLIC_SUPABASE_URL= NEXT_PUBLIC_SUPABASE_ANON_KEY= -
Apply migrations locally (Supabase CLI):
supabase db reset -
Start the app:
npm run dev
Avatar customization data
Stored in avatar_state:
| Column | Purpose |
|---|---|
avatar_name |
Bit display name |
skin_color |
Skin layer hex color |
pants_style / pants_color |
Pants variant id + hex |
shoe_style / shoe_color |
Shoes variant id + hex |
torso_style / torso_color |
Torso variant id + hex |
eye_type / eye_color |
Eyes variant id + hex |
head_style / head_color |
Head variant id + hex |
avatar_customized |
True after onboarding confirm |
equipped_items |
Shop item ids currently equipped |
Description
Tamagotchi-style habit tracker built at the Calgary Hackathon - Next.js 16, Supabase, OpenRouter
Languages
TypeScript
96.3%
CSS
1.9%
PLpgSQL
1.7%
JavaScript
0.1%