Mito
Tasks, a timer, a semantic-zoom calendar and an AI mentor in one local-first app.
- Role
- Analysis, architecture, development with Claude Code
- Period
- 2026.09 → …
- Status
- Production
- Stack
- React · TypeScript · Zustand · Dexie / IndexedDB · Supabase · Node.js · LLM API · GitHub Actions
Interface
01 / 08Problem
People who want to learn something new start on a wave of motivation — they draw up a schedule and keep notes — and drop it a few days later. Planning takes effort, and the plan and the time actually spent live in different places.
Solution
Mito brings tasks, a calendar (the plan) and a timer (the fact) into one app and shows how well the plan matched reality. Planning can be handed to an AI mentor — it proposes a schedule, and the user decides what to add.
A personal project where I am the customer, the analyst and the architect. The code was written with Claude Code following an 11-stage roadmap and an architecture decision log; every stage closed only after my review.
Goals
- 01Tasks, the plan and the actual time in one place
- 02Offline work and sync across devices
- 03A day plan in one click — but into the calendar only after confirmation
Features
Key requirements
| ID | Requirement | Priority |
|---|---|---|
| FR-01 | Changes are saved on the device and are not lost offline. | Must |
| FR-02 | An edit on one device appears on the others within seconds. | Must |
| FR-03 | A user sees and changes only their own data. | Must |
| FR-04 | The mentor's plan reaches the calendar only after confirmation. | Must |
| FR-05 | If a model fails, the request goes to the next one. | Should |
| NFR-01 | AI keys stay on the server; IP addresses are stored only as hashes. | Must |
| NFR-02 | Mentor limits: 10 requests per minute and 60 per day per address, 800 per day overall. | Must |
| NFR-03 | The browser talks only to the Mito domain. | Must |
| NFR-04 | Deploy only after type checks, lint and tests pass. | Should |
Scenarios
- 01Edits a task on the phone — the change is saved locally and queued
- 02After 0.8 s the queue goes to the server in one request
- 03The server keeps the version if it is newer
- 04The laptop gets a notification and pulls the changes
- 01Clicks “Plan my day” and adds a wish
- 02The mentor server checks the limit and asks a model
- 03The server drops invalid blocks from the answer
- 04The user picks blocks — they land in the calendar
Timeline
- 2026.09Stages 0–4: foundationDesign system, IndexedDB data layer, tasks, timer, calendar.
- 2026.09Stages 5–6: zoom and analyticsA calendar with continuous zoom from day to year; plan vs actual; custom charts.
- 2026.09Stage 7: accounts and syncSupabase, change queue, server revisions, Realtime. First deploy to the VPS.
- 2026.09Stage 8: AI mentorOwn Node service, model chain, day plan, chat and briefing.
- 2026.10Stage 9: learning mentorGoals with stages, weekly reviews, knowledge checks, “Mentor” and “Assistant” modes.
- NextStages 10–11PWA and performance, then Windows and Android with Tauri.
Challenges
Outcome
The app runs in production — guest mode, accounts with sync, an AI mentor on real models. 9 of 11 stages are done — about 20,000 lines of TypeScript and 160 automated tests.
Next — a PWA and desktop and mobile versions with Tauri.