Gamified life skills education. SvelteKit + Deno + Supabase. AI generates personalized life roadmaps and customizes templates. Mac Mini for content AI.
| Component | Technology | Why |
|---|---|---|
| Frontend | SvelteKit | Quest UI with decision tree engine, progress tracking, mobile-first |
| Backend | Deno 2 + Oak | API for user progress, template generation, sponsor integration |
| Database | Supabase (PostgreSQL) | User profiles, quest progress, template storage |
| AI Content | Ollama (Mac Mini) | Personalized life roadmap generation, template customization per user situation |
| Template Engine | Puppeteer (PDF) + Docassemble | Fillable PDF forms and customized documents |
| Payments | Stripe | Subscriptions, school district billing |
| Resend | Onboarding, reminder emails, sponsor offers |
| users | ||
|---|---|---|
| id | uuid | |
| profile_json | jsonb | {age, income, state, housing_situation, dependents} |
| xp_total | integer | |
| points_balance | integer | Redeemable for sponsor rewards |
| life_roadmap_id | uuid (FK) | Generated personalized roadmap |
| quests | ||
|---|---|---|
| id | uuid | |
| slug | varchar(100) | taxes-101, apartment-hunt |
| title | varchar(255) | Display name |
| category | enum('taxes','housing','insurance','credit','investing','car') | |
| content_md | text | Narrative content + decision tree JSON |
| xp_reward | integer | |
| points_reward | integer | |
| templates | jsonb | [{name, url, fields_to_fill}] |
| prerequisite_quest_ids | uuid[] | |
| quest_progress | ||
|---|---|---|
| id | uuid | |
| user_id | uuid (FK) | |
| quest_id | uuid (FK) | |
| status | enum('not_started','in_progress','completed') | |
| choices_json | jsonb | Decision tree choices made |
| score | integer | 0–100 "did you survive" assessment |
| completed_at | timestamp | |
| life_roadmaps | ||
|---|---|---|
| id | uuid | |
| user_id | uuid (FK) | |
| milestones_json | jsonb | [{title, due_date, quest_id, status}] |
| generated_at | timestamp | |
| regenerated_at | timestamp | |