BuildTeam Onboarding
Build · Life Organizer

LIFE ORGANIZER

VISION → QUEST → PHASES → OUTCOME

An offline-first life app: quests, a morning check-in, a journal, finance, a meal plan, and a coach that reads every other surface before it writes. Everything lives in Dexie + IndexedDB with optional Supabase sync. The AI runs on your own OpenAI key.

PWADexieSupabaseOpenAI
App Screens

Hover a phone to bring it forward.

22:45
Self-employed. Abroad. Free.

Tuesday, April 14

Quiet evening

I let go of what doesn't move me forward.

Your coach for today

Your finance quest has been stuck in phase 1 for 2 weeks. Today's a good day to log one expense — start small. Workout streak is alive: 4 days. Don't let it snap.

Daily Flow

☀️Start
🗺️Quests
📖Journal
💰Money
❤️Dating
•••More
01Home
22:45

My Quests

📖AI Agency
2/5

Paused

📖Legacy & Inheritance
1/4

Open

📖Relationships
1/5

Insight

📖Dating
33/5

Building self-worth

📖Finances
1/5

In the red

☀️Start
🗺️Quests
📖Journal
💰Money
❤️Dating
•••More
02Quests
22:45

Journal

1

What surprised you this week — for better or worse?

2

Which quest feels hardest right now, and why?

3

When did you last feel truly free?

🪶
📓

Free writing

Let your thoughts flow

☀️Start
🗺️Quests
📖Journal
💰Money
❤️Dating
•••More
03Journal
22:45

Finances

April 2026
📈

Income

3.200,00

📉

Expenses

2.840,00

💰

Balance

+360,00

📈 Log income
📉 Log expense
Recent
Rent890,00
Freelance project+1.200,00
Groceries REWE67,30
Spotify9,99
+
☀️Start
🗺️Quests
📖Journal
💰Money
❤️Dating
•••More
04Finanzen
React 19
Framer Motion
Dexie
Supabase
OpenAI
Tailwind
0

Coach Context Sources

0

Morning Rituals

0ms

Offline Latency

0%

Offline Reads

How the morning coach knows you

Before the OpenAI call, the app pulls a context packet from six sources — everything it already stores about you — so the coach answers to your actual week, not a blank prompt.

01
Nordstern

the long-term vision, short + full text

02
Quests

every active quest + its current phase

03
Journal

the last 5 entries, prompts + free text

04
Todos

outstanding tasks, up to 5 surfaced

05
Mantras

only the ones marked active

06
Morning rituals

last 7 check-ins — sport, meditation, wake time

07
Today's note

what's on your mind this morning

services/openai.ts
// Context-aware morning coach — no generic prompts
const [vision, quests, journalEntries, todos, mantras, checkins] =
  await Promise.all([
    db.vision.get('nordstern'),
    db.quests.toArray(),
    db.journalEntries.orderBy('date').reverse().limit(5).toArray(),
    db.todos.filter(t => !t.completed).toArray(),
    db.mantras.filter(m => m.active).toArray(),
    db.morningCheckins.orderBy('date').reverse().limit(7).toArray(),
  ])

const streak = checkins.filter(c => c.didExercise).length
// Assemble CONTEXT_PARTS, then call GPT-4o-mini with a coach system prompt

The radar that browses your own URLs

You add any URL as a source, and on refresh the app hits OpenAI's Responses API with the web_search tool: GPT opens the URL, pulls real events from the next seven days, and returns JSON the app renders as cards. No hardcoded feeds, no scraper to keep alive.

services/radar.ts
// Lifestyle Radar — AI browses your own URLs for events
const response = await client.responses.create({
  model: 'gpt-4o-mini',
  tools: [{
    type: 'web_search_preview',
    user_location: { type: 'approximate', country: 'DE', city: 'Berlin' },
  }],
  input: `Event-Scout for Berlin. Search ${source.url} for real events
           between ${today} and ${endDate}. Return JSON:
           [{ name, date, location, url, description }]`,
})

const events = JSON.parse(response.output_text)
// Dexie.radarEvents.bulkAdd(events) — reactive UI via useLiveQuery

Choices that shaped the build

  • Dexie holds the truth, Supabase only syncs

    Dexie is the source of truth, so reads are local and the app runs offline. An opt-in Supabase Auth sync pushes all 22 tables to a single user_data row for multi-device.

  • Build the context before the prompt

    Six parallel DB queries assemble your current state, then one OpenAI call runs against it. More code than a raw prompt, but that's what keeps the coach specific instead of generic.

  • A check-in instead of a streak counter

    Three quick checks — sport, meditation, wake time — plus a daily note. A streak punishes a missed day; this just records where today stands and moves on.

  • Live queries via dexie-react-hooks

    With useLiveQuerythe UI updates the moment the local DB changes — no refetch, no stale state, no spinner on everyday reads.

  • Bring your own OpenAI key

    No server-side proxy. Your key sits in settings and calls go straight from the browser with dangerouslyAllowBrowser. Not enterprise-grade, but you own the cost and the AI layer needs no infrastructure of its own.