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:

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

  • A month of Flutter
  • A month of Flutter: create the app
  • A month of Flutter: configuring continuous integration
  • A month of Flutter: continuous linting
  • A month of Flutter: upgrading to 1.0
  • A month of Flutter: initial theme
  • A month of Flutter: no content widget
  • A month of Flutter: a list of posts
  • A month of Flutter: extract post item widget
  • A month of Flutter: post model and mock data
  • A month of Flutter: rendering a ListView with StreamBuilder
  • A month of Flutter: Stream transforms and failing tests
  • A month of Flutter: real faker data
  • A month of Flutter: rendering network images
  • A month of Flutter: FABulous authentication
  • A month of Flutter: configure Firebase Auth for Sign in with Google on Android
  • A month of Flutter: configure Firebase Auth for Sign in with Google on iOS
  • A month of Flutter: Sign in with Google
  • A month of Flutter: mocking Firebase Auth in tests
  • A month of Flutter: delicious welcome snackbar
  • A month of Flutter: navigate to user registration
  • A month of Flutter: user registration form
  • A month of Flutter: testing forms
  • A month of Flutter: setting up Firebase Firestore
  • A month of Flutter: awesome adaptive icons
  • A month of Flutter: set up Firestore rules tests
  • A month of Flutter: Firestore create user rules and tests
  • A month of Flutter: WIP save users to Firestore
  • A month of Flutter: user registration refactor with reactive scoped model
  • A month of Flutter: the real hero animation
  • A month of Flutter: a look back

  • Category: Development