The technologies behind the construction of my personal website

Personal Development iagofgermano Projects Thinking

TL;DR: I built a personal blog website from scratch using Express.js, and I will detail here how the development process was like.


About me

Hello world! My name is Iago, and I've always been passionate about technology and geeky stuff. My first contact with coding was in 2021, when I attended high school coding classes. However, I only started my journey as a web dev in 2023, when I built my first full-stack website using Laravel framework for my undergraduate thesis while still in high school. The link for the project is here, but be aware that the code is very dirty and not even close to be production-ready :)

After I ended the project, I noticed how simple it was to learn and build web apps nowadays, and how there are a bunch of things that I didn't know yet (system architectures and patterns, good practices, testing, deployment, security, etc.), and if I wanted to have a career as a web dev, I'd need not only to know, but dominate all of that and a lot more that I didn't even know about. That's when I started thinking on visibility strategies to land a job as a freelancer or employee at a company, a wild card that would make me a bit more notorious on this market of millions trying to reach their first dev job. So, I decided I would build a personal website that I could use as a blog, because I've wanted to show people my practical skill on web dev while writing in English (my native language is Portuguese) about the things I learn.


The tech stack:

Front-end

EJS Template Engine - Dynamic server-side rendering of pages that use HTML templates.

TailwindCSS - CSS framework.

Back-end

Node.js - JavaScript server-side runtime.

Express - Node.js web app framework that provides ease of use with most NPM packages.

PostgreSQL and Sequelize - With Postgres solidness and reliability, Sequelize ORM provide a set of functions to deal with most SQL queries without the need to write "raw" SQL.

Passport.js - Authentication middleware used on admin authentication.

Disqus - Commenting system for the blog posts, Disqus manages all the comments of posts automatically.

Infrastructure

VPS - Virtual Private Server (used one is Hostinger, for its lower prices and reliability[~ R$ 410,00 per year]).

CapRover - Open-source PaaS that manages deploy and monitoring on servers, includes containerization and configuration support on the VPS, making it unnecessary to spend money on expensive managed platforms such as Heroku.


But why make it all "from scratch"? Wasn't there a simpler way?

Firstly, modern developers don't make it ALL from scratch. Every day, new tools are released to help developers do their things, which is the case of all the listed above. This leads to other question:

If the purpose was to build just a landing page with a blog, why didn't I use something much easier and/or cheaper like WordPress, Medium, Blogger, etc.?

As a beginner, I thought a lot about that, and my conclusion is that just like anything else in software engineering, a problem can have various solutions, and the method I chose might have its downsides (learning curve, infrastructure management) but made me learn a lot of stuff that I will use in the future, and opened my mind to things that you won't learn in any guided course or bootcamp, for example. The exercise of searching all that you need, facing new problems at every step you do, is what will make you more experienced as a developer, and there's no other way to do that. Just like a child learning to speak, you've got to do trial and error, and then you'll be proud to say you have knowledge in something.

My advice to newbies just like me is: Don't stop trying, always show to the world you want to improve, that you are a capable person, and you are searching for an opportunity, otherwise, you'll always feel stagnant and unmotivated.