Inspiration
I needed a Pomodoro timer that let me track my productivity and keep count of pomodoros I was completing. And be able to have the counter states sync between my different devices. And work offline. Like a well built app should
What it does
- Pomodoro timer with intervals of 15min, 30min or 60min
- Automated timer that you can manually change or increments automatically on completion of a successful pomodoro
- Works completely offline
- Retains state when you come back later
- Installable PWA that mimics any native app
- Lets you save your timer counters to the IC and resume on another device using Internet Identity
How we built it
- using all modern web stuff because I don't like Apple/Google app store monopolies
Challenges we ran into
The "ic0.app" link has its own service worker so I'm having to use the "raw.ic0.app" URL to serve my own service worker that enables the app to be
- installable
- work without a network connection/when offline
Accomplishments that we're proud of
- Managing and orchestrating all the complex state that needs to be maintained for multiple timers and syncing that state to the browser storage and the IC storage. All this is done elegantly using state machines on the client side
- Supporting complete offline capability
- Elegant PWA comparable to any native app
What we learned
- Complex state management client side
- Using service workers for native offline first experiences
- Modern crisp good looking UI
What's next for Timer Counter
- Mechanism to support one time payments using ICP
- Mechanism to visualize time spent data. Pretty graphs to visualize time spent on different activities
Built With
- ic
- internetidentity
- svelte
- sveltekit
- tailwindcss
- xstate


Log in or sign up for Devpost to join the conversation.