Entire Backend API with Postgres
Go to file
Benjamin Slingo 8728e14125 Optimize N+1 queries and fix missing event update endpoint
Performance optimizations:
- Fix media items N+1: batch scripture reading lookups (1+N → 2 queries)
- Fix hymnal thematic lists N+1: batch ambits queries (1+N → 2 queries)
- Add batch query functions for bulletins and hymnal ambits

Bug fix:
- Add missing PUT /api/admin/events/:id endpoint for event updates
- Connect existing EventsV1Service::update method to web layer

Database performance significantly improved for high-traffic endpoints
used by website, iOS app, and LuminaLP integrations.
2025-09-07 21:55:49 -04:00
migrations Add quarterlies management system with complete CRUD operations 2025-09-06 16:53:14 -04:00
src Optimize N+1 queries and fix missing event update endpoint 2025-09-07 21:55:49 -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 Phase 3 complete: EventService restructuring achieves maximum DRY/KISS compliance 2025-08-29 22:37:26 -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
import_quarterlies.py Add quarterlies management system with complete CRUD operations 2025-09-06 16:53:14 -04:00
import_to_db.py Add quarterlies management system with complete CRUD operations 2025-09-06 16:53: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
quarterly_import_data.json Add quarterlies management system with complete CRUD operations 2025-09-06 16:53: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