GoX CMS is a project that combines Go and HTMX to create a snappy, and enjoyable content management experience. It's a playground for experimenting, learning, and breaking things in a controlled environment.
- Blog
- Categories
- Tags
- Custom pages
- Comments
- Simple plugin system
- Shop Plugin
- Logger Plugin
- Latest Post Plugin
- Many different themes
- Media manager
Requirements: Go (see go.mod for the version) and a C compiler (the SQLite driver uses cgo).
- Clone the repository:
git clone https://github.com/PhantomPixelDev/gox_cms.git - Navigate into the project directory:
cd gox_cms - Copy the example config:
cp config/config-example.yaml config/config.yaml - Set
app.secretinconfig/config.yamlto a long random value, e.g. the output ofopenssl rand -hex 32. Inbuild.mode: productionthe server refuses to start without one. - Run the application:
go run .(ormake run), then open http://localhost:3000.
On first start an admin account is created. Its password comes from the ADMIN_PASSWORD environment variable or app.admin_password; if neither is set, a random password is generated and printed once in the log. Change it after logging in.
make testruns the test suite (go test ./...).make lintruns gofmt,go vetand staticcheck, the same checks as CI.make fmtformats the code.
app.url: set it to the public URL. Cookies are markedSecurewhen it starts withhttps://, and it is used for the sitemap and as the default CORS origin.server.trusted_proxies: list your reverse proxies so client IPs are read fromX-Forwarded-For.server.prefork: leave it off with SQLite.- Custom pages are served as soon as they are saved; no restart is needed.
Explore the code, experiment with changes, and don't hesitate to break things. Your discoveries and creations are what make this project thrive.
