Geen omschrijving
  • Astro 70.5%
  • JavaScript 12.1%
  • TypeScript 7.9%
  • CSS 6.8%
  • Dockerfile 1.5%
  • Andere 1.2%
Zoek een bestand
Jesse van Mullem 27c055a76c Fix: config.yml-404 op /admin zonder slash
Decap laadt config.yml relatief aan de URL; op /admin (zonder slash)
werd dat /config.yml -> 404. Expliciete rel=cms-config-url toegevoegd,
nginx-redirect /admin -> /admin/, en dev-poort instelbaar via PORT.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-11 15:37:50 +02:00
nginx Fix: config.yml-404 op /admin zonder slash 2026-06-11 15:37:50 +02:00
public Fix: /admin/ werkt nu ook in astro dev 2026-06-11 15:33:05 +02:00
scripts Herbouw site met Astro 5 + Decap CMS (lokaal, zonder CDN) 2026-06-11 15:11:23 +02:00
src Fix: config.yml-404 op /admin zonder slash 2026-06-11 15:37:50 +02:00
.dockerignore Herbouw site met Astro 5 + Decap CMS (lokaal, zonder CDN) 2026-06-11 15:11:23 +02:00
.gitignore Herbouw site met Astro 5 + Decap CMS (lokaal, zonder CDN) 2026-06-11 15:11:23 +02:00
astro.config.mjs Fix: config.yml-404 op /admin zonder slash 2026-06-11 15:37:50 +02:00
dev.sh dev.sh toegevoegd: lokale ontwikkelserver zonder Node in PATH 2026-06-11 15:20:45 +02:00
Dockerfile Herbouw site met Astro 5 + Decap CMS (lokaal, zonder CDN) 2026-06-11 15:11:23 +02:00
package-lock.json Herbouw site met Astro 5 + Decap CMS (lokaal, zonder CDN) 2026-06-11 15:11:23 +02:00
package.json Herbouw site met Astro 5 + Decap CMS (lokaal, zonder CDN) 2026-06-11 15:11:23 +02:00
README.md Herbouw site met Astro 5 + Decap CMS (lokaal, zonder CDN) 2026-06-11 15:11:23 +02:00
tsconfig.json Herbouw site met Astro 5 + Decap CMS (lokaal, zonder CDN) 2026-06-11 15:11:23 +02:00

Met Aandacht Loslaten — website

Moderne herbouw van metaandachtloslaten.nl met Astro (statische site) en Decap CMS (beheeromgeving op /admin/, volledig lokaal gebundeld — geen CDN).

Stack in het kort

Onderdeel Invulling
Site Astro 5, content collections, Nederlandse content in src/content/
CMS Decap CMS 3, bundel wordt uit node_modules gekopieerd (geen unpkg-CDN)
Login Forgejo/Gitea OAuth (PKCE, alleen een Client-ID nodig)
Afbeeldingen Bron in src/assets/uploads/, bij build geconverteerd naar WebP/AVIF
Cache nginx-headers, instelbaar via het CMS (Site-instellingen → cache)
Statistieken Eigen Umami — script-URL + website-ID instelbaar via het CMS
Hosting Coolify, via de meegeleverde multi-stage Dockerfile (nginx, poort 8080)

Lokaal ontwikkelen

npm install
npm run dev            # site op http://localhost:4321

Lokaal het CMS gebruiken zonder OAuth (aanrader tijdens ontwikkelen):

npm run cms-proxy      # start decap-server (proxy op poort 8081)
npm run dev            # in een tweede terminal
# open http://localhost:4321/admin/

Wijzigingen die je lokaal in het CMS doet, worden direct als bestanden in src/content/ weggeschreven (zonder commit).

CMS-login via Forgejo (productie)

  1. Maak in Forgejo een OAuth2-applicatie aan (Instellingen → Applicaties → Nieuwe OAuth2-applicatie):
    • Redirect-URI: https://<jouw-domein>/admin/ (bijv. https://metaandachtloslaten.nl/admin/)
    • "Vertrouwelijke client" uitvinken (het CMS is een public client met PKCE)
  2. Kopieer de Client-ID en vul die in bij app_id in public/admin/config.yml.
  3. Commit & push. Iedereen met schrijfrechten op de repo (MAL/MALWeb op code.securityasaservice.org) kan daarna inloggen op /admin/.

Elke CMS-wijziging is een git-commit op main → Coolify bouwt en deployt automatisch (zet de Forgejo-webhook aan in Coolify).

Deploy met Coolify

  1. Nieuwe resource → Dockerfile → koppel deze repo (branch main).
  2. Poort: 8080 (de container draait nginx als niet-root).
  3. Webhook van Forgejo naar Coolify instellen zodat elke push (ook CMS-commits) een nieuwe build start.

Er is geen runtime-configuratie nodig: alle instellingen (cache, Umami, afbeeldingskwaliteit) komen uit het CMS en worden tijdens de build verwerkt.

Umami-statistieken

In het CMS: Site-instellingen → Statistieken (Umami):

  • Umami inschakelen: aan
  • Script-URL: bijv. https://umami.jouwserver.nl/script.js
  • Website-ID: de site-ID uit het Umami-dashboard

Het script wordt alleen in de <head> opgenomen als alle velden zijn ingevuld.

Afbeeldingen & cache

  • Uploads via het CMS komen in src/assets/uploads/; Astro genereert er bij de build responsive WebP (of AVIF) varianten van in /_astro/.
  • Site-instellingen → Afbeeldingen & cache regelt:
    • formaat (webp/avif) en kwaliteit (30100)
    • Cache-Control voor HTML (minuten), afbeeldingen (dagen) en gehashte assets (dagen)
  • scripts/generate-nginx.mjs zet die waarden bij iedere build om in nginx/nginx.generated.conf.

Structuur

src/
├── assets/uploads/        alle (gemigreerde + nieuwe) afbeeldingen
├── content/
│   ├── settings/site.yaml site-instellingen (CMS: "Site-instellingen")
│   ├── paginas/           vaste pagina's (home, contact, privacy, …)
│   ├── behandelingen/     holistisch, reiki, access-bars
│   ├── begeleiding/       laatste-levensfase, levensvragen, nabestaanden
│   ├── workshops/         zes workshops
│   ├── ervaringen/        testimonials
│   └── agenda/            agenda-items
├── components/            Hero, DienstKaart, Ervaring, CitaatBand, …
├── layouts/Base.astro     head, fonts (lokaal), Umami-injectie
└── pages/                 routes (index, behandeling/, begeleiding/, …)
public/admin/              Decap CMS (index.html + config.yml)
scripts/                   copy-decap, generate-nginx, migrate-images
nginx/                     nginx-template (cache/redirects)

Oude URL's

De redirects van de oude BaseKit-site (/home, /ervaringen2, /behandeling/index, …) staan als 301's in nginx/nginx.conf.template.