Inspiration
What it does
How we built it
Challenges we ran into
Accomplishments that we're proud of
What we learned
What's next for UNPILE
Inspiration You open your to-do list and see an essay, school fees, a message you keep avoiding, laundry, and a call to mum. Twelve things all need doing, and you end up doing none of them. That's task paralysis, and a longer, tidier list only makes it worse. Most productivity apps add more structure. We wanted an app that hides the pile and shows you one thing.
What it does Unpile turns an overwhelming to-do list into one calm next step.
Brain dump: type or speak everything, as messy as you like. Unpile pulls out the tasks, due dates ("friday", "tmrw", "24th oct"), urgency ("asap", "!!"), how long each takes ("40 min") and tags. It skips filler like "ugh ok, so much to do". One thing: say how much energy and time you have, and Unpile suggests one task with a plain-language reason why. "Show me another" never nags. Shrink it: big tasks become 3–5 small steps you can edit. The first step always takes 5 minutes or less. Focus mode: a calm full-screen timer with a gentle chime and a "Not finished — that's okay" button. Park and undo: you can undo every destructive action. Wins: shows what you finished, with no streaks to break. Share update: drafts a friendly or formal progress message for your tutor, team or family, based on what you actually did. Comfort settings: dyslexia-friendly fonts, text up to 130%, high contrast, calm motion, keyboard shortcuts and screen-reader support. Private and offline: no account, no server, no tracking. You can install it as an app (PWA). How we built it Unpile is a static React 18 + TypeScript (strict) + Vite app with no backend, no network calls and no AI APIs. Everything runs on your device.
All the logic lives in pure, tested modules: parse (brain dump to tasks), pick (chooses one task and explains why), shrink (a table of step recipes), store (a reducer that saves to localStorage) and share (writes the progress message). Date-dependent functions take now as an input, so the tests always give the same result. An offline service worker caches the app, and fonts are bundled locally so nothing is fetched from a CDN. There are 21 Vitest unit tests and 21 Playwright end-to-end runs on desktop and mobile, including axe accessibility checks (WCAG 2 AA). GitHub Actions runs the tests and build on every push, and the site is hosted on Cloudflare Pages. Challenges we ran into Parsing messy human text without AI: telling "call mum tmrw!!" apart from "ugh so much to do", and reading relative dates correctly, took a lot of rules and edge-case tests. Explaining the pick: suggesting a task was easy. Giving a reason a stressed person would trust ("it's due tomorrow and fits your 20 minutes") was harder. Split tasks: keeping steps consistent took care. Only the first open step can be acted on, finishing every step completes the parent task, and parking a step parks the whole task. Tone: we rewrote copy many times to remove guilt. There are no "you're behind" messages, no red overdue alarms and no streaks. Accomplishments that we're proud of It works fully offline and never sends your data anywhere. We treated accessibility as a feature from day one: real form controls, visible focus, 44px tap targets, reduced-motion support and axe-tested pages. The whole flow takes about 30 seconds. Dump your list, get one thing, start a 3-minute step. The "Not finished — that's okay" button, which captures the feel of the whole app. What we learned Fewer choices help more than better organisation when someone is overwhelmed. Good rules and careful tests can do a lot of what people reach for AI to do, and they're faster, private and predictable. Writing kind, plain copy is as much work as writing code. What's next for UNPILE More shrink recipes, plus support for languages other than English Optional sync between devices without giving up privacy (end-to-end encrypted) Gentle reminders you choose yourself, never nagging Calendar import so time estimates fit your real day Testing with students and people with ADHD to tune the picking logic
Built With
- axe-core
- cloudflare-pages
- css3
- fontsource
- github-actions
- html5
- javascript
- localstorage
- node.js
- playwright
- pwa
- react
- service-worker
- typescript
- vite
- vitest
- web-speech-api
Log in or sign up for Devpost to join the conversation.