logo

Frameserve – self-hosted digital photo frame served over the web (Go, Docker)

Posted by banktech48453 |3 hours ago |1 comments

banktech48453 3 hours ago

Built a small Go app that turns a local folder of photos into a full-screen browser slideshow.

The idea: mount a ./photos directory, run a container, point any browser at the IP — TV, tablet, old laptop — and it works like a digital photo frame. No gallery view. Also no uploads page. No database. The filesystem is the UI.

Features that felt worth getting right: 1. Crossfade / slide / instant transitions 2. URL-param config (?seconds=15&shuffle=1&fit=cover) so you bookmark once and never touch it again 3. Long-lived cookie auth (set token once per device, stays for a year — good for TVs) 4. Screen Wake Lock API so the display doesn't sleep 5. Periodic directory re-scan to pick up new photos without a restart 6. Distroless container (~5MB), runs as nonroot

The auth flow was the interesting design problem: you want something that works on a TV with no keyboard. Solution: visit /?token=YOURTOKEN once, it sets a 1-year HttpOnly cookie and redirects to a clean URL. After that the device stays authenticated silently.

Repo: https://github.com/davidhfrankelcodes/frameserve Docker Hub: davidhfrankelcodes/frameserve:latest