ROM Stack
A Simple scaffold template to start building web apps with Go, HTMX and Web Components.
I have no idea what I'm doing - NordGus
Why ROM Stack?
I discovered Go via a podcast talking about Buffalo, since then I was
fascinated with the possibility of shipping all the required data (files, templates, images,
assets, etc.) inside a single Go executable. To the point that one of my first experiments was a
tool to embed an Angular application inside a Go executable.
It reminded me of the old cartridge-based game consoles and their ROMs from my childhood. So that's
why I decided to call it the ROM Stack, a Tech Stack designed to build ROM-like applications with Go.
Did I forget to include batteries?
This is a simple setup, I've designed it to help me reduce friction between
idea and execution for my side-projects.
As I continue to work with it, I will update it so is not as bare bones or better
setup for serious development.
At the moment, this template includes a devcontainer setup for vscode that works(tm).
And also has a nvm setup to work on a local environment.
But you're right. I completely forgot.
So I used the template, now what?
if you are working with the devcontainer setup
- Install the tools needed by the Go extension.
- Run
go mod edit <module name> to rename the Go module.
- Run
go mod tidy to update Go dependencies.
- Rename the project inside the
package.json.
- Run
npm install to update your package-lock.json.
If you are working locally
- Run
go mod edit <module name> to rename the Go module.
- Rename the project inside the
package.json.
- Run
go mod download to download Go dependencies.
- Run
npm install to download Node dependencies.
- Install
air by running go install github.com/cosmtrek/air@latest.
Roadmap
- Make the proof-of-concept.
- Write my own manifesto-like
README.md.
- Learn how to set up
eslint.
- Setup
eslint.
- Learn how to set up
Prettier.
- Setup
Prettier.
- Migrate to simple
esbuild.
- Learn how to use
air.
- Setup
air to handle hot-reloading.
- Learn how to use
Makefiles.
- Setup
Makefile to control the different tools in the project.
- Setup test environment.
- Setup
Docker image to build and serve the project.
- Learn how to set up a CI/CD pipeline for the project.
- Stop sucking at code.
- Stop procrastinating.
- Stop making checklist I can't complete.
Important
I have no idea what I'm doing, so I do not recommend use this template for
production and any-scale deployments beyond personal education without heavy
modification.
If you have more experience setting up the missing pieces, or you consider
that I'm missing something else or misconfigured something. Don't be afraid
of collaborating. Open a PR. And please explain in details why and what it does.
Share your knowledge with other developers.
Let's build cool stuff together.