Oleks 87eb6a0f84
ci/woodpecker/push/container Pipeline was canceled
fix(seed): add required id to seed entries + make seed non-fatal
emdash seed validates that every content entry has an id (validate.ts),
but seed/seed.json entries only had slug — so seed aborted with 'id is
required' and, under set -e, crash-looped the pod (502). Set id=slug for
all 42 entries (conflict-detection keys off slug, so id is just the
seed-local ref key). Also move the seed step out from under set -e: a bad
content seed should log loudly but not take the whole site down (init
migrations stay fatal).
2026-06-14 14:06:41 +03:00

cms-plugins

A browseable catalog of CMS plugins and how they map across platforms, built on Emdash (Astro 6 + TypeScript + SQLite). The seed dataset is the WordPress → Emdash plugin parity matrix from kotkanagrilli.fi; new entries can be added through the Emdash admin.

Repo URL Role
cms-plugins (this repo) git@git.oleks.space:oleks/cms-plugins.git App, Dockerfile, Helm chart, Woodpecker pipeline
emdash.kotkanagrilli.fi git@git.oleks.space:oleks/emdash-kotkanagrilli.git Reference Emdash deployment whose pattern this repo mirrors
kotkanagrilli.fi (WordPress) git@git.oleks.space:oleks/kotkanagrilli.fi.git (+ github.com:retif/kotkanagrilli.fi.git) Source of the seeded plugin entries (parity matrix)
anton-helm-workloads https://git.oleks.space/anton/helm-workloads Houses the FluxCD HelmReleases for each environment (kotkanagrilli.fi subdomains)

Status

Phase 0 — Emdash scaffold + Helm chart + Woodpecker pipeline. No content beyond the seeded WordPress plugin entries. Not yet running anywhere.

What's in here

  • app/ — Emdash scaffold (Astro 6, node target). Three collections: cmses, plugins, pages. Seed at app/seed/seed.json.
  • Dockerfile + docker/entrypoint.sh — production image. Single PVC at /app/state holds data.db and uploads/.
  • deploy/helm/ — the Helm chart that runs the pod in k3s. Same shape as ~/projects/emdash.kotkanagrilli.fi/deploy/helm/.
  • deploy/fleet-overlay/HelmRelease + GitRepository + image-automation templates ready to drop into the anton-helm-workloads repo. Not consumed from this repo directly.
  • .woodpecker/container.yaml — build + push pipeline (develop / staging / production branches).
  • .ddev/ — DDEV setup for local development (https://cms-plugins.ddev.site/).
  • DEPLOYMENT.md — full pipeline from git push to a running pod, plus the first-time setup checklist.
  • ARCHITECTURE.md — chart / image / Flux contracts.
  • docs/ — additional notes.

Quickstart (local)

cd ~/projects/cms-plugins
ddev start
# → https://cms-plugins.ddev.site/  (admin at /_emdash/admin)

Or without DDEV:

cd app
npm install
npm run bootstrap       # emdash init: migrations + seed
npx emdash dev          # http://localhost:4321/

Reset to a blank state:

rm -f app/data.db app/data.db-shm app/data.db-wal
rm -rf app/uploads

Windows

DDEV runs on Windows via WSL2 — install WSL2 + an Ubuntu distro, then follow the Linux install instructions inside WSL: https://ddev.readthedocs.io/en/stable/users/install/ddev-installation/#windows.

Keep the repo on the WSL filesystem (~/projects/cms-plugins inside Ubuntu), not under /mnt/c/… — Vite HMR and npm install are noticeably slower across the Windows ↔ Linux mount boundary.

Deploying

Push to the matching branch:

Branch Environment URL
develop dev (local DDEV only) https://cms-plugins.ddev.site/
staging staging https://cms-plugins-staging.kotkanagrilli.fi/
production production https://cms-plugins-production.kotkanagrilli.fi/

Woodpecker builds + pushes the image to git.oleks.space/oleks/cms-plugins, FluxCD reconciles the chart from deploy/helm/ against the matching HelmRelease in anton-helm-workloads/cms-plugins-{staging,production}/.

See DEPLOYMENT.md for the full flow, the relationship between this repo and anton-helm-workloads, the first-time setup checklist, and how rollbacks work.

S
Description
CMS plugins catalog — Emdash-based catalog of WordPress→Emdash plugin parity, seeded from kotkanagrilli.fi
Readme
506 KiB
Languages
Astro 48.9%
CSS 22.4%
Shell 7.7%
Dockerfile 7.2%
Go Template 5.2%
Other 8.6%