No description
Major changes:
- Update iced to latest git version (fixes emoji rendering!)
- Fix date display showing +1 day for UTC events in EST
- Update to new iced application API (Program trait changes)
- Change font/spacing types from u16 to f32 for new Pixels API
- Remove invalid 'system' feature from iced
- Add chrono dependency for timezone conversion
- Simplify font loading to use system fonts
Date fix:
- Convert UTC times to local timezone before formatting
- Prevents late-day EST events (e.g., Friday 8PM EST = Saturday 1AM UTC)
from showing the wrong date
Emoji fix:
- Updating iced resolved cosmic-text emoji rendering issues
- Emojis now render correctly including 📍 location pin
API changes for new iced:
- Converted from Program trait to application() builder pattern
- Updated method signatures (update, view, subscription, theme)
- Changed Element types to remove explicit Theme parameter
- Use application(boot, update, view).run() pattern
|
||
|---|---|---|
| .github | ||
| icons | ||
| src | ||
| .env.example | ||
| .gitignore | ||
| beacon.desktop | ||
| Cargo.lock | ||
| Cargo.toml | ||
| digital-sign.desktop | ||
| IMPROVEMENT_PLAN.md | ||
| install.sh | ||
| LICENSE | ||
| QUICK_WINS_SUMMARY.md | ||
| README.md | ||
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:
# 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:
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
cargo build --release
Running
./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 managementsrc/ui.rs- Modular UI components for event displaysrc/cache.rs- Intelligent image caching systemsrc/config.rs- Configuration management with validationsrc/api.rs- Simplified API integration using church-core
License
MIT License