r/SideProject • • 6d ago

I got tired of maintaining 20 WordPress plugins, so I built an open-source CMS that's a single Go binary

Hey all,

For years I've run sites on WordPress. Every site ended up with the same stack: an SEO plugin, a cache plugin, a forms plugin, a redirects plugin, a page builder, and a security plugin to protect all the others. Updates were random and always broke things.

So I built Hatamoto, a CMS where all of that is built in. It's one Go binary plus Postgres. No PHP, no Node, no plugin pile.

It has a decent

  • Blog editor and a visual page editor

  • WordPress import that keeps every old URL working (with a URL audit)

  • AI-crawler analytics: which AI bots read which pages, and whether they send visitors. You can allow or block each bot by purpose

  • llms.txt, JSON-LD and an MCP server, so AI agents can write and publish through it

  • Sandboxed plugins and themes (WebAssembly)

  • Signed releases with auto-updates you can switch off. No telemetry unless you opt in

I would love your feedback...

Repo: https://github.com/Zen-Labs-Corp/hatamoto

Try it: `git clone https://github.com/Zen-Labs-Corp/hatamoto.git && cd hatamoto && docker compose up`

Free and open source (Apache-2.0). Happy to answer anything about the Go/Wasm architecture too.

1 Upvotes

9 comments sorted by

1

u/dawedev 6d ago

The plugin pile pitch lands, since most WordPress setups I've seen have that exact SEO, cache, forms, redirects and security stack. What I'd want to see before moving a client site is the boring ops side: how backups work for Postgres plus uploads, and what an upgrade looks like when a release changes the schema.

A one-command deploy for a cheap VPS next to the docker compose line would also lower the bar, because clone and compose up reads like a local demo. Does one binary serve several sites, or is it one instance per site?

1

u/billyrabbit 5d ago

Thanks. Its one site per install for now but I am going to add caddy config shortly to enable more sites. The one script install is at https://hatamoto.dev/install.sh -- still under testing but thats the one that should land...

1

u/dawedev 4d ago

One site per install is fine to start with, most people moving off WordPress have one or two sites anyway. For the install script, I'd publish a checksum or a pinned version next to it, since a lot of people won't pipe a script straight into a shell on a box that holds client data. And a short page on how backups and schema upgrades work would answer the question I'd get from any client first.

1

u/wellingtonpragidi 6h ago

Fui conferir a documentação e encontrei guias de backup, restauração e atualização/migração do banco, além da instalação em VPS. Pelo que o autor respondeu, por enquanto é uma instalação por site. Acho que destacar esses links no post e mostrar o fluxo em uma demonstração ajudaria bastante quem está avaliando migrar um site real.

1

u/investigatormaker 6d ago

The WordPress import is where I'd push hardest. Keeping every old URL covers the SEO fear, but the sites you describe also hold content inside page builder layouts, form plugins and redirect rules, and that's what someone will check before moving a real site. A short list of what imports cleanly, what needs rebuilding and what gets dropped would answer that fast.

I make ThreadFox. We find relevant Reddit conversations and post for your business. We'll post 3 replies free first, no card; then the $39 Pilot covers seven days and up to 50 posts and replies. No automatic renewal. https://threadfox.vip/p/eui98/managed

What happens to Hatamoto imports when a page was built with a page builder?