![]() - Created comprehensive README.md with setup instructions and API overview - Removed 10 internal development .md files - Updated .gitignore to prevent future development docs from being tracked - Repository now has clean, professional documentation structure |
||
---|---|---|
migrations | ||
src | ||
tests | ||
.env.example | ||
.gitignore | ||
build.rs | ||
Cargo.toml | ||
LICENSE | ||
README.md |
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