Inspiration
I built 5 Minute Grove because starting is usually the hardest part of focused work for me. A 25-minute Pomodoro can feel like too much of a commitment, but five minutes feels believable.
The useful part is what happens when those five minutes end. I can stop without failing, or - now that I already have some momentum - choose to add another five. I wanted to build a focus timer around that decision instead of treating it as a secondary feature.
The grove came from wanting focused time to leave behind something calm and visible. It grows one leaf for every completed minute, without streaks and penalties.
What it does
5 Minute Grove is a local-first focus timer for approachable starts and voluntary continuation.
You can choose a task, start with five minutes or set another duration, and focus until the timer ends. At that point, you can finish or add another five minutes. Stopping is always a valid outcome.
Completed minutes grow a persistent grove. Every minute adds a leaf, and a tree matures after 60 leaves - one hour of focused time. Mature trees remain in the background while a new tree begins growing.
The app also includes a lightweight Focus list, task editing and reordering, hashtags, session recovery, themes, sounds (made by me), notifications, data import and export, and ten interface languages. Everything is stored locally in the browser, with no account required.
How I built it
The app is built with SvelteKit, Svelte 5, TypeScript, Tailwind CSS, and Vite.
Tasks, completed sessions, and grove progress are stored in IndexedDB. Active timer recovery and device preferences use localStorage. The timer uses absolute timestamps so it remains accurate when the tab is in the background or the browser is closed.
The grove is drawn with inline SVG and CSS. It progresses through several plant and tree shapes, adds leaves in real time, and moves mature trees into the background.
Paraglide JS provides type-safe localization. The app is statically built and deployed to GitHub Pages at 5minutegrove.com.
I used Codex with GPT-5.6 as a coding collaborator throughout the hackathon. I worked in short iterations: describing a feature or problem, reviewing the implementation, testing it in the browser, and refining it. I made the product and design decisions, drew the logo, created the sounds, and directed the final interactions and copy.
Challenges I ran into
Iterating with Codex was exceptionally easy, it implemented almost every idea just as I wanted it on first 1-2 tries.
The hardest part was making grove SVG art, Codex kept messing it up a little bit here and there, and making it look too simplistic or unnatural. I had to micromanage it that part. I'm more or less happy how it turned out, though I'd still prefer using a human-made art.
Because of that I decided to draw the app logo myself, which was very difficult for me, as I'm not an artist, but I think took a little less time than it'd be with Codex.
I also made the sounds myself, which took a lot of trial to find the right instrument (in the end I went with a simple Xylophone-like instrument).
Accomplishments that I'm proud of
I managed to make an entire app with a real use case for myself (and hopefully others) in less just 7 days. My favorite thing is that I found myself actively using the app while I was making it.
Also I learned how to draw simple vector art in Inkscape. This is a huge accomplishment for me, as I am more of a programmer than an artist.
What I learned
While I'm not new to web development and iteration-based workflow with Codex, the project gave me a new perspective on development of small personal apps, and how approachable it is now with open AI models.
What's next for 5 Minute Grove
I'd like to expand the grove with a dedicated modal that can show all trees at once (instead of the current 6-tree cap). I'm exploring whether to do that with canvas or Three.js (I almost want go for the latter because of the tree pun :-D).
I want to explore porting the app to mobile, it would fit wonderfully there.
Optional account-based sync may come later, but for now the app will remain local-first.
Built With
- gpt-5.6
- indexeddb
- openai-codex
- paraglide-js
- svelte-5
- sveltekit
- tailwind-css
- typescript
Log in or sign up for Devpost to join the conversation.