No description
Find a file
Benjamin Slingo 6ee04c0da9 fix: update to latest iced and fix date timezone handling
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
2025-11-10 16:40:17 -05:00
.github Create FUNDING.yml 2025-05-28 13:40:24 -04:00
icons Initial commit: Beacon digital signage application 2025-02-06 00:12:04 -05:00
src fix: update to latest iced and fix date timezone handling 2025-11-10 16:40:17 -05:00
.env.example feat: major refactoring and improvements - quick wins implementation 2025-08-16 21:27:05 -04:00
.gitignore feat: major refactoring and improvements - quick wins implementation 2025-08-16 21:27:05 -04:00
beacon.desktop Initial commit: Beacon digital signage application 2025-02-06 00:12:04 -05:00
Cargo.lock fix: update to latest iced and fix date timezone handling 2025-11-10 16:40:17 -05:00
Cargo.toml fix: update to latest iced and fix date timezone handling 2025-11-10 16:40:17 -05:00
digital-sign.desktop Initial commit: Beacon digital signage application 2025-02-06 00:12:04 -05:00
IMPROVEMENT_PLAN.md feat: major refactoring and improvements - quick wins implementation 2025-08-16 21:27:05 -04:00
install.sh Initial commit: Beacon digital signage application 2025-02-06 00:12:04 -05:00
LICENSE Add LICENSE and update README for new repository 2025-08-16 18:48:02 -04:00
QUICK_WINS_SUMMARY.md docs: update quick wins summary and remove old source archive 2025-08-16 21:56:21 -04:00
README.md docs: simplify README to reflect church-core managed API 2025-08-16 21:59:43 -04:00

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 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