![]() - Remove entire utils/db_operations.rs file and all *Operations patterns - Comment out imports to dead operations - This breaks compilation temporarily but eliminates the maintenance nightmare - Next: rewrite db:: modules to use direct SQL instead of operations - Goal: Clean Handler → Service → Database pattern only |
||
---|---|---|
migrations | ||
src | ||
tests | ||
.env.example | ||
.gitignore | ||
build.rs | ||
Cargo.toml | ||
cleanup_manual_hymn_titles.sql | ||
find_manual_hymn_titles.sql | ||
fix_timezone_double_conversion.sql | ||
HYMNARIUM_API_DOCUMENTATION.md | ||
LICENSE | ||
migrate_hymnal_data.py | ||
README.md | ||
simple_hymn_cleanup.sql |
Church API
A comprehensive church management system built with Rust and Axum, providing REST APIs for bulletin management, event scheduling, media processing, and live streaming integration.
Features
- Bulletin Management: Upload, process, and serve church bulletins with automatic format conversion
- Event Scheduling: Create and manage church events with recurring event support
- Media Processing: Handle video uploads with transcoding and thumbnail generation
- Live Streaming: Integration with Owncast for live stream management
- User Authentication: JWT-based authentication with role-based access control
- Email Notifications: SMTP integration for automated notifications
- Database Management: PostgreSQL with automated migrations
Tech Stack
- Backend: Rust with Axum web framework
- Database: PostgreSQL with SQLx
- Media Processing: GStreamer for video transcoding
- Authentication: JWT with bcrypt password hashing
- Email: lettre for SMTP integration
Quick Start
-
Prerequisites
- Rust 1.70+
- PostgreSQL 13+
- GStreamer development libraries
-
Setup
# Clone the repository git clone ssh://rockvilleav@git.rockvilletollandsda.church:10443/RTSDA/church-api.git cd church-api # Copy environment template cp .env.example .env # Edit .env with your configuration # Run database migrations sqlx migrate run # Build and run cargo run
-
Configuration
Edit
.env
with your settings:- Database URL
- JWT secret
- SMTP configuration
- Upload directories
API Endpoints
POST /api/auth/login
- User authenticationGET /api/bulletins
- List bulletinsPOST /api/bulletins
- Upload bulletinGET /api/events
- List eventsPOST /api/events
- Create eventPOST /api/media/upload
- Upload media filesGET /api/stream/status
- Live stream status
Development
# Run tests
cargo test
# Check code
cargo check
# Format code
cargo fmt
License
MIT License - see LICENSE file for details.
Author
Benjamin Slingo