Super Picture Frame 5000 (SPF5000)
SPF5000 is a self-hosted, appliance-style digital picture frame platform intended to run on Raspberry Pi-class hardware. It is designed for users who want a simple, spouse-friendly digital frame experience without subscriptions, vendor lock-in, pairing friction, upload quotas, or mandatory cloud services.
Commercial digital picture frames often suffer from one or more of the following problems:
- recurring subscription requirements for basic functionality
- fragile or abandoned mobile applications
- dependence on third-party cloud services
- poor offline behavior
- complicated onboarding and image management flows
- low trust in long-term reliability
The target household wants a frame that behaves like an appliance, not a service relationship.
- Provide a simple, reliable digital frame experience on commodity hardware.
- Support local administration from a web UI on the LAN.
- Support multiple image sources over time through a provider model.
- Prioritize offline-first behavior and cached playback.
- Make the system resilient to power loss and temporary network failure.
- Allow local image management directly on the device.
- Support local-files provider for importing images from a configured directory.
- Present transitions that feel polished and continuous, without a visible black flash between images.
- Provide calm ambient weather plus serious weather-alert behavior without breaking the frame's appliance feel.
- Present portrait and mixed-aspect images with tasteful background treatment that keeps the photo as the focal point.
- public multi-tenant SaaS hosting
- advanced user account management
- AI image tagging and semantic search on-device
- complex video-first playback
- a native non-browser renderer
Household member who wants a set-it-and-forget-it frame.
Technical household member who installs, configures, and maintains the device.
- As a household member, I want the frame to boot directly into a slideshow.
- As a household member, I want the frame to keep showing photos even if the network is temporarily unavailable.
- As a household member, I want portrait and landscape images to display cleanly.
- As a household member, I want images to slide smoothly from left to right without a full black frame appearing between photos.
- As a household member, I want portrait and mixed-aspect photos to use a tasteful image-derived background instead of always showing hard black bars.
- As a household member, I want the frame to go dark automatically during configured quiet hours in the intended display timezone and wake back up on its own.
- As a household member, I want a configurable weather widget size and side placement so weather stays readable without unnecessarily covering photos.
- As a household member, I want severe weather alerts to become highly visible without looking like a broken slideshow.
- As an administrator, I want to configure slideshow timing and display behavior from a simple web page.
- As an administrator, I want to configure the display sleep schedule from the admin UI instead of editing OS timers or browser flags.
- As an administrator, I want to choose the display timezone in the admin UI and see both Pi-local and configured display time so quiet hours are easy to reason about.
- As an administrator, I want to upload, remove, and organize pictures stored on the frame.
- As an administrator, I want to see sync and device health information.
- As an administrator, I want a one-time first-run setup flow that creates the local admin account for the frame.
- As an administrator, I want the admin UI to require a local sign-in without affecting the public slideshow display.
- As an administrator, I want to configure weather, alert escalation, and refresh behavior from the same LAN admin UI.
- As an administrator, I want to back up the database, restore from a validated backup ZIP, and export collection media from the admin UI so recovery or migration does not require SSH.
- As a household member, I want to select an album source and have pictures appear automatically on the frame.
- As an administrator, I want source integrations to sync into a local cache so playback is not dependent on live cloud responses.
- Display fullscreen slideshow on HDMI-connected monitor.
- Shuffle and sequential playback modes.
- Configurable dwell time per image.
- Configurable fit modes: contain, cover, smart center-fit.
- Automatic resume after reboot.
- Default transition mode should support horizontal slide animation with no visible full-black frame.
- Playback should use preloaded assets and never intentionally blank the screen during normal image-to-image transitions.
- Provide configurable display background modes of
black,dominant_color,gradient,soft_vignette,palette_wash,blurred_backdrop,mirrored_edges, andadaptive_autofor letterboxed or aspect-mismatched display space. - Keep cached display-variant metadata as the source for color-based modes such as
dominant_color,gradient,soft_vignette, andpalette_wash. - Allow image-based presentation modes such as
blurred_backdropandmirrored_edgesto reuse the cached display variant at render time instead of requiring live full-original analysis. - Treat
adaptive_autoas a display-behavior policy that chooses among supported treatments based on aspect mismatch and available cached metadata. - Support a configurable sleep window evaluated in an app-selected display timezone, defaulting to the Pi-local timezone when no explicit display timezone is set, with an inclusive start time and exclusive end time.
- During the sleep window, render a solid black fullscreen state, pause slideshow advancement, and resume automatically when the window ends.
- Render an optional weather widget from cached backend weather state without blocking slideshow playback, including configurable scale plus corner or vertical side placement.
- Render badge, banner, fullscreen, and repeating-fullscreen weather alert behaviors based on deterministic escalation rules.
- Keep sleep mode higher priority than weather and alert presentation by default.
- First-run setup page
- Login page
- Protected admin shell
- Settings page
- Display settings page with sleep schedule controls, display timezone selection, and Pi-local/configured display-time clarity
- Weather and alerts page for configuration and visibility
- Sources page
- Albums page
- Backup and export page for database backup/restore and collection media export
- Local media management page
- System status page
- Upload images from browser
- Delete images from device
- Organize images by albums or folders
- Maintain metadata and source origin in database
- Export original images from a collection as a ZIP
- Download a ZIP containing the current SPF5000 DecentDB database.
- Restore SPF5000 from a validated database backup ZIP through the admin UI.
- Clearly distinguish DB-only backup/restore from media export so operators do not assume a database restore recreates on-disk originals.
- Abstract provider model for source integrations
- Background sync job support
- Sync status persistence
- Cached local copies of remote images
- Graceful degradation when provider unavailable
- Abstract provider model for weather integrations
- Background refresh of cached current conditions and active alerts
- Deterministic alert escalation and priority resolution
- Fullscreen alert takeover that pauses slideshow timers without redefining the slideshow renderer itself
- Admin visibility into cached weather state, provider health, and active alerts
- Store settings, metadata, sync state, and source mappings in DecentDB.
- Store bootstrap state and single-admin credentials in DecentDB.
- Store the sleep schedule and optional display timezone in DecentDB application settings rather than OS schedulers or runtime config files.
- Store weather settings plus cached weather and alert state in DecentDB.
- Store image binaries and resized variants on local disk.
- Store the selected display background mode in DecentDB and cached per-asset color metadata alongside asset metadata, while allowing image-based presentation modes to reuse display variants at render time.
- Keep database backup/restore scoped to DecentDB state while treating original-media export as a separate filesystem-backed workflow.
- Device must recover from power interruption.
- Display page should remain functional even if admin UI unavailable.
- Cached playback should continue if remote providers or NAS shares are unavailable.
- The admin UI should be understandable without technical training.
- The display experience should avoid intrusive overlays.
- Slideshow behavior should feel like a consumer appliance rather than a browser tab.
- Pi 3 must be sufficient for v1 slideshow and admin flows.
- Remote images should be prefetched and cached.
- Display playback should avoid visible flicker during transitions.
- Architectural decisions must be documented using ADRs.
- Data model and provider abstractions should support future expansion.
- Design artifacts should live under
design/while future end-user documentation can live underdesign/.
- Browser-based display rendering on low-power hardware may require tuning.
- Poorly bounded cache growth may consume disk unexpectedly.
- Some portable monitors may have undesirable wake, sleep, or power-loss behavior.
- Device boots to slideshow after power cycle.
- Admin can change settings and manage local images via browser on LAN.
- Admin can configure quiet hours and the display timezone in the app, and the display wakes automatically at the configured end time.
- Fresh installs guide the administrator through first-run setup before normal login.
- Admin routes require local authentication while
/displayremains usable without sign-in. - Cached playback continues if remote source is unavailable.
- Household member no longer depends on subscriptions or vendor mobile apps to display family photos.
- Transitions feel smooth and continuous, with no obvious black flash between images.
- Admin can choose a display background mode, including
adaptive_auto, and portrait or mixed-aspect images render with the expected treatment without breaking slideshow smoothness. - Admin can download a database backup, restore it safely, and export collection media from the LAN admin UI without shell access.