Viking CMS

Content Management the can withstand the plundering hoards

About Viking CMS

!! menu: true !! menu-position: 999

Viking CMS

A Kubernetes-native, visually managed, statically published website hosting platform. Viking CMS lets nontechnical website owners create, edit and publish complete static websites through an authenticated browser-based CMS, while the public-facing site is served by an extremely lightweight, high-performance, file-only HTTP server.

Components

Component Directory Description
Website Operator controller/ Kubernetes controller that reconciles Website custom resources into the required infrastructure (workloads, services, ingresses, PVCs, CMS status RBAC).
Static Webserver frontend/ Lightweight file-only HTTP server that serves published static content with no access to private CMS data.
CMS backend cms/ Browser-based visual CMS for creating and editing sites, with a built-in OAuth2/OIDC authentication client (the CMS is the auth boundary), the GrapesJS-based visual editor (cms/editor) and the publishing engine.

The publishing engine transforms editable content into complete static sites and publishes them atomically to shared storage (release directories under /www/releases/ with a /www/current symlink), so visitors never see a partially generated website.

Repository layout

controller/    Operator source and container build
frontend/      Static webserver source and container build
cms/           CMS backend, visual editor and container build
deploy/        Sample Kubernetes manifests ready to apply with kubectl
docs/          Project documentation (architecture, operations, user guides)
go.work        Go workspace wiring the three Go modules together

Documentation

Build and test

Go components (controller, frontend, CMS) are statically compiled (CGO_ENABLED=0) into scratch containers:

cd controller && gofmt -l . && go vet ./... && go test ./...
cd frontend && gofmt -l . && go vet ./... && go test ./...
cd cms       && gofmt -l . && go vet ./... && go test ./...

The visual editor builds with npm (unit tests + audit + build):

cd cms/editor && npm ci && npm test && npm audit --audit-level=high && npm run build

GitLab CI (.gitlab-ci.yml) runs the test stage (format, vet, unit tests, editor tests/audit/build), security scanning (SAST, dependency, container, secret detection), and the container build/manifest stage via the pinned tlspu/ci-utils template. The CI-built CMS image bundles the visual editor produced by the editor-test job; a local docker build of cms/ falls back to the static placeholder in cms/web/.

License

Apache-2.0 ? see LICENCE.

Status

Initial implementation.