# Beacon A modern digital signage application for displaying church events, built with Rust, Iced, and the shared church-core library. ## Features - Real-time event display with automatic updates - Smooth image loading and transitions with intelligent caching - Modern, clean interface design with modular components - Automatic event filtering based on date/time - Support for high-resolution displays - Efficient memory management for images - Built on shared church-core library for consistency and reliability - Graceful error handling with comprehensive logging ## Requirements - Rust 1.70 or higher - church-core crate **Note:** API connectivity is managed by church-core - no additional setup required. ## Configuration Beacon uses the church-core library for API connectivity, which handles most configuration automatically. You only need to configure display settings: ### Optional Configuration File Create a `config.toml` file in the application directory for display customization: ```toml # Display settings window_width = 1920 window_height = 1080 slide_interval_seconds = 10 # Optional: Override church-core API settings if needed # api_url = "https://your-custom-endpoint.com" ``` ### Environment Variables You can also configure via environment variables: ```bash export BEACON_WINDOW_WIDTH="1920" export BEACON_WINDOW_HEIGHT="1080" export RUST_LOG=beacon=info ./beacon ``` **Note:** API configuration is handled by church-core and typically doesn't need customization. ## Building ```bash cargo build --release ``` ## Running ```bash ./target/release/beacon ``` ## Development The application is built using: - **church-core** - Shared library for API integration, event models, and utilities - **Iced** - Modern UI framework for Rust - **Tokio** - Async runtime - **Reqwest** - HTTP client for image loading - Modular architecture with dedicated UI components and caching system ### Architecture Beacon leverages the shared `church-core` library to: - Use standardized Event models with built-in helper methods - Share API client functionality across church projects - Eliminate code duplication and ensure consistency - Benefit from shared testing and improvements ### Key Modules - `src/main.rs` - Application entry point and state management - `src/ui.rs` - Modular UI components for event display - `src/cache.rs` - Intelligent image caching system - `src/config.rs` - Configuration management with validation - `src/api.rs` - Simplified API integration using church-core ## License MIT License