teach/package.json
Ramon 456d664718
All checks were successful
dev - build & deploy naar test / build-and-deploy (push) Successful in 1m14s
perf: compressie, cache-headers, cache-busting en parallel ladende scripts (v0.3.81-beta)
- @fastify/compress (brotli quality 4 + gzip, global): alle statische assets én API-JSON (zoals /me/data) gaan gecomprimeerd over de lijn - eerste lading van ~715 KB naar grofweg een derde
- Nieuw src/frontend.js: index.html wordt bij boot één keer gelezen, ?v=__V__ wordt vervangen door de app-versie en de pagina wordt uit het geheugen geserveerd met no-cache
- Cache-beleid per prefix: js/css een jaar immutable (veilig dankzij de geversioneerde URL's), fonts 7 dagen, afbeeldingen 1 dag met zwakke etag als 304-vangnet - herhaalbezoek kost vrijwel geen bytes meer
- Alle 31 scripts staan nu met defer in de head: parallel downloaden, uitvoeren in dezelfde dwingende volgorde (core → widgets → board → app); font-preload bewust ongeversioneerd (moet byte-gelijk blijven aan de url() in teach.css)
- Compress geregistreerd vóór de api/frontend-registraties (onSend-hook geldt alleen voor latere routes) - geborgd met een teksttest
- 6 nieuwe tests (test/frontend.test.js): versie-injectie, cache-headers per prefix, gzip+brotli round-trip, 304 op etag, defer/?v= op elk script

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0149FgUQvuwxKKEdvQGmNngF
2026-07-16 19:01:25 +02:00

24 lines
583 B
JSON

{
"name": "teach",
"version": "0.1.0",
"description": "Teach digibord - Fastify server met static frontend en PostgreSQL",
"type": "module",
"main": "src/server.js",
"engines": {
"node": ">=20"
},
"scripts": {
"start": "node src/server.js",
"dev": "node --watch src/server.js",
"test": "node --test"
},
"dependencies": {
"@fastify/compress": "^8.3.1",
"@fastify/cookie": "^11.1.1",
"@fastify/helmet": "^13.1.0",
"@fastify/rate-limit": "^11.1.0",
"@fastify/static": "^10.1.0",
"fastify": "^5.1.0",
"pg": "^8.13.1"
}
}