91 lines
3.6 KiB
Markdown
91 lines
3.6 KiB
Markdown
# cms-plugins
|
|
|
|
A browseable catalog of CMS plugins and how they map across platforms,
|
|
built on [Emdash](https://github.com/emdash-cms/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 `HelmRelease`s 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)
|
|
|
|
```bash
|
|
cd ~/projects/cms-plugins
|
|
ddev start
|
|
# → https://cms-plugins.ddev.site/ (admin at /_emdash/admin)
|
|
```
|
|
|
|
Or without DDEV:
|
|
|
|
```bash
|
|
cd app
|
|
npm install
|
|
npm run bootstrap # emdash init: migrations + seed
|
|
npx emdash dev # http://localhost:4321/
|
|
```
|
|
|
|
Reset to a blank state:
|
|
|
|
```bash
|
|
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](./DEPLOYMENT.md)** for the full flow, the relationship
|
|
between this repo and `anton-helm-workloads`, the first-time setup
|
|
checklist, and how rollbacks work.
|