I recently did, mostly for learning purposes. I hand coded pure-todo[1] (the latest state has not been pushed yet, I'm ironing out some things) with the intention of having a single minimal PHP file (including styles, fonts and JavaScript).
Went pretty good so far, maintenance might be a nightmare but deployment is easy ;)
What I learned so far:
- PHP 8 features (Enums, better Type-Hinting, etc.)
- Inner workings of JWT and how to build them yourself
To have tight control over performance, usability and privacy. To make purpose-built websites instead of adapting what I can find. To host it all on very little hardware.
Most websites I build outside of work are for fun / personal projects. There's no faster toolchain to setup than vanilla HTML. As a professional frontend dev I am good enough at JS / CSS to build whatever pieces I need sans tooling. It's easy, pretty instantaneous, completely free and dependency free.
At the other end of the spectrum, compiling a website to get a result I need to learn a static site CMS for but without the benefit of having a dynamic website is not user friendly nor is it feature full.
I mostly use NoCode tools now.
And sometimes code site using Tailwind CSS.
Every time I hand code a site, I regret later, when the maintenance stage kicks in
A few reasons, but I admit that doing so is becoming less attractive as tools grow in capability.
1. to think through information architecture and content structure, especially for accessibility
2. to stay familiar with the basics and foundations of what I do
3. semantics
Anything else requires learning a new tool. Tools change. Tools don't allow as much control. And if you want to create a backend for your site you're going to be doing some coding anyway.
Went pretty good so far, maintenance might be a nightmare but deployment is easy ;)
What I learned so far:
- PHP 8 features (Enums, better Type-Hinting, etc.)
- Inner workings of JWT and how to build them yourself
- JavaScript native event handling (e.g. element.dispatchEvent(new CustomEvent('click')); )
- JavaScript Drag & Drop even for safari on iOS
- How to build my own custom Icon font with the icomoon app[2]
- CSS Grid basics
I think it has turned out to be a pretty good idea to do something by hand from time to time :-)
[1]: https://github.com/sandreas/pure-todo [2]: https://icomoon.io/app/