A gamified productivity ecosystem built with Flutter and Go, designed to transform habit-tracking into a character progression system.
Beyond Simple To-Do Lists
Most productivity apps feel like chores. I built Not A Game to solve my own frustration with dry habit-tracking by turning self-improvement into a character management experience.
Instead of just checking off a task, you’re earning XP. Instead of just "being productive," you’re leveling up custom-defined skills. It’s a tool for users who want a granular, highly personal way to track their growth through a lens of play.
The Stack: Performance Meets Flexibility
I built this project to master the modern mobile-to-backend pipeline, focusing on clean architecture and high availability.
Flutter & Dart: I chose Flutter for its native performance and rapid UI iteration. Dart's expressive syntax allowed me to build a highly reactive interface that feels snappy on both iOS and Android.
Go Backend: I used Go for the backend services because of its modern tooling and efficiency. Leveraging Go routines, I isolated client communication into dedicated threads, ensuring the API remained responsive even under heavy load.
Data Integrity & Availability: * PostgreSQL & Supabase: The primary data store is PostgreSQL, with Supabase handling the secure authentication layer.
SQLite Fallback: To ensure a seamless experience offline, I implemented a local read-only fallback using SQLite. When the user reconnects, the system automatically synchronizes by pulling all updated records from the server.
State Management: The biggest technical hurdle was mastering the declarative nature of Flutter. By implementing Provider, I moved away from fighting the framework and instead created a clean, decoupled data flow that handles complex XP logic and UI updates efficiently.
Key Features
Fully Personifiable Skills: Users create their own skill trees. You can set specific XP rewards for different tasks, allowing a single action (like a morning run) to contribute to multiple skills (like "Endurance" and "Discipline") in varying amounts.
RPG Visuals: To drive the "game" feel, the UI includes dedicated XP bars for each attribute and satisfying level-up animations that provide immediate positive reinforcement.
The Contribution Calendar: Inspired by the GitHub contribution graph, this view uses a color gradient to represent total XP gain over the last month, giving users a visual "heat map" of their consistency and progress.
Engineering a Cohesive System
Developing Not A Game was a deep dive into building a complete ecosystem from scratch. Coordinating a high-performance Go backend with a reactive Flutter frontend meant solving real-world engineering hurdles—from managing thread-safe API communication with Go routines to ensuring data remains consistent across offline and online states. The result is a project that balances complex background logic with a polished, reliable experience.