Flutter Development Details

About Michael

Who are you and how did you get into flutter app development?

Hey! I’m Michael Roudnitski, a 20 year old CS student from Toronto and I’ve recently published my first app, Tabs to the App Store and the Play Store.

My journey started in high school when I enrolled in a 10th grade computer science course after watching What Most Schools Don’t Teach on YouTube.

Fast forward five years later and I’m a third year CS student at York University. I’d completed two summer internships as a full stack developer at a local startup; working with tools ranging from AngularJS to Docker.

But being a third year student, I wanted to showcase all the skills I picked up outside of school with my first professional project. Something I could put on my resume to showcase my skills and help me stand out in a crowded internship search.

I wanted to showcase all the skills I picked up outside of school with my first professional project

Despite only having experience with web, I decided this next project had to be a mobile app for two reasons.

Most people prefer to use an app for (almost) everything. Apps are just more convenient than web sites. The hype around Flutter got me super excited and I wanted to see what it was all about 🚀.

One of the best ways to learn something is through a Udemy course. When I needed to learn Docker for a project at work — I found a great course by Stephen Grider for just $20. I breezed through each lesson at 1.5x speed and within a week, I learned a skill that people earn six figures a year for.

So when Udemy’s weekly sale came around, I picked up Angela Yu’s course on Flutter and learned all the fundamentals in a week’s time.

Now, it was time to think of an idea. The app would have to:

Be useful for my daily life. Otherwise I wouldn’t find motivation to work on it around my school schedule. It couldn’t be too ambitious. Otherwise it wouldn’t be done in time for internship applications.

I live with my girlfriend and naturally we end up splitting bills like WiFi, energy or groceries. One day we were at the store and I was wondering if she’d paid me back for last week’s groceries. So like any financially struggling college student — I hurried into my banking app to scroll through a week’s worth of transactions.

I concluded she’d never paid me back that $50. She couldn’t remember either so naturally, she concluded that she did pay me back.

Now, I knew what I would be making.

How Was Tabs Created?

So Tabs is the name I settled on for my app. The app was designed to simply keep track (keep tabs) of what people in your life owe you. For example, if you split a pizza with your friend and they didn’t feel like paying you back right away — you would open a tab so you don’t forget about it.

Tabs at its core, is an app to help you hold your friends accountable.

I also hoped Tabs might make people feel slightly better about their finances. When you open the app you’ll see the sum of money you’re expecting to receive. That number should hopefully make you feel better after seeing your expenses for the week.

When I sat down to design this app, I set out three requirements that I had to meet at all costs.

The app should be as simple as possible. This is a utility app and therefore should be quick and simple to use. The app should suit my needs. If I wasn’t working on features that would make it more usable for me then I was wasting my time. The app should be easy on the eye.

I started by making a wireframe in Figma… Dribbble.com was a great resource for finding design inspiration.

I started by making a wireframe in Figma to help me plan out how this might come together. Dribbble.com was a great resource for finding design inspiration. Designing the UI before implementing it saved me a lot of time going forward since I knew exactly which widgets to use and how I needed to lay them out.

Next, I had to architect how I would handle data. I could have written a simple backend with Express (NodeJS) and MySQL but then I would have to pay to host on a server and I would have to spend a lot of time developing the backend.

Instead, I opted to try out Firebase like most other people have done and (1 week after release) I don’t regret it! Firebase is incredibly simple and easy to use. The biggest benefits in my case were:

Setting up OAuth (Google/Apple sign in) was super easy. More than 70% of my users opted for OAuth rather than creating an account so it’s vital your app has this option.

Firebase will store the user’s data on-device in case the user isn’t connected to the internet.

I didn’t have a lot of time on my hands so being able to focus 100% of my development time to frontend was super important.

It’s free until your app gets popular. At the time of writing, Tabs has over 1300 registered users 🎉 and only uses ~1% of the quota included in the free package.

With all of this sorted out it was time to build the thing!

Mike’s Flutter Workspace – A Macbook Pro & VS Code

What made this challenging or unique?

The biggest difficulty I faced was staying motivated to consistently work on the app. There were days where the project was stuck on a bug and the last thing I wanted to do after a long day of doing school assignments and studying for tests was to fix it. Especially when I wasn’t going to make any money off this app.

I tried to commit at least a couple evenings a week and weekends — even if it was just an hour or two of development.

The one thing that kept me motivated was that I was making this app for myself. I started by getting an MVP up and running. I skipped user authentication to focus on being able to add and remove a tab.

don’t let an existing idea discourage you

Now I could use it in my daily life and I did. Everytime I opened the app all the motivation I needed was there. I’d use it and realize I wanted new things like to change the amount I’m owed, or I wanted suggestions to make creating the tab easier.

Once I was close to releasing the app though, I realized there were already some apps in this space. Splitwise in particular was very well established. When I tried to promote my app on Reddit, I got a lot of comments asking how Tabs is different from others in this space. My favourite comment was:

Splitwise.

My only response to each of these was basically to say…

Hey guys, it really doesn’t do anything these guys don’t do. It just does it in a different way that I find better.

most new ideas build off of old ideas

I didn’t make Tabs to make money and I don’t expect it to take off and compete with anyone. I’m just a student and I’m proud I made something cool and useful.

In response someone let me know they started writing an app like this too but gave up when they heard about Splitwise.

I personally think this is a bad attitude to have as a young developer. Yes it’s super cool if you think of a brand new revolutionary idea; but most new ideas build off of old ideas. You’re never going to create an exact clone of an existing app, your app will do some things the others don’t or do some things better or worse. The key here is that competition drives technology forward and so if you have an idea you’re passionate about — don’t let an existing idea discourage you.

How was Flutter for this?

Flutter was absolutely fantastic to work with! From beginning the project to publishing it.

Any time I faced a roadblock, there was someone else in the Flutter community who already experienced the same thing.

The selection of widgets you get out of the box is incredible and nearly any other widget is available on pub.dev.

I used Provider for my simple app

State management is a big topic in the Flutter community. I used Provider for my simple app. I have a Redux background so it took some time to get used to. But once you get used to subtle things like you can only access the state in the widget tree, it’s quite nice. I considered using BloC as well but it would have been overkill for such a simple app.

This is my first app so I don’t have a clue how it compares to react-native or other technologies but I am absolutely using Flutter for my next app.

What’s the big takeaway?

In summary, Flutter is a great tool to help you realize your vision. There’s so many great resources out there and such a great community to help you along the way.

don’t be discouraged if someone has already executed it. Instead, try to do it better!

If you have an idea you’re passionate about, don’t be discouraged if someone has already executed it. Instead, try to do it better!

Finally, if you’re in school like me; don’t expect the classroom to teach you everything. Get out there and learn by doing!

What’s next?

I feel blessed to have gotten some really great feedback on the app when I released it. I was shocked that people were even noticing such a simple app created by a nobody.

integrating 3rd party apps like Venmo or Cash App

I have a huge list of requests from people and I’ll be working on them over the next few months! Some exciting ideas are integrating 3rd party apps like Venmo or Cash App to transfer/request money from the app and also receipt scanning.

Where can we go to learn more?

The project is open sourced on my GitHub and you can reach me at michaelroudnitski@gmail.com for any questions or inquiries.