- Astro 70.5%
- JavaScript 12.1%
- TypeScript 7.9%
- CSS 6.8%
- Dockerfile 1.5%
- Andere 1.2%
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> |
||
|---|---|---|
| nginx | ||
| public | ||
| scripts | ||
| src | ||
| .dockerignore | ||
| .gitignore | ||
| astro.config.mjs | ||
| dev.sh | ||
| Dockerfile | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| tsconfig.json | ||
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)
- 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)
- Redirect-URI:
- Kopieer de Client-ID en vul die in bij
app_idin public/admin/config.yml. - Commit & push. Iedereen met schrijfrechten op de repo
(
MAL/MALWebopcode.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
- Nieuwe resource → Dockerfile → koppel deze repo (branch
main). - Poort: 8080 (de container draait nginx als niet-root).
- 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 (30–100)
Cache-Controlvoor HTML (minuten), afbeeldingen (dagen) en gehashte assets (dagen)
scripts/generate-nginx.mjszet die waarden bij iedere build om innginx/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.