QuesToDo turns tasks into quests. Finish one, earn EXP, and your pixel-art adventurer levels up — 81 unlockable parts, 52 skills, 16 achievement titles, and daily streaks. Underneath it is a real task manager: four repeat modes, due times, priorities, nested folders, search, drag & drop, undo, and a 30-day trash. Your tasks are stored on-device with SQLite — no account, no sync. Free to download, with an optional premium tier that removes the banner ad and unlocks a statistics screen.
ElevenAgents by ElevenLabsScale conversations without scaling your team
Promoted
Maker
📌
Hi everyone — I'm Hajime, a solo developer in Japan. This is the first app I've published on the App Store.
My problem was never writing the to-do list. It was caring about it. A checkbox gives you nothing back. So I rebuilt the reward loop I actually respond to — the one from the JRPGs I grew up on. Finish a quest, earn EXP, watch a pixel-art adventurer level up, unlock a new sword. That is the entire premise.
Underneath the RPG layer it's a real task manager: three difficulty tiers that change how much EXP a task is worth, four repeat modes (daily, chosen weekdays, biweekly, every N days), due dates with times, priorities, genres, nested folders, cross-folder search, eight sort orders, drag & drop reordering, undo for completions, and a 30-day trash. On top of that sit levels, five stats you allocate yourself, 52 skills (18 spells, 15 techniques, 13 titles, 6 passives), 16 achievement titles, streaks, and 81 avatar parts that unlock as you level.
Every sprite is generated by scripts I wrote rather than drawn by hand — 108 PNGs in total: 81 avatar parts plus 27 frames of cast effects (9 effect families × 3 frames). I can't draw, but I can write a deterministic pixel compositor, which is why the art stays consistent and why adding a part is a code change instead of an art session.
The design decision I'd defend hardest: your task data is local. SQLite on the device, no account, no backend, nothing about your tasks synced anywhere, and no way for me to read what you wrote. To be precise about the rest, since I'd rather say it than have you find it: the app does use Google AdMob for the banner and PostHog for anonymous usage analytics, so it is not network-silent. The App Store privacy label spells out exactly what that covers.
Some honest numbers: 23 days from first commit (July 16) to release (August 7). About 13,700 lines across 86 TypeScript files — that count includes blank lines and comments, so treat it as a size, not a productivity metric. 366 automated tests in 25 suites. The database schema is at version 9: the initial schema plus eight append-only migrations, and I keep a full EXP-recalculation function so the cached level can always be rebuilt from the raw event log.
Three rounds with App Review. The first rejection was guideline 3.1.2 — I ship an auto-renewable subscription but hadn't put a Terms of Use link in the App Store description. The second was 2.1: the App Tracking Transparency prompt never appeared for the reviewer. I was requesting authorization while the app hadn't reached the active state yet; iOS quietly returns "not determined" without presenting anything, my code read that as a refusal, and it never asked again. Waiting for the active state, detecting non-presentation, retrying, and adding a manual ATT entry point in Settings fixed it. Third submission was approved.
I built it with an AI coding agent as a pair, spec-driven: five design documents are the source of truth, and I worked one milestone at a time with real-device testing between each. The architecture calls, the rejections, and every "no, that's wrong" were mine.
It's free. There's an optional premium tier (monthly, yearly, or one-time) that removes the banner ad and unlocks a statistics screen, but the RPG, the avatar system, and every task feature are in the free version — nothing you need in order to use the app is behind the paywall.
One caveat before you tap: it isn't available in the EEA yet. I haven't built the GDPR consent flow for ads, so I excluded those storefronts rather than ship something non-compliant. Available in 146 countries, iPhone, and the interface ships in English and Japanese.
Two things I'd genuinely like feedback on: does the RPG layer read as motivating, or as noise bolted onto a to-do app? And for a fully offline app, how much do you actually miss sync? Happy to go deep on the Expo / SQLite / StoreKit side as well — ask me anything.