source: Klonkt/package.json@ d352b63

main
Last change on this file since d352b63 was 8afbdd6, checked in by roboburr <roboburr@…>, 3 months ago

feat: viewer role + artists directory + Klonkt Hub Beta rebrand

Viewer role (replaces the separate view-mode/readonly toggle):

  • 'kijker' is now a real role (VALID_ROLES) selectable in Admin. May view EVERYTHING including Admin, but cannot modify anything.
  • isViewer(user) (= role kijker or legacy readonly flag) is the source; requireGod/requireSiteManager(BySlug) let a viewer through (viewing), the global guard 403s every write. Existing readonly accounts are migrated on each role change (readonly=0).
  • Write leaks via GET patched: /prutter/new (INSERT) blocks for viewers, /prutter/:id skips markAsRead (UPDATE); WS upgrade rejects viewers (the HTTP guard doesn't cover WebSockets).
  • Clean "Viewer mode" page (viewer-blocked) instead of raw 403 text; styled sticky banner; account page shows read-only UI instead of an upload button that silently 403s. canMutate hides write buttons.

Scalability (>50 artists):

  • Hub home shows max 24 (most active first) + "All N artists ->".
  • New searchable, paginated /artiesten directory (hub only).
  • 'user' + 'artiesten' reserved as slugs.

Rebrand PrutFolio v1 -> Klonkt Hub Beta (footer, PWA manifest, account/
admin texts, default page title, startup, README; internal package +
PWA id 'prutfolio' remain for stability).

Co-Authored-By: Claude <noreply@…>

  • Property mode set to 100644
File size: 1.0 KB
RevLine 
[7bc636b]1{
2 "name": "prutfolio",
3 "version": "1.0.0-alpha.1",
[8afbdd6]4 "description": "Klonkt Hub Beta — persoonlijk multi-site platform met community, realtime, en (later) E2EE DMs. Forked van PrutCMS v9 (PHP) naar Node + SQLite + htmx.",
[7bc636b]5 "type": "module",
6 "main": "src/server.js",
7 "scripts": {
8 "start": "node src/server.js",
9 "dev": "node --watch src/server.js",
[9e27d64]10 "migrate": "node src/db/migrate.js",
11 "reset-admin": "node scripts/reset-admin.mjs"
[7bc636b]12 },
13 "dependencies": {
14 "bcryptjs": "^2.4.3",
15 "better-sqlite3": "^11.3.0",
16 "body-parser": "^1.20.2",
17 "dotenv": "^16.3.1",
18 "ejs": "^3.1.9",
19 "express": "^4.18.2",
20 "express-rate-limit": "^7.4.1",
21 "express-session": "^1.17.3",
22 "ffmpeg-static": "^5.2.0",
23 "fluent-ffmpeg": "^2.1.3",
24 "helmet": "^7.1.0",
25 "htmx.org": "1.9.12",
26 "marked": "^11.1.1",
27 "multer": "^1.4.5-lts.1",
[9e27d64]28 "nodemailer": "^6.9.15",
[7bc636b]29 "sanitize-html": "^2.17.3",
30 "uuid": "^9.0.1",
31 "ws": "^8.18.0"
32 },
33 "engines": {
34 "node": ">=20"
35 }
36}
Note: See TracBrowser for help on using the repository browser.