feat(db): mesh data model — meshes, members, invites, audit log

- pgSchema "mesh" with 4 tables isolating the peer mesh domain
- Enums: visibility, transport, tier, role
- audit_log is metadata-only (E2E encryption enforced at broker/client)
- Cascade on mesh delete, soft-delete via archivedAt/revokedAt

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Alejandro Gutiérrez
2026-04-04 21:19:32 +01:00
commit d3163a5bff
1384 changed files with 314925 additions and 0 deletions

79
apps/web/package.json Normal file
View File

@@ -0,0 +1,79 @@
{
"name": "web",
"version": "1.0.0",
"private": true,
"type": "module",
"scripts": {
"build": "next build",
"clean": "git clean -xdf .cache .next .turbo node_modules",
"dev": "next dev",
"format": "prettier --check . --ignore-path ../../.gitignore",
"lint": "eslint",
"start": "next start",
"typecheck": "tsc --noEmit"
},
"prettier": "@turbostarter/prettier-config",
"dependencies": {
"@ai-sdk/react": "2.0.86",
"@anaralabs/lector": "3.7.3",
"@formatjs/intl-localematcher": "0.6.2",
"@hookform/resolvers": "5.2.2",
"@next/bundle-analyzer": "16.0.10",
"@number-flow/react": "0.5.10",
"@tanstack/react-query": "catalog:",
"@tanstack/react-query-devtools": "catalog:",
"@tanstack/react-table": "catalog:",
"@turbostarter/ai": "workspace:*",
"@turbostarter/analytics-web": "workspace:*",
"@turbostarter/api": "workspace:*",
"@turbostarter/auth": "workspace:*",
"@turbostarter/billing": "workspace:*",
"@turbostarter/cms": "workspace:*",
"@turbostarter/db": "workspace:*",
"@turbostarter/email": "workspace:*",
"@turbostarter/i18n": "workspace:*",
"@turbostarter/monitoring-web": "workspace:*",
"@turbostarter/shared": "workspace:*",
"@turbostarter/ui": "workspace:*",
"@turbostarter/ui-web": "workspace:*",
"accept-language": "3.0.20",
"dayjs": "1.11.19",
"envin": "catalog:",
"marked": "16.4.1",
"motion": "12.23.24",
"negotiator": "1.0.0",
"next": "16.0.10",
"next-i18n-router": "5.5.5",
"next-themes": "0.4.6",
"nuqs": "2.7.2",
"pdfjs-dist": "5.4.530",
"react": "catalog:react19",
"react-dom": "catalog:react19",
"react-dropzone": "14.3.8",
"react-hook-form": "catalog:",
"react-markdown": "10.1.0",
"react-qr-code": "2.0.18",
"react-shiki": "0.9.1",
"rehype-katex": "7.0.1",
"rehype-raw": "7.0.0",
"remark-gfm": "4.0.1",
"remark-math": "6.0.0",
"sonner": "2.0.7",
"zod": "catalog:",
"zustand": "5.0.8"
},
"devDependencies": {
"@svgr/webpack": "8.1.0",
"@tailwindcss/postcss": "4.1.16",
"@turbostarter/eslint-config": "workspace:*",
"@turbostarter/prettier-config": "workspace:*",
"@turbostarter/tsconfig": "workspace:*",
"@types/node": "catalog:node22",
"@types/react": "catalog:react19",
"@types/react-dom": "catalog:react19",
"autoprefixer": "10.4.21",
"eslint": "catalog:",
"prettier": "catalog:",
"typescript": "catalog:"
}
}