Latest news about Bitcoin and all cryptocurrencies. Your daily crypto news habit.
Side-Project
Job hunting is really hard nowadays, mostly because job offers are distributed across job boards, aggregators and companies career pages. So I decided to create Job BuddyĀ , a web app that tracks all your digital job applications. You can either use the chrome extension or simply paste the url of the job description in Job Buddy to save it.In this way you can manage from a single admin page all the career opportunities you are interested in.
In this post I wanted to share the tech stack behind Job Buddy to show that you can quickly bootstrap a complete Web App at almost 0 cost. I developed Job Buddy really fast, spending justĀ 18,5ā¬:
- 14ā¬ for the jobbuddy.app domain from GoogleĀ Domains
- 4,5ā¬ for the Chrome Web Store subscription
Stack
Job Buddy is almost entirely deployed on top of Google Cloud platform, since they offer a complete suite of products with a āgenerousā (mmmh) free plan. I had to create 3 different products:
- Web App
- Backend
- Chrome Extension
so I decided to go with ReactJS for the Web App and the Chrome Extension and NodeJS for the Backend, to have minimum context switch while developing.
Database
Then I had to pick a database because I needed to save the job offers for each registered users. Maintaining a database is a huge pain, especially if you are a not database guru (Iām not). You need to setup and manage your instances (redundancy, availability, backupsĀ ā¦ do they ring a bell?), or you can go with cloud solutions (like Mongodb Atlas), but they can be costly for a side-project. So I decided to go with Firebase.Firestore, a service of the Firebase suite which offers a flexible and scalable database on the cloud with a āfairā (again, fair?) free plan. It is a document-based solution (NO-SQL) and can be tricky to get right at the beginning, but the trade off is that you have no hassle; Firestore has you covered for almost anything. Therefore, even if itās still in Beta and has its flaws, it was more than perfect for my useĀ case.
Authentication
One last delicate missing part was authentication, I wanted users to sign in/up to the service, but building an auth system from scratch was not (and probably will never be) an option. Luckily the Firebase suite offers Firebase.Authentication, which is basically a few-lines code implementation for a robust auth system, supporting a long list of providers.The best part of Authentication (imho) is that they automagically handle email confirmation and password reset, which are a must have, but a pain to develop. Letās be honest, everything which is not a ācore featureā and takes you more than 15 min to develop is just a pain in theĀ a**.
So, here is the stack of JobĀ Buddy:
- Web AppāāāBuilt withĀ ReactJS
- BackendāāāBuilt withĀ NodeJS
- Chrome ExtensionāāāBuilt withĀ ReactJS
- DatabaseāāāBuilt with Firebase.Firestore
HostingāāāWebĀ App
The database is done, handled by Firebase, and the Chrome Extension done too, being managed by the Chrome Web Store. I just needed to figure out where to put the Web App and the Backend, possibly for free.Exploring other Firebase services I discovered Firebase.Hosting, it basically hosts your web app with a free 1GB storage and 10GB/month of data transfer, plus Custom domain & SSL support. 10GB/month is not that much (really), but itās a good start, especially if all you have to doĀ is
yarn build && firebase deploy
from your local repository. Amazing. Note (also to myself): In the first day of launch Job Buddy burned almost 1GB of transfer data, at this pace in 9 days Iāll have to open my wallet! So be careful with all these āfreeāĀ plans.
I now had a randomised url web app on the internet, so I needed a domain name. I checked both Namecheap and Google Domains: the first one is probably cheaper (donāt know if it has āhidden costsā), but I wanted to stick with Google. I bought jobbuddy.app for 14ā¬ and in 1h I could reach https://jobbuddy.app (note the httpS part), all you have to do is to follow the instructions given in the Firebase.Hosting console.Web App done, time for theĀ backend.
HostingāāāBackend
While I was in this Google services killing spree, I decided to look into Google Cloud Functions. Itās similar to AWS Lambda, it basically hosts a NodeJS app that responds to http events, so you are billed for the āactualā (always be careful) usage of the service, if no one uses your app you pay 0. Furthermore they offer a free plan with a 300$ (fair enough) gift cards when you sign up.The service is still in beta and has flaws, for example itās kinda slow on the first invocation after sleep (do you need a warm up?) and it only supports Node v6 at the time of writing, so I had to convert some part of the code to be compliant. Anyway it seemed a good fit for Job Buddy, I used the console to create the function: you simply zip the NodeJS code (be careful to zip the content of your git repository, not the folder of the repository!) and upload it in the web interface (there is also a CLI available to do this programmatically). At the end you are given an endpoint to invoke the function with a simple httpĀ request.
The backend is done too, Job Buddy is now live at https://jobbuddy.app. Itās automatically scalable and fast, I donāt have to worry about anything (except costs).Here is JobĀ Buddy
Cloudflare
After talking with some IndieHackers, I discovered that, in order to reduce costs, you can put Cloudflare in front of Firebase.Hosting. It handles SSL for free and itās really good for caching, in this way you will reduce the interactions with Firebase.Hosting, saving money.The setup is fast and straightforward and I got JobBuddy up and running in around 5 to 10 minutes.Iāll see in the next weeks what the Cloudflare.Analytics shows, but it looks promising.
Conclusions
If you are starting to develop a fantastic side-project and wish to deploy it somewhere on the internet, possibly at 0 cost, you can copycat the stack of JobĀ Buddy.
- Web AppāāāReactJSāāāhosted on Firebase.Hosting
- BackendāāāNodeJSāāāhosted on Google Cloud Functions
- Chrome ExtensionāāāReactJSāāāhosted on Chrome WebĀ Store
- DatabaseāāāFirebase.Firestoreāāāhosted onĀ Firebase
- CDNāāāCloudflare
The only costs I sustained wereĀ 18,5ā¬:
- 14ā¬ for the jobbuddy.app domain from GoogleĀ Domains
- 4,5ā¬ for the Chrome Web Store subscription
Iām not saying this IS the best approach, this is simply the one that I used. There could be many more solutions out there better than this oneĀ :DFeel free to leave comments, feedbacks or suggestions on how to improveĀ this.
How to easily bootstrap a side-project on the cloud was originally published in Hacker Noon on Medium, where people are continuing the conversation by highlighting and responding to this story.
Disclaimer
The views and opinions expressed in this article are solely those of the authors and do not reflect the views of Bitcoin Insider. Every investment and trading move involves risk - this is especially true for cryptocurrencies given their volatility. We strongly advise our readers to conduct their own research when making a decision.