24 Hours from my pillow to Playstore
How i built and published an app in 24 hours using Flutter
It's something to say that Flutter speeds up application development, but it's still impressive how fast you can build an application using Flutter and publish it in a few hours only; I was able to build Flixa in only 24 hours using Flutter.
Learn more about flutter on flutter.dev
Context
It's Saturday morning, and almost every Saturday, I procrastinate and hang out on TikTok and Twitter in the morning when I wake up. I come across funny videos and I bookmark or favorite them (in the case of TikTok). I then want to share them with my friends except that on TikTok they are not shareable, and on Twitter, they are not downloadable. So I decide to use an existing service and there I find a lot of tools that do the job but I don't like the applications they propose.
Developer, and craft man, I decided to develop an alternative that's elegant and reliable.
Creative Process
For all my side projects, my creative process is the same. I start by defining a set of features; then I start prototyping on Figma I start by finding a name and a logo, then write down the key features before drawing UIs. Then I can work on my favorite part: Writing code!
Name and logo
For the name, when I don't have inspiration, I use Namelix to generate a name or find inspiration for a name.
For the logo, either I get inspired and it flows by itself, or I get inspired by what brandmark.io offers me. For Flixa, the inspiration came to me while browsing the fonts installed in Figma. It was then easy for me to do the rest of the work.
UI
As usual, I go on dribbble, I browse shots I like, I get inspired by them and I draw the interfaces I need on Figma. At the same time, I write on a Notion page all the ideas that come to my mind; I eliminate as I go along those that I find irrelevant and I keep the rest for future implementation.
Implementation
So I start with my favorite part. Usually, my heart is boiling and I'm very happy when it's time to give life to all the work done before. I create the project from my template, which contains logic for routing, i18n and other stuff (folder structure, dependencies, etc...)
The first version was very simple and only met my own needs: downloading and sharing TikTok and Twitter videos. It had no backend and therefore cost nothing. It was the best of all worlds. Everything was implemented on the mobile side and I had the little logic that allowed it to integrate multiple video providers (by that I mean social network APIs).
I created a build and shared it with friends who were interested via Firebase App Distribution. They were fans! The application was very easy to use and worked great. Moreover, it weighs only 8Mb.
I decided to go further and published the application on Play Store. During this time, I receive a lot of suggestions for evolution. I created a board on Notion to sort all these suggestions and ideas and prioritised them. That's how I managed to propose one update per week for 2 months.
Downloading content on social media is often disallowed depending on the platform's terms of use. On Flixa, a clear message is shown to remind users that the downloaded videos are intended to be used for personal purposes only.
Challenges
On my way, I met some difficulties that led me to remove the mobile side logic to create a backend. Having a little experience in typescript, I created a very simple backend to aggregate all the sources and return the same answer with only the link of the post containing the video you want to download.
I thought about a solution to protect the API and then integrated Firebase App Check which worked without any major problems, except it's not working on Huawei phones, which made me lose potential users, so I decided to look for alternatives, but I did not like how unnecessary the implementation was. So I decided to make a custom solution which is a simple layer on top of JWT. The problem was solved!
The application was online, and I was happy; few people were using it and it's normal: Nobody knew about its existence. I had to change that. During a discussion with a friend, he suggested a rather cunning idea that I liked: develop a bot that will cut the grass under the feet of the download bots on Twitter and propose a link to my application. The idea is that every time one of these bots is tagged, a Flixa bot responds with a link to my application.
I created a Twitter account, wrote the bot's code and the machine was launched. +2000 clicks of links shared by the bot, + 50 downloads in one week. The bot was successful. The bot's messages are calculated to take advantage of the drawbacks of other solutions; for example, due to Twitter API Quotas, sometimes they don't respond or respond hours later.
Fun fact: the bot has never been deployed on a server, it runs locally on a personal computer, in my living room.
Changes of course
Initially, the application was not supposed to contain ads. Except that the server bill was going to cost me 10€ per month including taxes. So I thought of a simple way to put ads on the application without degrading the user experience. He could do his downloads as usual and I would just put advertising blocks in strategic places. Again it was a success because, from the first month, the money earned from ads allowed me to pay the bills to run the backend. The application is autonomous, and not polluted by ads, everyone is happy.
To improve the referencing of the application, I added it to itsallwidgets, I made a web application (which is to be redone because it is made in web Flutter. I think explanations for this deserve a whole article). Flixa counts today more than 600 downloads with more than 500 active installations. There are still some improvements planned but the project is still functional and reliable.
What I learned
While building Flixa, I learned a lot more about Flutter and Dart.
Entry points
A flutter app can have multiple entry points as shown here: https://medium.com/@vad.pinchuk/multiple-entry-android-application-with-flutter-or-alternative-ways-to-restrict-access-to-1260e097ef9f
Dare!
I've been building side projects (apps) for moments now, however, I've never published any of them, especially those aimed at the general public. By publishing Flixa, I feel like I've unlocked the ability to dare, to let people see and judge my work without fear.
KISS!
While working on Flixa, I realized that you don't always need to optimize everything or make everything "perfect". the perfect app is the one that fits the user's needs, not the one I'm proud of technical achievements.
Thank you for reading.
Links:
Edit 18/05/2023
- Formatting fix