← Back to portfolio
Case Study · 09 / 17
Mobile · Flutter · 2025

Your to-do list,
as an RPG.

Statveil turns daily tasks into quests. Finish them and you earn EXP, level a character, and grow five stats; skip them and a daily reset takes its cut. A Solo-Leveling-inspired productivity app built in Flutter to run anywhere — and a study in making motivation a loop.

Role
Solo — design & Flutter build
Platforms
iOS · Android · web · desktop
Stack
Flutter · Dart · Material 3
Status
Open-source project
Fig. 09 · quest → EXP → level
09
The streak is the point. The character is just how you feel it.
§ 01 — The problem

A checklist has no memory of yesterday.

Plain to-do apps reset to zero every morning. Tick a box, it disappears, and nothing accumulates — there's no sense of momentum, no cost to skipping, nothing that makes today's effort feel connected to last week's. Gamified habit apps exist, but most bolt points onto a list without a real system underneath.

Statveil asks: what if completing tasks fed a character you actually cared about — one that levels up when you show up and slips when you don't?

Rewards build habits. Consequences protect them.

§ 02 — Design rules

What makes the loop work.

§ 03 — Architecture

Features, models, services.

The app is organised by feature — dashboard, quests — over a core of models and services. A Hunter model holds the character; quest services handle completion and EXP; a reset service enforces the daily rollover.

01 — Quests
Daily tasks
Assigned quests with difficulty tiers, completed from the dashboard.
02 — EXP
Reward engine
Completion grants tier-based EXP; totals accumulate toward the next level.
03 — Hunter
Character stats
STR, INT, AGI, VIT and WILL grow as the character levels up.
04 — Reset
Daily rollover
Automatic reset updates streaks and penalises missed quests.

Keeping the loop's rules in dedicated services rather than scattered through the UI means the EXP curve, level thresholds, and reset penalties are all tunable in one place — which matters a lot when the whole feel of the app is a balancing act.

§ 04 — The hard part

Balancing encouragement against punishment.

The design tension is real: too generous and levelling is meaningless; too punishing and one bad day wipes out a week, which just makes people quit. The daily reset is the riskiest mechanic — it has to sting enough to matter without being so harsh that a missed day feels like a reason to abandon the app entirely.

Tiered EXP is the counterweight: because a Boss quest is worth ten Easy ones, a user recovering from a slip can claw back progress with one meaningful effort rather than grinding trivia.

5
Character stats — STR, INT, AGI, VIT, WILL
4
Quest tiers from Easy (10) to Boss (100 EXP)
6
Platform targets from a single Flutter codebase
§ 05 — Making it feel like a game

Material 3, but make it a character sheet.

The dashboard leads with the character and its stats, not a list — the quests are how you level, but the screen is about who you're becoming. The Solo-Leveling framing gives the progression a narrative spine, which is what turns "I did my tasks" into "I levelled up." Material 3 keeps it clean enough to live on a home screen.

§ 06 — What I'd do differently

Three things, next time.