Built · one session, about ten hours
Dinner Time
A small app to plan a slightly complex dinner like a Sunday roast by working backwards from the time you want to eat, telling you when to start roasting the meat, when to par-boil the potatoes, etc.
Visit the app ↗ · Source on GitHub ↗
Built with: Ruby · melee · Spinel · SQLite · Durable objects · Web Push · Passkeys · PWA · vanilla JS
I have a recurring project management problem: I will often cook a roast dinner on Sunday for my parents, which involves managing a bunch of steps over a few hours. Inevitably my estimates are a bit wrong and dinner is later than I said.
But I’ve imagined how a custom timer app could solve this: I could specify the time I needed dinner ready for, then the duration of each step (20mins to par-boil the potatoes, 1hr to roast them), and it could work backwards to determine when each step needed to start. It’s not a radical approach to project management but it sure beats trying to do it in my head, remember those times, and keep watching the clock. This is what software is for and AI makes it trivial to produce (in total, I spent less time making this app than cooking the dinner the next day).
How it was built
It runs on melee, compiled to a native binary by Spinel. It’s the second app on there after the volleyball rotation trainer, and the first one I built as a standalone repo using melee’s own tooling the way anybody else would, rather than from inside the platform’s dev directory. That’s what a second app is for: it shook out a list of platform bugs and sent a fix back the other way.
Each dinner is a durable object with its own SQLite database and a timer, so the plan wakes up whenever a step is due. Notifications are sent over Web Push, which required some additional APIs over Spinel’s OpenSSL methods.
No javascript framework, no build step, no gems, no npm: one stylesheet, one script, ERB rendered on the server. 1,995 lines all in, tests included, designed and built in a single session. To authenticate myself, I even implemented passkey support into melee though the app itself is still single-user for the moment.