You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Replaced personal names with generic "care recipients" in 18 files
- Removed specific location (city, coordinates) from all docs
- Removed internal network IPs from docs, configs, and nginx
- Changed default email from personal to admin@example.com
- Removed personal domain references
- Genericized hardware specs in roadmap
- Auto-detect gateway in watchdog instead of hardcoded IP
- Only "Built with love for Don & Colleen" remains (project identity)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: CHANGELOG.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,7 +6,7 @@ All notable changes to Senior TV are documented here.
6
6
7
7
### First Public Beta
8
8
9
-
The first public release of Senior TV. A fully functional kiosk entertainment, care, and communication system for seniors, deployed and battle-tested on a live system for Don & Colleen in Sun City, CA.
9
+
The first public release of Senior TV. A fully functional kiosk entertainment, care, and communication system for seniors, deployed and battle-tested on a live system.
10
10
11
11
### Entertainment
12
12
- 421 live TV channels via Pluto TV with category filters and HLS streaming
Copy file name to clipboardExpand all lines: CLAUDE.md
+12-12Lines changed: 12 additions & 12 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,7 +4,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
4
4
5
5
## Project Overview
6
6
7
-
Senior TV is a full-screen kiosk-style entertainment, communication, and care system for Don & Colleen (both 95, born 1931). Don has mid-stage dementia; Colleen has advanced Alzheimer's. TV is their primary daily activity. The system runs on a GMKtec NucBox K11 mini PC (Ubuntu 24.04, 4K) connected to a Samsung 65" TV via HDMI in Sun City, CA.
7
+
Senior TV is a full-screen kiosk-style entertainment, communication, and care system for the care recipients (elderly couple with dementia/Alzheimer's). TV is their primary daily activity. The system runs on a mini PC (Ubuntu 24.04, 4K) connected to a Samsung 65" TV via HDMI.
8
8
9
9
## Architecture
10
10
@@ -15,9 +15,9 @@ Senior TV is a full-screen kiosk-style entertainment, communication, and care sy
15
15
-**SQLite** (`senior_tv.db`) — pills, calendar, birthdays, messages, favorites, settings; WAL mode for concurrent reads
-**SSE** (`/events`) — pushes pill reminders, doorbell alerts, show notifications, family messages to TV
18
-
-**Jellyfin API** (`jellyfin_api.py`) — media library at `192.168.50.20:8096` (network server)
18
+
-**Jellyfin API** (`jellyfin_api.py`) — media library on network server (URL configured in settings)
19
19
-**Pluto TV** (`pluto_tv.py`) — 421 free live TV channels via HLS, logos via `path` key (not `url`)
20
-
-**Immich API** (`immich_api.py`) — family photos from Immich at `192.168.50.165:2283` (network server); photos proxied through `/api/immich-photo/<id>` to hide API key
20
+
-**Immich API** (`immich_api.py`) — family photos from Immich on network server (URL configured in settings); photos proxied through `/api/immich-photo/<id>` to hide API key
21
21
-**Smart Home** (`smart_home.py`) — Frigate person detection on front_door camera, HA integration, room presence tracking
22
22
-**Display** — forced to 1920x1080 (no 4K content); `monitors.xml` covers both HDMI ports, `start.sh` enforces via Mutter DBus API
23
23
-**HDMI audio** (`fix_audio.sh`) — finds any HDMI sink via PipeWire `object.path`, works with either HDMI port; called by `start.sh` and `watchdog.sh`
@@ -45,8 +45,8 @@ Custom skills in `.claude/skills/` are automatically loaded by Claude Code when
45
45
46
46
These are hard constraints, not suggestions. They're driven by the users' medical conditions.
47
47
48
-
-**Don** can follow structured content: game shows, sports, sitcoms, westerns
| Home Assistant | Network |Configured in settings| Long-lived token |
125
125
| Pluto TV | External | Public API | No auth |
126
-
| Open-Meteo | External | Public API | No auth (Sun City, CA: 33.7083, -117.1972) |
126
+
| Open-Meteo | External | Public API | No auth (coordinates configured in settings) |
127
127
128
128
**Important:** All services run on dedicated network servers. Nothing runs in Docker on this box — no nginx, no Jellyfin, no Immich. Flask runs directly on the host. Cloudflare tunnel points directly at `localhost:5000`.
129
129
130
130
## Deployment & Remote Access
131
131
132
132
-**Fully automated install**: `git clone <repo> && cd senior-tv && sudo ./install.sh` — configures everything including Jellyfin, Immich, and Cloudflare tunnel
133
-
-**Standardized credentials**: Jellyfin user `seniortv`/`seniortv`, Immich admin `bstoner@gmail.com`/`seniortv` (configurable via `.env`)
133
+
-**Standardized credentials**: Jellyfin user `seniortv`/`seniortv`, Immich admin `admin@example.com`/`seniortv` (configurable via `.env`)
134
134
-**Cloudflare Tunnel** for remote admin access (set `CLOUDFLARE_TUNNEL_TOKEN` in `.env`)
135
135
-**SSH** via Tailscale: `ssh seniortv@<hostname>` (key-only auth)
136
136
-**Tailscale** mesh VPN with SSH enabled (`tailscale up --ssh`)
@@ -150,7 +150,7 @@ SSE reconnects with exponential backoff (5s → 60s max). Alert sounds use Web A
150
150
### Content population
151
151
Media lives in `~/media/{movies,shows,music}/` (mounted read-only into the Jellyfin container). Two loader scripts:
152
152
153
-
-**`scripts/load_jellyfin_content.py`** (primary) — Downloads public domain content from Archive.org. 50 GB budget, rate limiting (auto-waits 60s on 429), resumes partial downloads, triggers Jellyfin library scan on completion. Categories: music (classicalfor Colleen), movies (westerns/comedy/drama), shows (game shows/sitcoms), ambient (fireplace/aquarium for wind-down).
153
+
-**`scripts/load_jellyfin_content.py`** (primary) — Downloads public domain content from Archive.org. 50 GB budget, rate limiting (auto-waits 60s on 429), resumes partial downloads, triggers Jellyfin library scan on completion. Categories: music (classical, suited for Alzheimer's care), movies (westerns/comedy/drama), shows (game shows/sitcoms), ambient (fireplace/aquarium for wind-down).
154
154
-**`scripts/load_jellyfin.sh`** (legacy) — Bash-based alternative, same Archive.org sources.
Copy file name to clipboardExpand all lines: CONTRIBUTING.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -20,7 +20,7 @@ These aren't suggestions. They're hard constraints driven by the users.
20
20
21
21
2.**36px minimum text** — Readable from a couch 8 feet away on a 65" TV. When in doubt, make it bigger.
22
22
23
-
3.**No cognitive load** — Don has mid-stage dementia. Colleen has advanced Alzheimer's. If a feature requires a decision, it should make that decision automatically.
23
+
3.**No cognitive load** — The care recipients have dementia/Alzheimer's. If a feature requires a decision, it should make that decision automatically.
24
24
25
25
4.**Dark theme, high contrast** — Light text on dark backgrounds. No thin fonts. No low-contrast decorative elements.
26
26
@@ -34,7 +34,7 @@ These aren't suggestions. They're hard constraints driven by the users.
34
34
35
35
### Good First Issues
36
36
37
-
-**Remove a hardcoded value** — Search for "Don", "Colleen", "Sun City", or hardcoded IPs. Make it configurable via the Settings admin page.
37
+
-**Remove a hardcoded value** — Search for hardcoded names, locations, or IPs. Make it configurable via the Settings admin page.
38
38
-**Improve an admin page** — Better mobile layout, clearer labels, inline help text.
39
39
-**Add a YouTube channel category** — Edit the seed data in `models.py`.
40
40
-**Improve test coverage** — `test_ui.py` has 93 tests but many features are untested.
Copy file name to clipboardExpand all lines: FEATURE_TOUR.md
+15-16Lines changed: 15 additions & 16 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,8 +1,8 @@
1
1
# Senior TV — Feature Tour
2
2
3
-
**A complete entertainment, care, and communication system for Don & Colleen**
3
+
**A complete entertainment, care, and communication system for seniors**
4
4
5
-
Built for a 65" Samsung TV connected to a GMKtec NucBox K11 mini PC. Designed for two 95-year-olds with dementia and Alzheimer's — every feature prioritizes simplicity, large text, and minimal cognitive load.
5
+
Built for a 65" Samsung TV connected to a mini PC. Designed for elderly viewers with dementia and Alzheimer's — every feature prioritizes simplicity, large text, and minimal cognitive load.
6
6
7
7
---
8
8
@@ -11,8 +11,8 @@ Built for a 65" Samsung TV connected to a GMKtec NucBox K11 mini PC. Designed fo
11
11
The home screen is a hotel-TV-style welcome page that adapts throughout the day.
12
12
13
13
**What you see:**
14
-
- Large clock, personalized greeting ("Good Morning, Colleen & Don!")
15
-
- Current weather for Sun City, CA
14
+
- Large clock, personalized greeting ("Good Morning!")
15
+
- Current weather for your configured location
16
16
- Next pill reminder and upcoming calendar event
17
17
- Menu on the left, live LA news stream on the right (morning only — hidden after 3 PM per care plan)
18
18
- After 3 PM: calming ambient video from Wind Down channels (Bob Ross, BBC Earth, nature, fireplace)
@@ -72,7 +72,7 @@ Powered by Jellyfin media server. Full library browsing with poster art.
72
72
73
73
## ▶️ YouTube — 36 Curated Channels
74
74
75
-
Hand-picked channels organized by category for Don & Colleen's interests.
75
+
Hand-picked channels organized by category for seniors' interests.
76
76
77
77
**Categories:**
78
78
-**Westerns:** Bonanza, The Rifleman, Death Valley Days
@@ -95,7 +95,7 @@ Hand-picked channels organized by category for Don & Colleen's interests.
95
95
**You and Cheryl can send messages, photos, and videos directly to their TV.**
96
96
97
97
**How it works:**
98
-
1. Go to the admin panel from your phone: `http://192.168.50.159:5000/admin/messages/send`
98
+
1. Go to the admin panel from your phone: `http://<device-ip>:5000/admin/messages/send`
99
99
2. Type a message, optionally attach a photo or video
100
100
3. Hit "Send to TV Now"
101
101
4. A notification pops up on the TV immediately: "💌 New Message from Brad!"
@@ -123,7 +123,7 @@ News is hidden from the home screen after 3 PM (care plan — reduces evening ag
123
123
124
124
## 🌤️ Weather
125
125
126
-
Full weather display for Sun City, CA.
126
+
Full weather display for your configured location.
127
127
- Current temperature, conditions, humidity, wind
128
128
- 5-day forecast with daily highs/lows
129
129
- Weather summary always visible on the home screen
@@ -140,7 +140,7 @@ Full weather display for Sun City, CA.
140
140
141
141
**Pre-loaded with US holidays** through 2027 (Memorial Day, Independence Day, Thanksgiving, Christmas, etc.)
142
142
143
-
**Birthdays:**Don (March 3) and Colleen (March 16) — full-screen birthday greetings at 9 AM with a Happy Birthday melody and age display.
143
+
**Birthdays:**Full-screen birthday greetings at 9 AM with a Happy Birthday melody and age display.
0 commit comments