Entire Backend API with Postgres
Go to file
Benjamin Slingo ef7e077ae2 Refactor EventService: eliminate duplication, apply DRY/KISS principles
BREAKING: Removed CreateEventRequest - unused for direct creation
ADDED: UpdateEventRequest - clean editing with image support
IMPROVED: EventService now contains business logic, not wrapper calls

Architecture Changes:
- Before: Handler → Service → db::events → SQL (wasteful)
- After:  Handler → Service → Direct SQL + Business Logic (clean)

Key Improvements:
 All EventService methods use direct SQL with real business logic
 Eliminated pointless db::events wrapper functions
 Added missing V2 service methods for consistency
 Fixed handler pattern violations (no more direct db calls)
 Preserved email notifications and HTTP response formats
 Applied sanitization, validation, error handling in services

Changes:
- Remove CreateEventRequest/V2 (unused create paths)
- Add UpdateEventRequest with image field (no redundant thumbnail)
- Migrate all EventService methods to direct SQL + business logic
- Fix v2/events.rs to use proper service methods consistently
- Remove create/update routes and handlers (unused)
- Maintain backward compatibility for all APIs

Next: Apply same DRY/KISS cleanup to BulletinService and others
2025-08-28 22:42:45 -04:00
migrations Add comprehensive hymnal support and enhance bulletin processing 2025-08-28 20:34:04 -04:00
src Refactor EventService: eliminate duplication, apply DRY/KISS principles 2025-08-28 22:42:45 -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