{ "_meta": { "updated_at": "2026-06-09T18:56:37.176Z", "commit": "99f59c3999f4ef992f01ef8f8a38c1d86d2f2a0f", "version": 3 }, "languages": [ "TypeScript", "SQL" ], "frameworks": [ "Hono 4.12.23", "React 19", "Drizzle ORM 0.45.2" ], "tools": [ "Vite 8.0.16", "vite-plugin-pwa 1.3.0", "Vitest", "drizzle-kit 0.31.10", "ESLint", "node-cron" ], "build_system": "pnpm workspaces + tsc (api) + vite build (pwa)", "test_framework": "Vitest", "package_manager": "pnpm 11.5.1", "runtime": "Node.js 22 LTS", "database": "MariaDB via mysql2 3.22.4", "cache": "Redis (ioredis — available in infra; not yet wired; in-memory EventEmitter used for Phase 4 list SSE fan-out)", "auth": "Authelia OIDC — authorization_code + PKCE via @hono/oidc-auth 1.8.3", "calendar_backend": "Fastmail CalDAV via tsdav 2.2.2 + ical.js 2.2.1", "calendar_ui": "@schedule-x/calendar 4.6.0", "server_state": "@tanstack/react-query 5.101.0", "client_state": "zustand 5.0.14", "routing": "react-router 7.17.0 (BrowserRouter, /calendar + /lists + /lists/:listId)", "drag_and_drop": "@dnd-kit/core 6.3.1 + @dnd-kit/sortable 10.0.0 (list item reorder)", "fractional_rank": "fractional-indexing 3.2.0 (list item ordering — utf8mb4_bin collation in DB)", "content_formats": [ "TypeScript (source)", "SQL (Drizzle migrations)", "iCalendar / VCALENDAR (CalDAV payloads)", "Markdown (planning docs)" ], "infra": { "hosting": "Unraid + Docker Compose", "networking": "Pangolin/Newt tunnel (no open ports), split-DNS" }, "workspaces": { "root": "familysync (pnpm workspace root)", "api": "@familysync/api — apps/api", "pwa": "@familysync/pwa — apps/pwa" } }