- pnpm monorepo (apps/client + apps/server) - Server: Express + node:sqlite with numbered migration runner, REST API for all 9 features (members, events, chores, shopping, meals, messages, countdowns, photos, settings) - Client: React 18 + Vite + TypeScript + Tailwind + Framer Motion + Zustand - Theme system: dark/light + 5 accent colors, CSS custom properties, anti-FOUC script, ThemeToggle on every surface - AppShell: collapsible sidebar, animated route transitions, mobile drawer - Phase 2 features: Calendar (custom month grid, event chips, add/edit modal), Chores (card grid, complete/reset, member filter, streaks), Shopping (multi-list tabs, animated check-off, quick-add bar, member assign) - Family member CRUD with avatar, color picker - Settings page: theme/accent, photo folder, slideshow, weather, date/time - Docker: multi-stage Dockerfile, docker-compose.yml, entrypoint with PUID/PGID - Unraid: CA XML template, CLI install script, UNRAID.md guide - .gitignore covering node_modules, dist, db files, secrets, build artifacts Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
114 lines
3.7 KiB
XML
114 lines
3.7 KiB
XML
<?xml version="1.0"?>
|
|
<Container version="2">
|
|
<!--
|
|
Unraid Community Applications Template
|
|
Family Planner — self-hosted family dashboard
|
|
|
|
To use: place this file in /boot/config/plugins/dockerMan/templates-user/
|
|
Then open the Docker tab → Add Container and select "Family Planner".
|
|
-->
|
|
|
|
<Name>family-planner</Name>
|
|
<Repository>ghcr.io/your-username/family-planner:latest</Repository>
|
|
<Registry>https://ghcr.io/your-username/family-planner</Registry>
|
|
<Network>bridge</Network>
|
|
<Shell>sh</Shell>
|
|
<Privileged>false</Privileged>
|
|
|
|
<Overview>
|
|
A sleek, modern family dashboard with a shared calendar, chore assignments,
|
|
shopping lists, dinner meal planner, message board, countdown timers,
|
|
and a full-screen photo slideshow screensaver.
|
|
Includes dark/light mode with accent color selection.
|
|
</Overview>
|
|
|
|
<Category>Productivity: Tools:</Category>
|
|
<WebUI>http://[IP]:[PORT:3001]/</WebUI>
|
|
|
|
<!-- Update this once you have a real icon hosted somewhere -->
|
|
<Icon>https://raw.githubusercontent.com/your-username/family-planner/main/unraid/icon.png</Icon>
|
|
|
|
<ExtraParams>--restart=unless-stopped</ExtraParams>
|
|
|
|
<!-- ── Ports ──────────────────────────────────────────────────────── -->
|
|
<Config
|
|
Name="Web UI Port"
|
|
Target="3001"
|
|
Default="3001"
|
|
Mode="tcp"
|
|
Description="Port the Family Planner web interface is served on."
|
|
Type="Port"
|
|
Display="always"
|
|
Required="true"
|
|
Mask="false">3001</Config>
|
|
|
|
<!-- ── Volumes ────────────────────────────────────────────────────── -->
|
|
<Config
|
|
Name="App Data"
|
|
Target="/data"
|
|
Default="/mnt/user/appdata/family-planner"
|
|
Mode="rw"
|
|
Description="Persistent storage for the SQLite database and app configuration. Must be writable."
|
|
Type="Path"
|
|
Display="always"
|
|
Required="true"
|
|
Mask="false">/mnt/user/appdata/family-planner</Config>
|
|
|
|
<Config
|
|
Name="Photos Path"
|
|
Target="/photos"
|
|
Default="/mnt/user/Photos"
|
|
Mode="ro"
|
|
Description="Path to your photo library. Subfolders are scanned automatically. Mounted read-only."
|
|
Type="Path"
|
|
Display="always"
|
|
Required="false"
|
|
Mask="false">/mnt/user/Photos</Config>
|
|
|
|
<!-- ── Environment variables ──────────────────────────────────────── -->
|
|
<Config
|
|
Name="PUID"
|
|
Target="PUID"
|
|
Default="99"
|
|
Mode=""
|
|
Description="User ID the container process runs as. Use 'id username' in the Unraid terminal to find your UID. Unraid default nobody=99."
|
|
Type="Variable"
|
|
Display="advanced"
|
|
Required="false"
|
|
Mask="false">99</Config>
|
|
|
|
<Config
|
|
Name="PGID"
|
|
Target="PGID"
|
|
Default="100"
|
|
Mode=""
|
|
Description="Group ID the container process runs as. Unraid default users=100."
|
|
Type="Variable"
|
|
Display="advanced"
|
|
Required="false"
|
|
Mask="false">100</Config>
|
|
|
|
<Config
|
|
Name="TZ"
|
|
Target="TZ"
|
|
Default="America/New_York"
|
|
Mode=""
|
|
Description="Your timezone. Used for correct date and time display. See https://en.wikipedia.org/wiki/List_of_tz_database_time_zones"
|
|
Type="Variable"
|
|
Display="advanced"
|
|
Required="false"
|
|
Mask="false">America/New_York</Config>
|
|
|
|
<Config
|
|
Name="PORT"
|
|
Target="PORT"
|
|
Default="3001"
|
|
Mode=""
|
|
Description="Internal application port. Only change this if you have a port conflict and know what you are doing."
|
|
Type="Variable"
|
|
Display="advanced"
|
|
Required="false"
|
|
Mask="false">3001</Config>
|
|
|
|
</Container>
|