Sumchenko Works
RUРусская версияToggle theme
P—01 · DevelopmentProduction

Mito

Tasks, a timer, a semantic-zoom calendar and an AI mentor in one local-first app.

DemoCode
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 / 08
TodayThe home screen: the day at a glance, an hourly plan and the mentor’s morning briefing on where to start.

Problem

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

  1. 01Tasks, the plan and the actual time in one place
  2. 02Offline work and sync across devices
  3. 03A day plan in one click — but into the calendar only after confirmation

Features

Tasks with subtasks and smart listsQuick-add: #project, @tag, priority and estimate from one lineTimer and PomodoroSemantic-zoom calendar: from hours to a yearPlan vs actualStatistics on custom SVG chartsGuest mode and account syncAI mentor: day plan, chat, learning goalsRU / EN, light and dark themes

Key requirements

IDRequirementPriority
FR-01Changes are saved on the device and are not lost offline.Must
FR-02An edit on one device appears on the others within seconds.Must
FR-03A user sees and changes only their own data.Must
FR-04The mentor's plan reaches the calendar only after confirmation.Must
FR-05If a model fails, the request goes to the next one.Should
NFR-01AI keys stay on the server; IP addresses are stored only as hashes.Must
NFR-02Mentor limits: 10 requests per minute and 60 per day per address, 800 per day overall.Must
NFR-03The browser talks only to the Mito domain.Must
NFR-04Deploy only after type checks, lint and tests pass.Should

Scenarios

Signed-in userSync across devices
  1. 01Edits a task on the phone — the change is saved locally and queued
  2. 02After 0.8 s the queue goes to the server in one request
  3. 03The server keeps the version if it is newer
  4. 04The laptop gets a notification and pulls the changes
Guest or userDay plan from the AI mentor
  1. 01Clicks “Plan my day” and adds a wish
  2. 02The mentor server checks the limit and asks a model
  3. 03The server drops invalid blocks from the answer
  4. 04The user picks blocks — they land in the calendar

Timeline

  1. 2026.09Stages 0–4: foundationDesign system, IndexedDB data layer, tasks, timer, calendar.
  2. 2026.09Stages 5–6: zoom and analyticsA calendar with continuous zoom from day to year; plan vs actual; custom charts.
  3. 2026.09Stage 7: accounts and syncSupabase, change queue, server revisions, Realtime. First deploy to the VPS.
  4. 2026.09Stage 8: AI mentorOwn Node service, model chain, day plan, chat and briefing.
  5. 2026.10Stage 9: learning mentorGoals with stages, weekly reviews, knowledge checks, “Mentor” and “Assistant” modes.
  6. NextStages 10–11PWA and performance, then Windows and Android with Tauri.

Challenges

Models make mistakes and invent thingsThe server validates the answer and drops blocks with wrong times or unknown tasks. The model sees tasks as refs t1, t2, and study days are enforced by code, not by the model.
Free-tier LLM limitsA chain Groq 120b → Groq 20b → Gemini Flash → Flash-Lite that switches on limits, overload or errors. The order is based on measurements.
The sync cursor must not skip changesRevisions are server-assigned, and one user's writes are serialised with an advisory lock, so revisions follow commit order.

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.

Technologies

Next · P—02TechRent