Geen omschrijving
- HTML 95.2%
- Dockerfile 3%
- Shell 1.8%
- brand indigo → Memoriaal-rood (#A81815, hover #911512) - Inter → systeemfont; theme-color + favicon zwart/rood - login + verify: witte kaart met zwart logopaneel (echt logo-PNG), rode knoppen, code-veld met rode rand, slogan onderin - ingelogde header: zwart met logo + klantnaam, rode slogan-balk, nav-tabs met rood actief blok, 'Uploaden' → 'Aanleveren' - cards/knoppen hoekig (3px), borders #e5e5e5 - img/logo_memoriaal_wit.png + logo_hexagon_wit.png toegevoegd |
||
|---|---|---|
| src | ||
| .env.example | ||
| .gitignore | ||
| Dockerfile | ||
| entrypoint.sh | ||
| nginx.conf | ||
| README.md | ||
Memoriaal — Klantportaal
Externe SPA voor klanten van Memoriaal Administratiebureau & Belastingadviseurs.
Communiceert alleen via HTTPS/JSON met de DMS-backend
(/portaal-api/v1/...). Geen eigen database, geen server-side render — puur
statische bestanden geserveerd door Nginx.
Deploy op Coolify
- Maak een nieuw project aan in Coolify → New Resource → Public / Private Git Repository.
- Repo-URL:
https://code.securityasaservice.org/jemasupport/memoriaal-klantportaal.git - Build pack:
Dockerfile - Port exposed:
80 - Environment variables:
API_BASE_URL=https://testdms.memoriaal.com/portaal-api/v1 - Domains:
klant.memoriaal.com(Traefik regelt TLS + Let's Encrypt). - Bij eerste deploy: DMS-kant moet
PORTAAL_URL=https://klant.memoriaal.comkrijgen in Coolify-env → CORS-headers gaan dan automatisch open.
Lokale test
docker build -t klantportaal .
docker run --rm -p 8080:80 \
-e API_BASE_URL=https://testdms.memoriaal.com/portaal-api/v1 \
klantportaal
# open http://localhost:8080
Bouwlogica
index.htmlis de shell. Alpine.js + Tailwind via CDN — geen build-step.app.jsbevat alle logica in één file, met per-view rendering.entrypoint.shvervangt${API_BASE_URL}inapp.jsop container-start, zodat je één image kunt bouwen voor test + productie.- Session-token gaat in
localStorage; wordt bij verlopen automatisch uitgelogd.
Beveiliging
- Nginx-config zet strikte security headers (CSP, X-Frame-Options, Referrer-Policy).
- Geen server-side executie — puur file-serving; aanval-oppervlak is de DMS-API zelf.
- Sessies verlopen na 12 uur. Klant-users worden per-klant beheerd in
DMS (
/admin/klantportaal/klantuser/).