Last summer, I've started working on a web application that aimed to display travel routes in a visual and easily shareable way. It all started when my boyfriend organised our last summer trip to Scotland. When he shared the details of the route with me via a text file, I couldn't picture what our journey was going to be. I'm a visual person and for me to have a global image of our trip's stopovers, some enhancement was needed. So I headed straight to my go-to graphic design tool - at the moment, Figma - and created an image file out of the travel info he forwarded me :
My boyfriend, who was travelling again the next month with his daughter, really liked it and asked if I could build a related web application so he could have his own visual travel plan for this coming trip, whilst being able to share it with his daughter and some other members of the family. I'm totally into making things that are practical, so I gladly agreed and started coding it.
After coding my web development portfolio in React, I thought it would be a good opportunity to consolidate my skills and I decided to develop the front-end in JavaScript/React again. This front-end would be freely hosted on Vercel, this web app being primarily intended for personal use and not commercial. As for the back-end, it would consist of an API and a PostgreSQL database and it would be hosted on Heroku, which had a quite generous free tier at the time.
Unfortunately, a few weeks later, Heroku announced that they would end their free tier in November 2022, which made me - along with many other web developers - looking for an alternative.
My web app being currently in development, and having no plans to monetize it yet, I was a bit reluctant to use a pay service so early in the process. I spent a lot of time reading through specialised IT blogs and videos and I then heard about Amazon Web Services (AWS), "the world's most comprehensive and broadly adopted cloud platform" as they say on their website. They offer a very generous free tier for most of their services during the first 12 months, and it looked like an interesting option to try. However, the platform is so complex that I had to follow a 12 hours course online just to get the grip of it. If you understand French and are interested in AWS, I highly recommend this free course offered by OpenClassrooms :
At the end of the course, I understood that the best option in my case would be to get an EC2 server and to host my PostgreSQL database on a RDS server. However, I would have to install the entire Node.js backend environment all by myself, setup the SSH and find a way to make the thing as secure as possible, while updating it regularly to avoid any security breaches. The problem is that despite having some back-end related knowledge, I'm not sufficiently well-versed to the point that I feel comfortable doing all of this without any supervision. Another option would then be to get a virtual Lightsail server instead, which would offer already setup environments and automatic upgrades monitored by Amazon themselves, but the free tier would only last 3 months - instead of 12 - and the monthly fee for the tier that includes a PostgreSQL database is a bit of a turnoff for a free personal project.
In the end, I reached the conclusion that AWS would be an interesting option if I decide to make my web app public and to monetize it, but it may not be worth the hassle of learning how to use the platform when I'm in such an early development phase. I mean, I had to follow a 12 hours online course just to review the different services offered by Amazon, how many more lessons would I need to follow just to migrate my small API there and make it work ? My first focus being on extending my front-end developing skills, it just looks like a deal-breaker.
Thankfully, while reading through all the above specialised IT blogs, I also found out about other interesting cloud application hosting platforms. The ones that grabbed my attention with their free tiers were as follows :
- Adaptable : the Starter tier is free, includes a PostgreSQL database and deployment from GitHub. However, there is no warm start, meaning that apps and database instances can't be left running for fast responsiveness. Heroku's free tier had the same problem, with apps going to sleep after sometime. That could result in data taking up to 30 secondes before showing up on my website.
- Supabase : the free tier applies for up to 2 projects, but projects are paused after 1 week of inactivity and have to be reactivated manually from the dashboard. Not great for portfolio projects.
- ElephantSQL : the free tier includes a PostgreSQL database but is quite limited in terms of performance, which would make the responsiveness of the website quite slow.
- Fly : the free tier looks generous, but it's necessary to go through containers to deploy an app. I know app containerization is a great thing to know about and I heard about Docker, but once again the learning curve is a deal-breaker right now, as I want to focus on developping my app and not spend weeks learning about DevOps.
- Railway : the Starter tier offers a $5 monthly credit and is limited to 500 hours of usage per month, but this time limit can be ditched in the Developer tier while still benefiting from the $5 credit. The deployments can be done from GitHub, the free tier includes up to 2 services (PostgreSQL database being one) and the app never goes to sleep.
With this new comparison to hand, I decided to migrate my API and database to Railway, and so far I've been delighted by the simplicity of the deployment and the fast responsiveness of the queries. According to Railway's documentation, a single PostgreSQL database should only use $1,20 worth of credit month, which should be covered by their $5 monthly rebate. If my web app is called to grow, I will then see if it's worth continuing hosting the back-end with them, or if it will be more interesting to migrate the back-end and the front-end to an AWS server.
In a forthcoming article, I will talk more in detail about my Itinerary Publisher web app.