Entire Backend API with Postgres
Go to file
Benjamin Slingo 6bee94c311 Apply DRY/KISS: Replace db wrapper layer with shared SQL functions
- Create sql:: module with raw SQL queries (no business logic)
- Services now call sql:: functions + handle conversion logic only
- Eliminate SQL duplication across V1/V2 service methods
- Remove redundant db:: wrapper functions for bulletins, bible_verses, schedule
- Clean Handler → Service → Shared SQL → DB architecture
- Maintain API compatibility, zero downtime
2025-08-29 09:02:05 -04:00
migrations Add comprehensive hymnal support and enhance bulletin processing 2025-08-28 20:34:04 -04:00
src Apply DRY/KISS: Replace db wrapper layer with shared SQL functions 2025-08-29 09:02:05 -04:00
tests Initial commit: Church API Rust implementation 2025-08-19 20:56:41 -04:00
.env.example Initial commit: Church API Rust implementation 2025-08-19 20:56:41 -04:00
.gitignore Add proper README and remove development documentation files 2025-08-19 21:01:55 -04:00
build.rs Initial commit: Church API Rust implementation 2025-08-19 20:56:41 -04:00
Cargo.toml Initial commit: Church API Rust implementation 2025-08-19 20:56:41 -04:00
cleanup_manual_hymn_titles.sql NUCLEAR: Delete db_operations.rs entirely 2025-08-28 21:36:14 -04:00
CLEANUP_PROGRESS.md Refactor EventService: eliminate duplication, apply DRY/KISS principles 2025-08-28 22:42:45 -04:00
find_manual_hymn_titles.sql NUCLEAR: Delete db_operations.rs entirely 2025-08-28 21:36:14 -04:00
fix_timezone_double_conversion.sql NUCLEAR: Delete db_operations.rs entirely 2025-08-28 21:36:14 -04:00
HYMNARIUM_API_DOCUMENTATION.md NUCLEAR: Delete db_operations.rs entirely 2025-08-28 21:36:14 -04:00
LICENSE Initial commit: Church API Rust implementation 2025-08-19 20:56:41 -04:00
migrate_hymnal_data.py NUCLEAR: Delete db_operations.rs entirely 2025-08-28 21:36:14 -04:00
README.md Add proper README and remove development documentation files 2025-08-19 21:01:55 -04:00
simple_hymn_cleanup.sql NUCLEAR: Delete db_operations.rs entirely 2025-08-28 21:36:14 -04:00

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

  1. Prerequisites

    • Rust 1.70+
    • PostgreSQL 13+
    • GStreamer development libraries
  2. 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
    
  3. Configuration

    Edit .env with your settings:

    • Database URL
    • JWT secret
    • SMTP configuration
    • Upload directories

API Endpoints

  • POST /api/auth/login - User authentication
  • GET /api/bulletins - List bulletins
  • POST /api/bulletins - Upload bulletin
  • GET /api/events - List events
  • POST /api/events - Create event
  • POST /api/media/upload - Upload media files
  • GET /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