My MPA Journey...
Why GSWP?
After decades of framework fatigue, I decided to create my own stack - the Vanilla Stack or a barbone stack. No framework and as vanilla as possible. Tools that not break my code for every new version. Tools that have LTS as philosophy.
Go - The backend choice
Many languages and framework have a "Upgrade Hell" when a new version arrive. Old code breaks and you have to spend time to fix problems that is caused by the new version. Then I stumbled upon Go — a compiled language with simplicity and Long Term Support at its core. It is not first choice among frontend web developers, but it is fast, clean and concurrent. A basic “Hello Gopher” site in Go weighs about 6 MB — including the web server. No external runtime. No framework magic. Just an executable Go. It felt like a breath of fresh air.
Vanilla HTML/CSS/JS - The Simple Web
I did not really have any choice here. HTML, CSS, and JavaScript are the holy trinity of the browser. Sure, I could have added HTMX, jQuery, SASS or Tailwind — but none of them aligned with my "Simplicity first" compass. I chose to stick with the basics and avoid layering on complexity I did not need.
PostgreSQL - Battle-Tested Database
Why change a winning horse? I have used PostgreSQL for over 15 years. It is simple, stable, fast — and trusted in military-grade systems. Long-Term Support is practically its middle name. It is the kind of tool that disappears into the background and just works.
GSWP — The odd stack: Go Simple Web Platform
Go for backend logic. HTML, CSS, JavaScript for the frontend. PostgreSQL for persistence. Every choice in GSWP follows one principle: I'd rather write more code I understand than less code I don't. More typing, yes. More boilerplate, yes. But also zero hidden behavior and debuggable code from top to bottom.
Lesson learned: GVP is not mainstream and comfortable. But much simpler, more safe, way faster and more sustainable and maintainable.