$ show theothernt/AerialViews
Aerial Views is an Android TV screensaver (DreamService) that plays aerial videos and photos from multiple sourcesβApple, Amazon, community feeds, local storage, Samba, WebDAV, Immich, Nextcloud Memories, and custom feeds. It provides a rich overlay system (clock, date, weather, metadata, now-playing, countdown, message API) and supports hardware vendor integrations (Projectivy, Philips TVs). The architecture follows a provider pattern with a central ScreenController orchestrating playback, overlays, and services. The codebase is actively maintained with extensive internationalization, unit tests, and CI/CD. While the provider abstractions are clean and extendable, the ScreenController is large and tightly coupled, and the app has moderate technical drift (deprecated APIs, unusual compileSdk 37). Overall it's a well-engineered, feature-complete application for its niche.
The LLM identified 7 files worth highlighting for reuse:
Centralized state store for overlay UI (clock, weather, metadata, etc.) using a sealed class hierarchy. Provides an event-driven update mechanism via OverlayEventBridge (FlowBus). This pattern decouples overlay rendering from business logic and can be extracted for any app needing real-time UI state propagation across multiple components.
Reusable utility for formatting dates from EXIF, ISO-8601, and custom strings with timezone offset correction. Handles multiple Android API levels gracefully. Extractable as a standalone library for apps that need robust, localized date display from heterogeneous metadata sources.
Kotlin port of a box-blur algorithm providing software-based background blur for pre-API 31 devices, with RenderEffect fallback. The implementation is self-contained (no external dependencies) and demonstrates non-obvious performance optimization (in-place blur, radius clamping). Easily extractable as a blur utility library.
Validates and parses URLs for custom feed sources (HLS, RTSP, MP4, etc.) with support for schemes, ports, and path extraction. Contains no internal imports beyond kotlin libraries. A clean, pure-function helper that can be reused in any Kotlin project requiring URL parsing and validation.
Parses custom CSV feed lines into media items (URL, title, description, location). Demonstrates robust handling of quoted fields, empty columns, and fallback defaults. The logic is independent of the rest of the app (only depends on model classes) and can be extracted for any CSV-to-object mapping needs.
Room-based repository for caching media playlists with chunked lazy loading, deduplication, and cache invalidation (time-based or full refresh). Uses transactional upserts and async prefetch. The pattern of a bounded cache backed by Room with sliding window queries is reusable for any app needing offline or prefetched list data.
Provides SMB URL parsing, authentication (anonymous, guest, credentials), and connection string construction. Handles edge cases like special characters in passwords and multi-component shares. Isolated utility that can be reused in any Android app needing Samba connectivity via the smbj library.