Files
anouma/package.json
T
maro 65b6eeac51 Add privacy-friendly analytics and cookie consent, integrated into the CMS
Adds a first-party analytics system with no third-party trackers and no
persistent per-visitor identifiers: events are grouped into sessions via a
daily-rotating pseudonymous hash (IP+UA+host, HMAC-salted, never stored raw).

- New "Analytics" section in the Payload admin, gated by a canViewAnalytics
  permission on Users, following the existing custom-admin-view pattern
  used by the calendar feature
- Sessions, page views, unique visitors, top/entry/exit pages, events,
  device/browser breakdown, date range filter with period comparison
- Raw events and daily aggregate rollups as their own collections, with
  configurable retention and a cron endpoint that rolls up before purging
- Cookie consent banner (necessary/preferences/statistics) with categories
  and copy editable from a new CMS global; a track() helper that is a
  complete no-op without statistics consent, so nothing is ever sent
  before a visitor opts in
- track() calls wired into the booking flow, contact form, and navigation
2026-09-06 21:59:59 +02:00

51 lines
1.4 KiB
JSON

{
"name": "anouma",
"version": "0.1.0",
"private": true,
"type": "module",
"scripts": {
"dev": "tsx watch server.ts",
"build": "next build",
"start": "NODE_ENV=production tsx server.ts",
"lint": "eslint",
"test": "echo \"No automated test suite configured yet — add one (e.g. vitest) and update this script.\"",
"payload": "payload",
"generate:types": "payload generate:types",
"generate:importmap": "payload generate:importmap",
"migrate": "payload migrate",
"migrate:create": "payload migrate:create",
"seed": "payload run scripts/seed.ts",
"seo:check": "payload run scripts/seo-check.ts"
},
"dependencies": {
"@payloadcms/db-postgres": "^3.88.0",
"@payloadcms/next": "^3.88.0",
"@payloadcms/richtext-lexical": "^3.88.0",
"@payloadcms/ui": "^3.88.0",
"drizzle-orm": "^0.45.2",
"framer-motion": "^13.1.1",
"graphql": "^16.14.2",
"next": "16.3.2",
"nodemailer": "^9.0.5",
"payload": "^3.88.0",
"react": "19.2.8",
"react-dom": "19.2.8",
"recharts": "^3.10.1",
"sharp": "^0.35.3",
"tsx": "^4.23.12",
"ws": "^8.21.3"
},
"devDependencies": {
"@tailwindcss/postcss": "^4",
"@types/node": "^20",
"@types/nodemailer": "^8.0.1",
"@types/react": "^19",
"@types/react-dom": "^19",
"@types/ws": "^8.18.1",
"eslint": "^9",
"eslint-config-next": "16.3.2",
"tailwindcss": "^4",
"typescript": "^5"
}
}