I made a web app that so far had 1,700 visits
This is a reflection on the process on developing and launching this app
Hi everyone!
Right now I am i Småland, Sweden, visiting my parents. Next week I am back in Trondheim. This newsletter is about a web app I made, and it is more technical than my recent posts.
TL;DR:
Made an app that I recently put up at forste-bolig.no
I posted it on Reddit and received over 1700 visitors and 60 comments with feedback that I can use to improve the app.
I learned that it is not that hard to get people to view your app as long as it is relevant and helpful for the people you show it to.
I also learned a bunch about modern web development tools, but realized that many of these tools are too rigid for my taste.
During the last 8 months I have been working on a small side-project: A web app for calculating how much you can loan for buying a house based on your budget, and to see how much that loan would cost.
What’s different with this web app is that you can create, save, and share your budgets with friends or significant others. These budgets are then used for the loan calculation.
The alpha version is live right now at forste-bolig.no (in Norwegian).
It is a simple web app. The challenge for me were not in the app design itself, but in taking the time to learn Nuxt, a modern frontend JavaScript framework, which was the main goal of the project.
I have been in the web dev game for a long time. I coded my first website in 2006, and then ran a freelance web design business between 2011-2014. Since then, the number of web frameworks have exploded, and concepts such as reactivity, state stores, and hybrid frameworks has emerged, together with the Typescript language and tools like babel, webpack, vite, and so on. The list is long. So this project was a way for me to learn more about modern web developer tools.
Architecture
It is a single page app (SPA) that is generated as a static website with Nuxt. Google Firestore is used as a cloud database. Since the app is static, and Firestore is managed by Google (the app just sends API calls to store/read data), there is no need for running any backend code and the app files can just be uploaded to any hosting service that serves static content.
Right now it is deployed on github pages, which is a very easy way to deploy static sites. It can be likened to a cheap and easy-to-use CDN, but with certain limits.
Frontend Javascript Framework: I ended up making the app with the hybrid framework Nuxt, which is based on the frontend framework Vue. I chose this framework because it seemed simplistic and easy to use (but wish I would have went with React). Nuxt supports Typescript, so I chose to use Typescript in order to learn more about it.
UI/CSS framework: I used Bootstrap CSS framework with ready-made components (will not use again).
Backend: I use Google’s backend service Firestore as the database. This is used for storing users budgets. There is no login or authentication, but users instead store data on unique url slugs that people can visit to view/edit their budgets.
Feedback
I posted it to the Norwegian Reddit community and (surprisingly) got over 100 upvotes, about 60 comments, and over 1700 visits to the site!
I did not expect this big response. I got a mixed bag of comments. Most of them were supportive with constructive feedback of how things could improve, and some people were saying the tool was already very useful. And some people writing that the tool was unnecessary (as there existed similar alternatives), was missing certain features, or was calculating things wrong.
Even though there are some negative comments, it is really motivating to see that some people were really excited about the tool.
It was the first time I made a “launch” like this, and it was such a great experience to see that other people cared about this app.
Lessons and thoughts
The idea
The idea was just an excuse to learn about modern web dev frameworks. And for that it was good enough. However, seeing how long it took, I wish I had chosen a more interesting idea that had a bigger market.
Development process
When I only did longer coding sessions I found myself going weeks without coding on the project and kinda forgetting about it. So I prefer to try and code a tiny bit every day, even if it is just 15-30 minutes, and then taking the opportunity of a longer session when I can. Even if I don’t get much done during those small sessions, it keeps the momentum up.
Software projects always take longer than expected.
Tools and tech stack
Nuxt and frontend frameworks:
For me, the biggest downside of using Nuxt was that it went out of date (ish) while I worked on the project (I used Nuxt 2 and Nuxt 3 came out). This caused some plugins and dependencies to not work properly.
Long-term maintainenance and updates is a concern for many new frameworks.
I spent too much time learning a complicated framework that is already out of date.
Nuxt came with a lot of features I didn’t need for this project, bloating it up with unused dependencies.
I wish I had used React instead, or just plain JavaScript. React has a good track record, a huge community, and a lot of good plugins to make life easy when developing the UI.
The biggest benefit of using Nuxt was the functionality I didn’t have to implement myself: reactivity, data store, bundling, and so on.
Typescript:
I used Typescript, but not sure if I will use it for my next project. It is nice with strong types and error checking when compiling. But it is annoying that compilation is needed, and I ended up just being annoyed a lot of the time.
Bootstrap CSS UI:
Not too impressed. I will try TailwindCSS or just plain CSS for my next project.
Launch
I should have launched earlier, but made it clear that it was a beta version (to lower peoples expectations and provide better feedback).
If you make something useful, people will care. You just have to get it in front of the faces of the right people.
It was really fun to make something that other people found useful.
What will happen to the webapp now?
Right now I have a big break from the app and I don’t know if I will spend any more time on it. I don’t really think the app has that much potential even if I spend more time improving it.
However, if I do come back to it, I now have some concrete feedback to make the app better.
In any case it was a good learning experience.