Geen omschrijving
  • Astro 71.4%
  • TypeScript 8.5%
  • CSS 7.9%
  • JavaScript 4.8%
  • Shell 4.3%
  • Andere 3.1%
Zoek een bestand
Jesse van Mullem e8bc75dd86 Add Forgejo OAuth Client ID to CMS config (test environment)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-07 20:51:12 +02:00
nginx Pre-fill CMS config for test environment (only Client ID left to add) 2026-06-07 14:26:34 +02:00
public Add Forgejo OAuth Client ID to CMS config (test environment) 2026-06-07 20:51:12 +02:00
scripts Rebuild SME Holland site with Astro + Decap CMS 2026-06-07 13:56:44 +02:00
src Fix broken MoU images: they 404 on the origin (HTML downloaded as .jpg) 2026-06-07 14:18:54 +02:00
.dockerignore Rebuild SME Holland site with Astro + Decap CMS 2026-06-07 13:56:44 +02:00
.env.example Rebuild SME Holland site with Astro + Decap CMS 2026-06-07 13:56:44 +02:00
.gitignore Rebuild SME Holland site with Astro + Decap CMS 2026-06-07 13:56:44 +02:00
.nvmrc Rebuild SME Holland site with Astro + Decap CMS 2026-06-07 13:56:44 +02:00
astro.config.mjs Rebuild SME Holland site with Astro + Decap CMS 2026-06-07 13:56:44 +02:00
docker-compose.yml Rebuild SME Holland site with Astro + Decap CMS 2026-06-07 13:56:44 +02:00
Dockerfile Rebuild SME Holland site with Astro + Decap CMS 2026-06-07 13:56:44 +02:00
package.json Rebuild SME Holland site with Astro + Decap CMS 2026-06-07 13:56:44 +02:00
README.md Rebuild SME Holland site with Astro + Decap CMS 2026-06-07 13:56:44 +02:00
tsconfig.json Rebuild SME Holland site with Astro + Decap CMS 2026-06-07 13:56:44 +02:00

SME Holland — website

Moderne website van Stichting Sustainable Meat Ethiopia (SME Holland), gebouwd met Astro en Decap CMS.

  • Astro — snelle, statische site (HTML), geserveerd door nginx.
  • ✍️ Decap CMS — lokaal gehost (geen CDN), bewerkbaar via /admin/.
  • 🔑 Forgejo/Gitea login — OAuth2 met PKCE, alleen een Client ID nodig (geen secret, geen proxy).
  • 🐳 Docker — makkelijk te deployen met Coolify via de meegeleverde Dockerfile.
  • 🖼️ Afbeeldingen + cache — alle media lokaal in public/uploads, met cache die vanuit de CMS te regelen is.
  • 📄 ANBI — jaarverslagen, balansen en pdf's eenvoudig te uploaden via de CMS.

Inhoud bewerken (voor het bestuur)

  1. Ga naar https://<domein>/admin/ (bijv. https://sme-holland.org/admin/).
  2. Log in met je Forgejo-account.
  3. Pas teksten, foto's en documenten aan. Bij opslaan/publiceren wordt automatisch een commit gemaakt in Forgejo en bouwt Coolify de site opnieuw.

Beschikbare onderdelen in de CMS:

Onderdeel Wat
Site settings Naam, contactgegevens, bankrekening, ANBI-nummers, afbeeldingscache
Home page Hero, statistieken, kaarten, missietekst
Content sections Secties voor About, Background, Project en Somaliland (herschikbaar via "Order")
Newsletters Nieuwsbrieven (bijv. het waterproject in Somaliland)
Board members Bestuursleden (naam, rol, foto)
ANBI page Introtekst van de ANBI-pagina
ANBI documents Jaarverslagen / balansen / overige pdf's — hier upload je de pdf's
Photo gallery Foto's & video

ANBI-pdf uploaden

CMS → ANBI documentsNew ANBI document → titel, jaar en categorie invullen, PDF document uploaden → Publish. De pdf verschijnt automatisch onder het juiste jaar op de ANBI-pagina.


Forgejo OAuth-app aanmaken (eenmalig)

De CMS-login gebruikt een OAuth2-applicatie in Forgejo. Aanmaken:

  1. In Forgejo: Settings → Applications → Manage OAuth2 Applications (op org- of gebruikersniveau).
  2. Application Name: bijv. SME Holland CMS.
  3. Redirect URI: https://<domein>/admin/ (bijv. https://sme-holland.org/admin/).
  4. Confidential Client: uitvinken (PKCE, geen secret nodig).
  5. Opslaan en de Client ID kopiëren → zet deze als FORGEJO_CLIENT_ID (zie hieronder).
  6. Zorg dat CORS aanstaat in Forgejo (Forgejo ≥ 1.21.4 / Gitea ≥ 1.20). In app.ini:
    [cors]
    ENABLED = true
    

De ingelogde gebruiker moet schrijfrechten hebben op de repo SMEholland/SMEHollandSite.


Deployen met Coolify

  1. New Resource → Application en koppel de Forgejo-repo SMEholland/SMEHollandSite.
  2. Build Pack: Dockerfile (Coolify gebruikt de Dockerfile in de repo).
  3. Stel de environment variables in (zie tabel). Belangrijkste: FORGEJO_CLIENT_ID.
  4. Koppel het domein; Coolify regelt HTTPS. De container luistert op poort 80.
  5. (Aanbevolen) Zet in Forgejo een webhook naar Coolify zodat de site herbouwt bij elke wijziging — ook bij wijzigingen vanuit de CMS.

Environment variables

Variabele Standaard Uitleg
SITE_URL https://sme-holland.org Productie-URL (canonical, sitemap, OG). Zet ook als build argument als het domein anders is.
FORGEJO_CLIENT_ID (leeg) Verplicht. Client ID van de OAuth-app.
FORGEJO_BASE_URL https://code.securityasaservice.org URL van de Forgejo-server.
FORGEJO_REPO SMEholland/SMEHollandSite De repo.
FORGEJO_BRANCH main Branch waarnaar de CMS commit.
IMAGE_CACHE_MAX_AGE (uit CMS) Optioneel: overschrijf de cache max-age (seconden).
IMAGE_CACHE_ENABLED (uit CMS) Optioneel: true/false om caching aan/uit te zetten.

Afbeeldingscache beheren vanuit de CMS

CMS → Site settings → General → Image cache:

  • Cache version — verhoog dit getal nadat je een afbeelding hebt vervangen. Aan alle afbeeldings-URL's wordt ?v=<version> toegevoegd, zodat browsers de nieuwe versie laden.
  • Browser cache max-age (seconds) — hoe lang browsers afbeeldingen/pdf's bewaren (standaard 30 dagen). Wordt door nginx als Cache-Control meegegeven.
  • Enable image caching — caching helemaal aan of uit.

Deze waarden worden bij het bouwen meegenomen; ze kunnen op de server nog overschreven worden met IMAGE_CACHE_MAX_AGE / IMAGE_CACHE_ENABLED. Astro-assets (/_astro/…) hebben een eigen, permanente cache (ze krijgen een unieke hash).


Lokaal ontwikkelen

Vereist Node ≥ 22.12.

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

De CMS lokaal bewerken zonder Forgejo-login (schrijft direct naar je schijf):

# in een tweede terminal:
npx decap-server
# open daarna http://localhost:4321/admin/

Productie-build testen:

npm run build        # output in dist/
npm run preview

Of de volledige container lokaal:

FORGEJO_CLIENT_ID=... docker compose up --build   # http://localhost:8080

Projectstructuur

├── public/
│   ├── admin/            # Decap CMS (index.html + config.yml; bundle wordt lokaal gekopieerd)
│   └── uploads/          # ALLE afbeeldingen en pdf's van de oude site (+ nieuwe uploads)
├── src/
│   ├── content/          # Inhoud (markdown/json) — beheerd via de CMS
│   ├── components/       # Astro-componenten (Header, Footer, Section, …)
│   ├── layouts/          # BaseLayout
│   ├── lib/              # settings, navigatie, helpers
│   ├── pages/            # Routes
│   ├── styles/           # global.css (huisstijl: Ethiopische vlagkleuren uit het logo)
│   └── content.config.ts # Schema's van de content-collecties
├── nginx/                # nginx-template + entrypoint (cache + OAuth-injectie)
├── scripts/              # build-helpers (Decap kopiëren, cache-hints schrijven)
├── Dockerfile
└── docker-compose.yml

Opmerkingen

  • Geen CDN: de Decap-bundle wordt bij het bouwen uit node_modules naar public/admin/ gekopieerd (scripts/copy-decap.mjs) en lokaal geserveerd.
  • Alle media lokaal: afbeeldingen en pdf's staan in de repo onder public/uploads/ en worden door nginx geserveerd (met de cache-instellingen hierboven).
  • De kerncontent is Engels; ANBI, donaties en de Somaliland-nieuwsbrieven zijn Nederlands — net als op de oorspronkelijke site.