Prologue
I assume that since you clicked on this article, you’re contemplating creating your own app. Maybe you have a high-potential idea that you want to bring to life. I know the feeling. This article will give you a glimpse of what it’s like in practice.
The Real Introduction
One beautiful evening, I got a call. A friend, who along with another buddy does DJ gigs at weddings, asked if I could create an app for them. He wanted guests to be able to request songs via their phones instead of coming over to the booth (often quite drunk) and bothering them.
The idea seemed simple, and within an hour, the first prototype was ready, based on n8n as the backend and Airtable as the database. The guest-facing frontend was just an HTML form, which ChatGPT helped me generate. After a quick training session for my friends on where to see the orders and how to use the app, I considered the problem solved.
After a few weeks and several events, I got feedback: “It works great, it’s a game-changer and makes our job much easier.” Immediately, I started thinking, “Maybe I should turn this into a full-fledged app and finally make those millions?” With this optimistic thought, I started working.
Chapter 1 – Planning the App: From Idea to Action
I’ve been programming for a few years now and have learned that if I start writing code pumped with dopamine, without thinking through how it should work exactly, nothing good will come of it. It all needs to be planned.
Browsing countless YouTube videos on building your own apps, I came across several “Gurus” who had their tried-and-true methods for quickly creating and launching apps. They mostly used no-code/low-code tools but talked the most about marketing. I’m more of a creator at heart than a salesperson, so I generally left the marketing content for “later.”
As a backend developer, I decided to rewrite what I had built with n8n into proper code. I’d hook it up to a database, and bam, the API would be ready. Now we just needed the frontend.
Here’s where things got a bit complicated because I’m not much of a frontend developer. But hey, the “Gurus” recommended no-code tools. A quick research on the topic, and I didn’t like the pricing of something like Bubble – sure, you can do some things for free, but it’s better to pay. I’m the kind of person who prefers to make life harder rather than easier, especially if I can save some money. So I decided on AppSmith, a free, open-source low-code tool for making the kind of frontend I needed.
Chapter 2 – Getting to Work
Armed with the right tools and what I thought was a fully fleshed-out idea for the first version, I got to work.
First up was the backend. As I mentioned earlier, I had some experience, so it went relatively smoothly, even considering I tried to write clean code. Because, after all, if this takes off and starts making money, and I hire someone, I don’t want to be embarrassed 🙂.
Functions were rolling out one after another: logging in, some OAuth and Azure magic, generating QR codes for guests leading to the order form, customizable HTML forms so everyone could add their logo, etc. Sure, there were bugs here and there, but I could fix everything. Additionally, as a break from writing code, I was moving items around in AppSmith, creating the frontend. Here a modal, there a table, here a list. Sure, the list of ordered songs would blink every 5 seconds when it refreshed because it had to reload, but AppSmith couldn’t do it any other way. The login was a bit forced because there wasn’t a built-in mechanism, and it was more hacked together to work than a genuine honest login. BUT hey, it’s open-source and free – no complaints. And I kept coding…
Chapter 3 – First Reality Check
The app was progressing. It seemed you could log in; you could add songs, but the number of minor bugs and AppSmith’s limitations (and my inability to use it) started to pile up, giving an overall poor impression. BUT NEVER MIND!! It will improve. I even did marketing! From the whole list of things the “Guru” told me to do, I made a landing page with a waiting list for this masterpiece and went through about 300 ads on a popular classifieds site, messaging everyone with something like “Hey, I saw your ad, I’m creating an app that might be useful to you…”. Out of around 300 ads, 4 people signed up for the list, 3 of whom were friends… Marketing 1 – Adam 0.
My enthusiasm waned a bit, but at a social event from a training session I attended, I had the chance to talk to people smarter than me. One such person, who had already released several of his own products, that person put me in my place quite quickly.
How many users do you expect? – About 100. How much could it cost per month? – 50 PLN. Do you want to provide support, maintenance, answer emails with problems, issue invoices, etc., for 100 non-technical clients for 5000 PLN per month? – Uh… no.
When asked what to do next, he recommended making it open-source and releasing it for free. He suggested that it would give me more experience and I wouldn’t get bogged down in something that wouldn’t make money but would require a lot of work. I also asked him about marketing, because the “Guru” emphasized it so much. He said one that: “With good marketing, you can sell even a weak product, but no one will buy the best product if they don’t know about it.”
Chapter 4 – A New Hope
Okay, got it, I understand. And honestly, the frontend in AppSmith didn’t quite fit. Besides, “I can do it myself, can’t I?!” I decided to scrap the old project and start from scratch. I’ll write everything myself, use Blazor for the frontend because it keeps me in my comfortable C#, just with some component library to make it look nice.
Additionally, I’m giving up the centralized form where the client logs into a panel on a site I host. Since it’s open-source and free, host it yourself… or I’ll add a configuration and hosting service for some small $$$, why not? 🙂.
Let’s go. The backend was easy because I already knew what and how since I had gone through it before. Now with a firm resolution: ONLY MVP, no extra bells and whistles. Just song requests and that’s it! Maybe form customization – because they need to do it somehow – BUT ONLY THAT!… maybe QR code generation because I already have it written from the previous version – BUT NOTHING ELSE! – yeah, right.
Frontend in Blazor… I can’t do frontend, I should repeat that as a mantra. I started looking for a component library, of course, free because that’s the best price. It quickly turned out that there wasn’t one with everything I needed. So I found one that met most of my expectations, and I’d worry about the rest later.
Okay, but since it’s a “do it yourself” thing, how will people host it? Maybe I’ll package it nicely in Docker, and they’ll just run Docker… yeah, I can see them doing that. Maybe I’ll make a PWA out of it – that didn’t work at all. Okay, it ended up with compiling to an EXE. But now another question: when a DJ runs this at an event, they’ll want to run it on their laptop, so how will the orders get to them? I guess I need to set up some proxy server, and the client apps would connect to my server at startup, which would forward the orders to them… a very “ugly” solution, but what won’t you do for open-source. I even found a solution called Portr, which I’d add to the app and if you don’t want to host it yourself (and I can see no one would want to host it themselves), I could offer you access to my proxy server and you can connect through it, of course for a small $$$. And so on and so forth. Does it sound unnecessarily complicated and prone to generating a million problems? That’s exactly what it was…
Chapter 5 – Scrapping the App Again
After another session of struggling with the proxy server, tired, resigned, and most of all angry, I looked in the mirror and said: “SCREW IT.” This app had sucked all the life and joy of creating out of me. Problem after problem, and it’s supposed to be such a simple app. I looked deep inside myself and realized it wasn’t the app that was the problem, it was me.
My tendency to add unnecessary features in an MVP, stubbornly making my life harder by using more difficult and not necessarily fitting tools, but only because they were free, and the mentality of “WHAT?! I CAN’T DO IT?!” – no, you can’t… you’ll go gray first, your wife will kick you out because you’re useless, just sitting at the laptop cursing. I took a small break from the project with the thought in the back of my mind that maybe if I never return to it, the world won’t end.
Chapter 6 – Enlightenment
As it often happens, topics you want to give up find a way to cling to you again. It turned out that a friend training to become a UX/UI designer would love to collaborate to have something for her portfolio. Damn, if I can get UX/UI for free, that’s great because it’s the best price!
BUT ADAM! Get a grip, let’s approach this calmly. How to do it to actually do it, not work on it for another 6 months, getting frustrated, and eventually not finishing it? I humbly bowed my head and typed in Google “best no code app builder” and started the research process. The main condition was to write as little code as possible… and for it not to be too expensive. I weighed all the pros and cons: price, capabilities, etc.
Finally, I decided: Frontend – FlutterFlow: nice, simple, offers many possibilities. The price… it has a price – let’s not talk about it, but it integrates nicely with Firebase and, more importantly, with Supabase. Backend – Supabase: Basically an instant backend. 99% of what this app has to do is save to or read from a database, so why should I implement it myself when everything, including logging and authentication, is there out of the box? Plus, you can self-host it for free, and that’s the best price.
Chapter 7 – Today
The app is almost ready, I’m taking a small break from it because despite the strong resolution that it would be just a small, bare MVP, some unexpected features still sneaked in.
As for the business model, I plan to initially release it for free and take on the 200 PLN per year for a micro server where I’ll host it. If the app gains some traction, I might add some ads or a minimal subscription of 20 PLN per year to cover the server costs and leave it at that. If it gains more traction, then I’ll think further.
Final Word: What have I learnt ?
The last 12 months have brutally proven to me that being a developer in a large company as one of the small cogs, where you get a task in Jira and have to write a very narrow functionality that has already been thought out by an analyst, with a graphical layer prepared by a UI/UX designer and a frontend developer, is something completely different from creating an app from start to finish entirely on your own.
Quoting words I read somewhere: “If you like baking cakes, don’t open a bakery, just get a job in one, because if you open a bakery, you won’t be baking cakes, you’ll be running a business.” It’s true – I had to come to terms with the fact that writing code is a problem to be minimized and shift more towards “creating an app.” I shed my prejudices against no-code/low-code tools and admit that I really like them now. I changed my mentality from “I CAN DO IT?!” to “How to do it quickly and conveniently” and most importantly, I stopped being afraid to invest in the right tools.
What’s next? I know that even though I don’t want to, I have to learn marketing. Without it, nothing will succeed. There’s no point in making the best app in the world if no one knows about it. I will continue to try to improve internal discipline so that the MVP is really the minimum. I would also like to do the “12 apps in 12 months” challenge to force myself to act quickly. This way, I’ll focus on solutions and push the project forward instead of adding new features. What will come of it? We’ll see.