
Since church-core handles API configuration and connectivity: - Remove detailed API setup instructions - Simplify configuration to focus on display settings only - Note that API connectivity is managed by church-core - Emphasize that most configuration is automatic - Remove redundant environment variable examples - Fix requirements to not assume file structure The README now accurately reflects that users don't need to manually configure API endpoints when using church-core.
90 lines
2.5 KiB
Markdown
90 lines
2.5 KiB
Markdown
# 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 |