About this website

By Victor M. Vaquero

created on: 2024-01-14

last modified on: 2024-01-14

Summary: Although simple at a glance, this website is built in a way that allows scalability in the future. Built from scratch, I have full control.

Tech stack

 

What tech stack to choose? Honestly, what a horrible question. JS always has something new, there is always a newcomer or an update which makes your go-to backend performance look like a sack of patatos, or a new component library you want to try out (I am looking at you shadcn/ui), or there is always someone to tell you that your CSS framework sucks for whatever reason. Yet, here we are. I chose this techstack because either I love or there are some features I want to try.

 

Frontend

 

In the front end I am using NEXT.js 14 with app router because pages are so plebeian right now (apparently). I am using the layout capabilities (UI shared by pages) to client-side render the navbar. On the other hand, I am using the server-side rendering for everything else (for now). 

I am also using tailwindcss and clsx to conditionally apply styles to some components. 

 

Backend

 

Anyone who knows me knows I love python and I also love Django and its included kitchen sink. I am using django to add blog posts to the website through REST API. To write the posts (such as this), I use CKEditor inside of django's admin panel. And I use GUNICORN as a app server.

 

Web Server

 

I use NGINX to manage the web server to serve media files as well as to handle the traffic i.e. which request goes to the NEXT js server or to the backend. 

 

Deployment

 

I use docker containers to manage the each part of the website i.e. one container for nginx, one for django, and one for next.js.Further, i use docker compose to make them play together nicely.  I avoided using docker for so long, I don't know why. I love it. I even used it to make a local DNS server on my local machine using bind9 (I'll write a post about that and why it was a terrrible idea to use it in combination with NixOS. I'll write a post about that in the future. Spoiler alert, deleting the container while setting the nameserver to localhost doesn't allow you to recompile your configuration because you have no DNS server).

The whole project is hosted in an AWS EC2 instance and the media files are on a S3 bucket. 

 

Conclusions

 

I know, for what you see, it is probably an overkill but I wanted to future proof my site so I can add whatever I want whenever I want. 

 

Cheers.

 

 

Let's connect!

victor@chroniclesofhades.com

Find me on social media

mastondon logogithub logolinkedin logo