Deze repo bevat een statische Gatsby PWA in pwa/ die data ophaalt uit een achterliggende OpenWoo/OpenCatalogi API. Er is lokaal geen Redis/auth/etc. nodig.
- De PWA kan configureren via JSON-bestanden in
pwa/static/configFiles/(per domein/thema) - Of via Gatsby-omgevingsvariabelen (bij build-time)
Zie ook de quickstart met voorbeelden in pwa/README.md.
Helm-deploy? Zie helm/woo-website/README.md voor installatie en waarden.
Dit project gebruikt automatische semantische versionering op basis van
Conventional Commits — het commit-type bepaalt de versie-bump (fix: → patch,
feat: → minor, breaking change → major). Zie docs/CONTRIBUTING.md voor de
volledige werkwijze en de merge-regels per branch.
- Merge naar
development→ prereleasevX.Y.Z-development.N(git-tag, GitHub pre-release én Docker-image) - Merge naar
main(viabeta) → stabiele releasevX.Y.Zmet changelog
Docker-images staan op ghcr.io/conductionnl/woo-website-v2:
| Image-tag | Betekenis |
|---|---|
sha-<volledige commit-sha> |
Onveranderlijk anker per commit — deployments pinnen hierop of op een versietag |
vX.Y.Z |
Stabiele release (main) |
vX.Y.Z-development.N |
Ontwikkel-iteratie N richting versie X.Y.Z |
main / development |
Bewegende branch-pointers — alleen voor lokaal gemak |
Pin een omgeving (ook test/acceptatie) altijd op een volledige versietag of
sha-tag, nooit op development of main: bewegende pointers veranderen bij
elke merge, waardoor een herstart van de omgeving ongemerkt een nieuwere
(mogelijk kapotte) build binnenhaalt. Versietags en sha-tags worden nooit
overschreven — wat je pint, blijft wat er draait.
Deze codebase is gelicentieerd onder de EUPL-1.2 (zie LICENSE.md).
De CI controleert alle npm-dependencies tegen een lijst van goedgekeurde open-source licenties. Een aantal dependencies staat bewust op de uitzonderingslijst, ook al hebben ze geen geldige SPDX-licentie:
- NL Design System design tokens van gemeenten (
@nl-design-system-unstable/*-design-tokens,@amsterdam/design-system-*,@utrecht/design-tokens): deze packages bevatten de huisstijl van de betreffende gemeente of organisatie. Die visuele identiteit is eigendom van de gemeente en wordt daarom niet onder een open-source licentie uitgebracht — de licentie in het package verwijst naar de website van de gemeente. Dit template gebruikt die tokens uitsluitend om de eigen WOO-website van diezelfde gemeente te renderen, precies het gebruik waarvoor ze zijn gepubliceerd. linkfs: heeft geen licentieveld, maar de LICENSE-file in het package is een public-domain-verklaring (Unlicense).
De volledige lijst met uitzonderingen inclusief onderbouwing per package staat
in .license-overrides.json; het volledige
licentierapport van elke build is als artifact te vinden bij de
"License (npm)"-check in GitHub Actions.
- Ga naar de PWA-map:
cd pwa - Installeer dependencies:
npm ci(ofnpm install) - Start lokaal:
npm run dev - Bezoek:
http://localhost:8000
Let op: de localhost.json zet GATSBY_API_BASE_URL op /api (handig in Docker met NGINX-proxy). In pure Node dev is er geen proxy, dus kies één van deze opties:
- Zet env-mode aan met acceptatie-API: maak
pwa/static/.env.developmenten zetGATSBY_DEV_ENVIRONMENT=true(zie voorbeeld hieronder) - Of wijzig
pwa/static/configFiles/other/localhost/localhost.jsonzodatGATSBY_API_BASE_URLeen absolute URL is
Wil je env-variabelen gebruiken? Maak pwa/static/.env.development aan met minimaal:
GATSBY_ENV_VARS_SET=true
GATSBY_DEV_ENVIRONMENT=true
GATSBY_API_BASE_URL=https://jouw-api.example.com
GATSBY_NL_DESIGN_THEME_CLASSNAME=openwoo-theme
- Maak in de repo-root een
.envmet minimaal:
# Compose build args → gaan de container build in als Gatsby env
GATSBY_API_BASE_URL=https://jouw-api.example.com
GATSBY_NL_DESIGN_THEME_CLASSNAME=openwoo-theme
# Image tag/name (lokale waarden zijn prima)
CONTAINER_REGISTRY_BASE=local
CONTAINER_PROJECT_NAME=woo-website
APP_BUILD=dev
# Optioneel: CSP connect-src overrides (env-gestuurd i.p.v. hardcoded lijsten)
# Volledige vervanging van connect-src (spatie-gescheiden):
# GATSBY_CSP_CONNECT_SRC_FULL='https://api.example.com https://raw.githubusercontent.com/ConductionNL/'
# Extra hosts toevoegen (aan bestaande lijst):
# GATSBY_CSP_CONNECT_SRC_EXTRA='https://extra1.example.com https://extra2.example.com'
- Start:
docker compose up --build - Bezoek:
http://localhost:8000
Opmerking:
- Compose geeft de Gatsby-variabelen mee als build-args; je hebt dan geen
pwa/static/.env.productionnodig. - De NGINX-proxy voor
/apistaat inpwa/docker/default.conf. De frontend gebruikt ófAPI_BASE_URLuit sessionStorage (gezet via Gatsby env/JSON-config) óf valt terug op/api.
- Node dev:
pwa/static/.env.development(optioneel). AlsGATSBY_ENV_VARS_SETniet "true" is, gebruikt de app JSON-config uitpwa/static/configFiles/. - Productie build:
pwa/static/.env.productionof build-args tijdens Docker build (via Compose.envin de repo-root). - Docker Compose:
.envin de repo-root wordt automatisch ingelezen door Compose en levert de build-args indocker-compose.yml.
GATSBY_ENV_VARS_SET=trueom env-mode te forceren (anders JSON-config)GATSBY_API_BASE_URL= jouw backend API-base URLGATSBY_NL_DESIGN_THEME_CLASSNAME= CSS theme class (bijv.openwoo-theme)
Alle overige optionele UI-waarden en security.txt-velden zijn te vinden in de code en kunnen desgewenst worden toegevoegd, maar zijn niet nodig voor een basis-run.