Released My First Flutter App – Started as a Personal Project, Now It’s Public!
Hey Flutter devs,
A few months ago, I shared a TestFlight link in another subreddit for an app I built for myself using Flutter. The feedback was incredible—about 150 people gave it a try, and the positive responses really motivated me to take it a step further and release it publicly.
About the App:
This app started as a personal project to solve a problem I was dealing with. I didn’t plan to release it initially, but after seeing how helpful others found it, I decided to refine it and share it with a larger audience.
Tech Stack:
- State Management: Bloc (with Hydrated Bloc). I love Bloc, but I only use cubits—I find blocs a bit bloated unless I need niche event handling. For persistence, I use Hydrated Bloc, which makes it super easy to cache and restore the state.
- Code Generation: Freezed. Freezed has been amazing for managing immutable data classes.
- Navigation: AutoRoute. I absolutely loved working with AutoRoute and strongly prefer it over GoRouter. Deep linking was incredibly easy to implement, and although the code generation can be a bit annoying, the overall experience was fantastic.
- Animations: Flutter Animate. I don’t even have words to describe how much I love this library. It makes creating simple animations so easy and clean—it’s just awesome. If you haven’t tried it yet, I highly recommend it.
Project Structure:
I use a feature-first structure for the app, where each feature has its own:
- Cubits
- Repositories
- Services
- Widgets
- Pages
Additionally, I have a core package that houses shared functionality like routing, authentication, and other core utilities. This approach helped keep things modular and easy to manage as the app grew.
What I Learned:
This project is deeply personal to me and gave me 100% creative freedom. I didn’t plan to monetize it, so I didn’t feel the need to compromise on the design. In the long run, this approach helped me develop a clearer and more concrete vision for the project.
I only worked on it when I felt creative, and I spent time developing features purely as a form of self-expression. I added little animations, Easter eggs, and designed even the smallest details with care.
I’m not sure if this is great advice for everyone, but I loved the process. It reminded me that my skills can be a way to express myself—not just tools for working in a soulless corporate environment.
Here’s the link if you want to give it a try (sadly only iOS for now):