# Beacon A modern digital signage application for displaying church events, built with Rust and Iced. ## Features - Real-time event display with automatic updates - Smooth image loading and transitions - Modern, clean interface design - Automatic event filtering based on date/time - Support for high-resolution displays - Efficient memory management for images ## Requirements - Rust 1.70 or higher - A running church API instance with events endpoint ## Configuration You can configure Beacon in three ways (in order of precedence): ### 1. Environment Variables Configure Beacon using environment variables: ```bash export BEACON_API_URL="https://your-api-url.com" export BEACON_WINDOW_WIDTH="1920" export BEACON_WINDOW_HEIGHT="1080" ./beacon ``` ### 2. .env File Create a `.env` file in the application directory: ```bash # Copy the example file cp .env.example .env # Edit with your settings nano .env ``` Example `.env` file: ```env BEACON_API_URL=https://your-api-endpoint.com BEACON_WINDOW_WIDTH=1920 BEACON_WINDOW_HEIGHT=1080 RUST_LOG=beacon=info ``` Available environment variables: - `BEACON_API_URL` - API endpoint URL - `BEACON_WINDOW_WIDTH` - Window width in pixels - `BEACON_WINDOW_HEIGHT` - Window height in pixels ### 3. Config File Create a `config.toml` file in the application directory: ```toml api_url = "https://your-api-url.com" window_width = 1920 window_height = 1080 slide_interval_seconds = 10 refresh_interval_minutes = 5 ``` **Configuration Precedence:** 1. Environment variables (highest priority) 2. .env file 3. config.toml file (lowest priority) ## Building ```bash cargo build --release ``` ## Running ```bash ./target/release/beacon ``` ## Development The application is built using: - Iced for the UI framework - Tokio for async runtime - Reqwest for HTTP requests - Chrono for date/time handling ## License MIT License