83 lines
2.7 KiB
Markdown
83 lines
2.7 KiB
Markdown
---
|
|
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.
|