About Data & Portability Blog Featured Instances

Snowball

Snowball is a local-first work tracker that captures the full picture of how you work, not just what you shipped.

Snowball - Work Tracker
Contact me

Projects, sessions, and commits that compound

This project came from solving my own problems in my own way. Ever since I started developing my ideas with AI, I worked on many things. The more interesting it became, the more time I spent on it and it always led to an exhaustion phase in between. Sometimes, even after spending a lot of time on something, the result felt very small and I wondered where all that time went. Around that time, I came across the 10,000 hours snowball effect.

So I wanted some kind of history to look back at what I did. I did not want to use Jira, Trello, or any of those tools, because they never matched my way of working. No matter how I set them up, I would lose interest after a few days because it felt like a task I did not want to do.

So I moved to the simplest option: Google Tasks. A simple kanban system, available on all devices. I could jot down ideas or features in random moments and arrange them later when I was at my machine.

But when you use a system for a long time, you start to hit walls that are very specific to you. When those pain points began affecting my daily workflow, I started thinking about a simpler system that fits how I actually work.

That is how this idea started. A place to add things I want to do, with a kanban-like layout, but with more metadata than a plain checklist. That simple idea evolved into this project, and I named it Snowball. It made sense at that moment.

After the first version, I used it continuously for two weeks and always came back to it without hesitation. But as I kept using it regularly, I started asking for more features and slowly started adding them, one after another. Then I properly integrated it with GitHub, which is now my main place even as a designer.

The core

  • Project: To wrap everything like a folder, but not like a lifeless attempt that eventually turns into a forgotten graveyard.
    • A detail page with insights and sessions.
    • Project timeline.
    • Obsidian-like graph that shows the journey of commits and sessions.
  • Sessions: This is the middle layer and it is like a context-aware grouping of commits. You can start a session without any project.
    • A kanban layout of project-based columns and sub-grouping based on the status of each session.
    • A session detail page to view all commits and other details of that session.
    • Checklist feature to plan a session.
    • Description and links related to the session.
    • Insights generated by the commits logged.
    • GitHub integration to directly import commits of any repository or recent commits.
    • Session timeline showing the history of statuses.
    • A timer for custom things and a manual commit option.
  • Commits: This is where the real data lives. Time slots and metadata like effort, focus, mood, AI, billing. It is not just “I worked” but the full picture of how that work happened. I wanted to explore how everything came together. The main thing I wanted to know was how I finish an idea or a feature. Because sometimes it feels like I want to do it, but when I actually sit down to do it, it just drains my energy. I lose interest in it. So I wanted to find out where it is going wrong. The “AI Role” metadata is for that. Because sometimes, some LLMs derail everything, and when that happens, we may have to start again with a new chat. All of this tests our patience and directly and indirectly affects the work.
    • Import commits from GitHub. This makes everything easy. We only have to deal with the time and metadata if needed. The GitHub commit link will also be attached to the commit.
    • You can add multiple time slots in a commit, because work does not always happen in one sitting. Sometimes there are days between time slots. There was a time I closed a project because everything went out of control and I just hated it. But after a few days I came back, staged the changes so far, handed the task to a more powerful model, and it fixed the issues just like that. Maybe 10 minutes of work and I was back on track.
    • In the end, every hour adds up — billable or not, each one is a small commit in a bigger picture.

The reason I made projects optional for sessions, and commits mandatory within a session, is that even if it is loose or unnamed, there is always a reason you are working on something. A commit without that context would just be a time log, which defeats the whole point.


Not open source at the moment, because

  1. Code base is a bit messy.
  2. Also to share it as a proper project level structure, and other documentation feels a bit of work and I don’t want to get into that right now.

But I can add people who are interested to the private repository.. Just send me a message. Free, completely local, and you own your database (SQLite). Since it is a vibe-coded project, you just have to be willing to get your hands dirty with it when needed for your workflow.