This site
The page you are reading. Built from scratch rather than assembled in a site builder, because the point was to learn the parts I do not use at work.
Why?
This small project was created to accomplish two main goals. First goal is just to learn something new. Second goal is to present my projects.
First thoughts
So I decided to learn something new. My regular stack of technologies is definitely not websites oriented, so at first I thought about using something like WordPress, Squarespace or another site constructor, but it would not be fun! Also I realized that I'm pretty comfortable with most technologies I would need for a backend, such as Linux, Node.js, HTTP(S) and other. So I decided to build the site from scratch. Unknown fields were frontend and website internal architecture in general.
Final thoughts before the start
Before I blindly jumped into darkness and started building stuff, only to realize that I did something wrong and I need to rewrite it, I decided to spend some time on researching and planning.
The rebuild
The first version ran for a few years and then I rebuilt it, because a couple of things were wrong with it.
Certificate renewal never really worked. Certbot needed port 80 to answer the challenge, but Node was holding that port all the time, so every automatic renewal failed and I had to renew by hand. Node itself was running as root and was started from a detached shell, so nothing brought it back after a crash or a reboot. And project descriptions were stored in a SQLite database with three rows in it, which is not really what a database is for.
Now Caddy sits in front and handles TLS. It owns port 80, so it can always answer the challenge and renew certificates on its own. Node runs behind it as a normal user under systemd, listens only on localhost and restarts by itself. The database is gone — projects are a plain JavaScript array and these texts are Markdown files.