Phase 1: cut the site to what it uses #2

Merged
pjotr merged 8 commits from feat/phase-1-minimal-cut into main 2026-10-28 09:42:22 +00:00
Owner

This PR only removes things. Every live page still renders the same, and nothing changes on the server.

@bdu, the part that concerns you:

  • /admin and Decap CMS are removed. public/admin (config, widgets, previews), the seven CMS preview routes (/preview/*) and the preview layout are gone. /admin now returns a 404. I know you set up Decap's local mode on 27 Oct. The choice is to keep the site minimal: in production the CMS could no longer log in (Netlify Identity is gone), and it loaded an unpinned Decap from unpkg on the live domain.
  • From now on, content is edited as files. Edit the Markdown/YAML/JSON in content/, check with pnpm dev, then open a pull request into main. The README's "Editing content" section describes this, plus how the id references work (still needed until Phase 2b flattens them).
  • Nothing changes on your server. Same Dockerfile, same compose file, same Woodpecker pipeline, same image tags, same Traefik labels. After the merge, the next build simply contains fewer files.

What else goes:

  • The extra-pages route /pages/[lang]/[page]. It read content/pages/, which does not exist, so every URL there was an empty page. elements/container.vue keeps only its grid wrapper; its block builder only served that route and the CMS preview.
  • French and English: content/{aanbod,locations,persons}/{fr,en} (no page read them; aanbod/fr held stale copies of the nl files) and the empty language switcher main/languages.vue.
  • Dead components: masonry, animatedGrid, accordeon, intro, courses, svg/eyes, dev/*, utils/setDevPreContent.js, pages/.sandbox.vue.
  • Two dependencies: @egjs/vue-grid (only the masonry used it) and @formkit/tempo. The one date call now uses Intl.DateTimeFormat('nl-BE') and prints the same text (for example "3 april 2025"). Lockfile updated.
  • Unread site JSON: content/site/navigation.json, categories.json, homepage.json. content/site/info.json stays (site name and description, for the page titles in Phase 2).
  • About 24 MB of unused files in public/: assets/animatedGrid (16 MB), assets/sandbox, and 26 uploads (8.5 MB) that no content, component or CSS names, plus the one image entry that pointed to one of them and that no content referenced.
  • README: the CMS sections are replaced by the file-and-PR workflow, and the structure table is updated.

Size: 142 files changed, 34 lines added, 3,175 removed. public/ goes from 150 MB to 126 MB.

Checked locally with Node 22.14.0 and pnpm 9.1.2 (Corepack):

  • pnpm install --frozen-lockfile and pnpm build pass.
  • All 20 live routes return 200 before and after (home, /aanbod, /academie, /inschrijven, /contact and the 15 atelier pages). The admin, preview and /pages/… URLs went from 200 to 404, as intended. All 75 image and asset URLs on those pages still return 200.
  • The rendered HTML of home, /aanbod, one atelier, /academie, /inschrijven and /contact has the same markup and the same data payload before and after. The only differences are build leftovers: script preloads and CSS rules for the removed components, and a few empty Vue placeholder comments.

Not checked: Docker and Woodpecker (unchanged by this PR), and a visual pass in a browser.

Known issues left for the next PR (Phase 2), not touched here: an unknown atelier URL gives a 500 instead of a 404, there is no error.vue, and the side2 / news / banner bugs.

🤖 Generated with Claude Code

This PR only removes things. Every live page still renders the same, and nothing changes on the server. **@bdu, the part that concerns you:** - **`/admin` and Decap CMS are removed.** `public/admin` (config, widgets, previews), the seven CMS preview routes (`/preview/*`) and the preview layout are gone. `/admin` now returns a 404. I know you set up Decap's local mode on 27 Oct. The choice is to keep the site minimal: in production the CMS could no longer log in (Netlify Identity is gone), and it loaded an unpinned Decap from unpkg on the live domain. - **From now on, content is edited as files.** Edit the Markdown/YAML/JSON in `content/`, check with `pnpm dev`, then open a pull request into `main`. The README's "Editing content" section describes this, plus how the id references work (still needed until Phase 2b flattens them). - **Nothing changes on your server.** Same Dockerfile, same compose file, same Woodpecker pipeline, same image tags, same Traefik labels. After the merge, the next build simply contains fewer files. What else goes: - The extra-pages route `/pages/[lang]/[page]`. It read `content/pages/`, which does not exist, so every URL there was an empty page. `elements/container.vue` keeps only its grid wrapper; its block builder only served that route and the CMS preview. - French and English: `content/{aanbod,locations,persons}/{fr,en}` (no page read them; `aanbod/fr` held stale copies of the nl files) and the empty language switcher `main/languages.vue`. - Dead components: `masonry`, `animatedGrid`, `accordeon`, `intro`, `courses`, `svg/eyes`, `dev/*`, `utils/setDevPreContent.js`, `pages/.sandbox.vue`. - Two dependencies: `@egjs/vue-grid` (only the masonry used it) and `@formkit/tempo`. The one date call now uses `Intl.DateTimeFormat('nl-BE')` and prints the same text (for example "3 april 2025"). Lockfile updated. - Unread site JSON: `content/site/navigation.json`, `categories.json`, `homepage.json`. `content/site/info.json` stays (site name and description, for the page titles in Phase 2). - About 24 MB of unused files in `public/`: `assets/animatedGrid` (16 MB), `assets/sandbox`, and 26 uploads (8.5 MB) that no content, component or CSS names, plus the one image entry that pointed to one of them and that no content referenced. - README: the CMS sections are replaced by the file-and-PR workflow, and the structure table is updated. Size: 142 files changed, 34 lines added, 3,175 removed. `public/` goes from 150 MB to 126 MB. Checked locally with Node 22.14.0 and pnpm 9.1.2 (Corepack): - `pnpm install --frozen-lockfile` and `pnpm build` pass. - All 20 live routes return 200 before and after (home, `/aanbod`, `/academie`, `/inschrijven`, `/contact` and the 15 atelier pages). The admin, preview and `/pages/…` URLs went from 200 to 404, as intended. All 75 image and asset URLs on those pages still return 200. - The rendered HTML of home, `/aanbod`, one atelier, `/academie`, `/inschrijven` and `/contact` has the same markup and the same data payload before and after. The only differences are build leftovers: script preloads and CSS rules for the removed components, and a few empty Vue placeholder comments. Not checked: Docker and Woodpecker (unchanged by this PR), and a visual pass in a browser. Known issues left for the next PR (Phase 2), not touched here: an unknown atelier URL gives a 500 instead of a 404, there is no `error.vue`, and the `side2` / news / banner bugs. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
/admin loaded the Netlify Identity widget and an unpinned Decap from unpkg
on the production domain, and nobody could log in there any more. Removed
public/admin, the seven CMS preview routes (pages/preview/*), the preview
layout, and the preview-only modal branch in components/pages/aanbod.vue.
Live pages render the same. README: "Editing content" now describes editing
the files in content/, checking with pnpm dev and opening a PR; the CMS
sections and the public/admin row are gone.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
/pages/[lang]/[page] rendered content/pages/, which does not exist, so every
URL under it was an empty 200. The block builder in elements/container.vue
(nine block types) only ran for that route and the CMS preview; academie and
atelier use the container only as a grid wrapper around their own slot, so
it keeps that. The footer's unused navItems, which built /pages/nl/ links
from footer.json (it has no links), goes too.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The site is Dutch only (ruled 22 Oct): every page queries the nl folders.
content/{aanbod,locations,persons}/{fr,en} were copies no page read, and the
aanbod/fr files were stale, different versions of the nl ones.
main/languages.vue was an empty slot, used only by the removed extra-pages
route. README: content/ is Dutch only.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
None of these is rendered by a live route: no page, layout or content file
uses their tags. elements/courses was only reachable through the block
builder removed in the previous commit; utils/setDevPreContent.js only fed
dev/pre; pages/.sandbox.vue was a scratch page.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@egjs/vue-grid was only imported by the removed masonry component (and
transpiled for it in nuxt.config). @formkit/tempo had one call, in
helpers/date.vue; it is now Intl.DateTimeFormat('nl-BE', { dateStyle:
'long' }), which gives the same text for every news date in content/
(checked side by side, e.g. "3 april 2025"). Lockfile updated with
pnpm 9.1.2.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
No page, component or query reads them: the header nav is in
main/header.vue, categories come from content/aanbod/nl, and the home page
from content/fixedpages/homepage.yml. navigation.json was empty, and
categories.json was only named in a commented-out query in the removed
elements/courses. content/site/info.json stays: it holds the site name and
description for the page titles planned in Phase 2.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
public/assets/animatedGrid (16 MB) was only used by the removed
animatedGrid component; public/assets/sandbox only by the sandbox page.
26 files in public/assets/uploads (8.5 MB: old lesson schedules and info
PDFs, the en/fr schedule PDFs, unused banners and photos) are named nowhere
in content/, components, pages, layouts or CSS, raw or URL-encoded, and in
no media entry that content still points to. One image entry
(content/media/images/8fsrgjyvnum4yofcehlfj.md, banner-focus-waarneming.jpg)
was referenced by no content file by its id, so it goes with its file.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
pjotr merged commit 3953573b98 into main 2026-10-28 09:42:22 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
sintlukas/sla-website!2
No description provided.