!! 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
- Architecture ? design and shared contracts.
- Installation ? portable install via
deploy/, TAK-OS Orbit Deploy and plain Kubernetes. - Site owner guide ? create, edit, publish and roll back a site.
- Project plan ? full description of what Viking CMS aims to be.
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.