My homegrown website and (micro-)blogging engine that powers https://max.bossi.ng
Find a file
2026-01-06 23:40:03 +01:00
testData test data 2026-01-06 23:23:30 +01:00
.gitignore what the fuck happened bro 2026-01-06 23:04:14 +01:00
generator.go test data 2026-01-06 23:23:30 +01:00
go.mod move it to the root package 2026-01-06 18:07:18 +01:00
go.sum move it to the root package 2026-01-06 18:07:18 +01:00
LICENSE what the fuck happened bro 2026-01-06 23:04:14 +01:00
main.go what the fuck happened bro 2026-01-06 23:04:14 +01:00
README.md Update README.md 2026-01-06 23:40:03 +01:00
routes.go what the fuck happened bro 2026-01-06 23:04:14 +01:00
state.go test data 2026-01-06 23:23:30 +01:00

serf - My Custom CMS

serf is a custom Content Management System which powers my website, max.bossi.ng. It supports:

  • A Blog System
    • Based on a simple directory structure with plain text files
    • Supports a web-frontend, plaintext.casa and JSON.
  • A link shortener
  • Static file hosting
  • No web-interface whatsoever, everything is configured through plain-text files that live on the server
  • If one of the files change, it automatically reloads

Setup

  1. Copy testData to your preferred place, it provides the basic scaffolding for serf to work
  2. Edit metadata.json according to your needs
  3. Execute the binary with the path to your data dir as the only argument
  4. Put a reverse proxy before it

Faq

How scalable is this?

I dont fucking know. it should ne pretty performant, its written in go after all. If you have so much traffic that it starts to lag (why are you using this anyway then?) replicate it and put it behind a load balancer. serf does not keep internal atate but rather uses the data directory as a source of truth, and because it does not write to the data directory you can plug as many simultainiously running instances onto the same data directory.

Rewrite it in rust

fuck you.

I want custom styles!

edit data/assets/styles/*.css.

I want custom pages

edit data/templates/*.

I want feature xyz!

ask nicely or implement it yourself.

License

AGPL v3