A month of Flutter

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.

Posts in this series