So I have somewhat introduced the concept behind Rirespira, but how will it be implemented from a technological point of view?
Rirespira will be a website. With the mobile app market dying down, frameworks becoming more and more suitable for mobile web development and internet connectivity becoming increasingly accessible, for me it only makes sense for most projects be web-based.
The nature of a browser-based Rirespira will require a front-end, a back-end and a database before being deployed, like most dynamic websites. In this devblog I will briefly go over the choices I made in preparing the project's tech stack before starting to build.
I was torn between ReactJS and VueJS and ended up opting for the latter. React attracted me given that it is backed by very large tech companies (so surely it must be good right?) and is in great demand in the jobs market so would probably be worth learning. I ended up choosing VueJS instead though purely because of repeated recommendations by word-of-mouth. Furthermore, Vue is predicted to keep gaining popularity, even in the jobs market, so it's probably almost as worth learning as React. The fact that this particular technology is open-source also helps. Goodbye JQuery!
This was a relatively straight-forward choice. Realistically, the two main contenders were NodeJS and Python. While other programming languages such as PHP and Java are far from obsolete given the large amount of legacy code that needs to be maintained, I do feel like they are losing relevance when it comes to the leading edge of web-development. Go also briefly fluctuated around the back of my head for a minute, but my relative unfamiliarity with the language ended up convincing me to abandon learning it for some other project.
Between Python and NodeJS I ended up picking the latter. The reasons aren't really that major. Very simply, I already have a decent amount of Python projects and having developed web-projects using both languages, I overall felt more at ease using NodeJS.
I plan on using the ExpressJS framework to make things run smoother, having used this tech in the past before as well.
I debated between SQL vs NoSQL database options for quite a bit. On the one hand, as mentioned in my previous Rirespira devblog, the task the project is trying to achieve is somewhat complex, with a lot of potential subtleties in capturing the context necessary. I thought, this seems like the sort of unstructured mess that a non-relational database would be more suited for.
I read a bit about MondoDB, a lot about ElasticSearch (it was mentioned in a job I had applied to in the past and had caught my interest given its use in Data Science), I even read a bit about graph databases but I was not really getting anywhere.
Then I thought about it a bit more, and tried to draw out the relations…and actually…it seems to work, it seems like I can impose some relational structure to what I'm trying to do, which in my view is probably worth it in the long run, so to avoid disorderly headaches and what not.
I don't expect the site to have a lot of traffic if at all to start with (or ever, lol), so I was looking for cheap options that I could scale relatively easily, before perhaps moving on to a different service in the case that the project does catch on.
As for registering the domain, I opted for Namecheap which I utilized for this website as well and have so far had a good experience with.
That's more or less it for the tech stack. Now that I have everything more or less planned out I can finally get to work. The next steps look like:
- Back-end + DB
Here it goes!