The audience decides the stack
The person this site is for opens it on a phone, in a truck, on a bad connection, between two jobs. Everything else follows from that.
So there is no framework and no npm. Hand-written HTML assembled by a small Python build step, which is enough to generate the repeated pages and share the layout without shipping a runtime to do it in the browser.
Fixed prices, on the page
The pricing is written down where anyone can read it, next to a quote form that goes to a real inbox. Most studios in this bracket hide the number until they have you on a call, and hiding it is why small businesses assume they cannot afford a site.
Local search
The work grid is generated from markdown files rather than maintained by hand, and the business schema carries the real town rather than the nearest city anyone has heard of. Getting the locality wrong is the most common self-inflicted local SEO wound there is.

