Originally published on bendyworks.com.
Recently Uri Shaked wrote an inspiring article about his experience publishing a blog post each day for a month. I've decided to combine his great idea with my goal of becoming a better Flutter developer. For the month of December, I will be building a Flutter app and writing a daily blog post about the process.
My goals
- Become a better Flutter developer
- Practice writing concise blog posts
- Practice writing project requirements
What I am building
For this challenge I will be building Birb, an image sharing social network dedicated to birds. An Instagram for birds, if you will.
Since I have not built the app yet, I don't actually know how much will get accomplished in December. Here are my planned MVP features:
- Global stream page of all posted images
- User authentication
- Image posting
- User profile page
- Individual image page
- Comments on image page
If I finish the MVP, I'll add more features. Some potential features, in no particular order:
- Push notifications
- #hashtags on images
- A/B Testing
- Themes
- Friendship graph/following
- Friends stream of images
- Liking images
What to expect
Every day* I will create a new blog post describing my most recent progress. Over the month these small steps will hopefully add up to a nice app. The blog posts will mostly be short and to the point, covering a small widget or feature.
As this will be an ongoing development project where I will be experimenting with different patterns, don't expect everything to be implemented perfectly the first time. There will be refactors and bad choices along the way. I will, however, be following best practices like writing tests, running CI, linting, etc.
If you are new to professional development worfklows, you can follow the process and get a peak into how projects can be run. I will be writing the stories and implementing the features and my colleague Pearl will be reviewing progress and code.
Technologies
Some of the technologies I plan to use in Birb:
- Flutter (duh)
- Firebase Firestore for a database
- Firebase Auth for user authentication
- Firebase Cloud Storage for hosting images
- Firebase Cloud Functions for serverless computing
- Material Design for aesthetics
- Device media APIs
How can I be a part of it?
What to be more involved? Here are some areas to start:
- Open issues with suggestion of better approaches or ideas for the app
- Follow along with the series and build your own app
- Follow @abraham and @pblatteier notifications of new posts
- Share this on Twitter
- Star the GitHub repository
See you tomorrow when I create the initial Flutter app.
P.S., if you are in the Madison area, come to GDG Madison's Flutter Live Viewing Party on December 4th.
*Posting every day is my intention but I may take some days off.