--- type: project status: active source: git.alwisp.com repo: jason/family-planner repo_url: https://git.alwisp.com/jason/family-planner language: TypeScript branch: main tags: [repo, jason] updated: 2026-05-29 --- # family-planner **Repository:** [jason/family-planner](https://git.alwisp.com/jason/family-planner) · branch `main` · TypeScript ## Summary Self-hosted family dashboard for always-on displays — calendars, chores, shopping, meals, message board, countdowns, and photo screensaver in one Docker container ## Current status Active. Synced from Gitea on 2026-05-29. ## Documentation overview _Source: PROJECT.md_ # Family Planner — Project Reference A self-hosted family dashboard designed for always-on display (wall tablet, TV, Unraid server). Manages calendars, chores, shopping, meals, a message board, countdowns, and a photo screensaver — all in one Docker container with zero external services required. --- ## Tech Stack | Layer | Technology | |---|---| | **Runtime** | Node.js 22, Docker (Alpine) | | **Backend** | Express 4, TypeScript 5 | | **Database** | Node.js built-in SQLite (`node:sqlite`), WAL mode | | **File uploads** | Multer | | **Frontend** | React 18, TypeScript 5, Vite 5 | | **Styling** | Tailwind CSS 3, CSS custom properties (theme tokens) | | **Animation** | Framer Motion 11 | | **State / data** | TanStack Query 5, Zustand 4 | | **Routing** | React Router 6 | | **Icons** | Lucide React | | **Date utils** | date-fns 3 | | **Package manager** | pnpm (workspaces monorepo) | | **CI/CD** | Gitea Actions → Docker build & push to private registry | | **Deployment target** | Unraid (Community Applications / CLI install) | --- ## Repository Structure ``` family-planner/ ├── apps/ │ ├── client/ # React frontend │ │ └── src/ │ │ ├── components/ │ │ │ ├── layout/ │ │ │ │ └── AppShell.tsx # Sidebar, mobile drawer, page wrapper │ │ │ ├── screensaver/ │ │ │ │ └── Screensaver.tsx # Idle screensaver w/ Ken Burns slideshow │ │ │ └── ui/ # Design-system primitives │ │ │ ├── Avatar.tsx │ │ │ ├── Badge.tsx │ │ │ ├── Button.tsx │ │ │ ├── Input.tsx │ │ │ ├── Modal.tsx │ │ │ ├── Select.tsx │ │ │ ├── Textarea.tsx │ │ │ └── ThemeToggle.tsx …(truncated — see repo) ## Notes - Project file auto-created from repo documentation.