church-api/README_BULLETIN_CLEANING.md
Benjamin Slingo 0c06e159bb Initial commit: Church API Rust implementation
Complete church management system with bulletin management, media processing, live streaming integration, and web interface. Includes authentication, email notifications, database migrations, and comprehensive test suite.
2025-08-19 20:56:41 -04:00

3.6 KiB

📱 iOS Bulletin Text Cleaning Tool

Complete Solution for iOS App Compatibility

This tool cleans all bulletin text fields to ensure perfect compatibility with your iOS app:

What it cleans:

  1. HTML Entities - Decodes ALL entities including:

    •   → space
    • &&
    • &lt;<
    • &gt;>
    • &quot;"
    • &apos;, &#39;'
    • Extended Latin: &aelig;æ, &eacute;é, &ntilde;ñ, etc.
    • Special chars: &copy;©, &trade;, &hellip;, etc.
    • Smart quotes: &ldquo;/&rdquo;", &lsquo;/&rsquo;'
  2. Line Endings - Converts Windows (\r\n) to Unix (\n)

  3. Whitespace - Normalizes excessive spaces, tabs, and newlines

  4. HTML Tags - Removes tags but converts <br/>, </p>, </div> to newlines

🎯 Target Fields:

  • title
  • scripture_reading
  • sabbath_school
  • divine_worship
  • sunset

🚀 Usage

# Set your database connection (replace with your actual credentials)
export DATABASE_URL="postgresql://user:password@host/database"

# Run the iOS bulletin cleaner
cargo run --bin clean-bulletin-text

📊 Example Output

📱 Church API - iOS Bulletin Text Cleaner
==========================================
Cleaning all bulletin text fields for iOS compatibility:
• Decodes ALL HTML entities (&nbsp;, &aelig;, &amp;, etc.)
• Converts Windows line endings (\r\n) to Unix (\n)
• Trims excessive whitespace and normalizes spacing
• Targets: title, scripture_reading, sabbath_school, divine_worship, sunset

📡 Connecting to database...
✅ Connected successfully!

🔍 Analyzing bulletin text fields...
📊 Bulletin Analysis Results:
   • Total bulletins: 45
   • Bulletins with HTML entities: 12
   • Bulletins with Windows line endings: 3
   • Bulletins with excessive whitespace: 8
   • Bulletins needing cleaning: 18

🚀 Starting bulletin text cleanup for iOS compatibility...

🧹 Processing bulletin text fields...
   📝 Found 18 bulletins needing text cleaning
   📄 Bulletin Weekly Bulletin - January 14, 2025 (1/18): 3 fields cleaned
      • scripture: 'Romans&nbsp;8:28&nbsp;-&nbsp;All...' → 'Romans 8:28 - All things work...'
      • divine_worship: '<p>Service&nbsp;begins&nbsp;at...' → 'Service begins at 11:00 AM...'
      • sunset: 'Tonight:&nbsp;7:45&nbsp;PM' → 'Tonight: 7:45 PM'

🎉 Bulletin text cleaning completed!
📊 Cleaning Results:
   • Title fields cleaned: 5
   • Scripture readings cleaned: 12
   • Sabbath school sections cleaned: 8
   • Divine worship sections cleaned: 15
   • Sunset times cleaned: 6
   • Total text fields cleaned: 46
   • Bulletins modified: 18
⏱️  Duration: 234ms

🔍 Verifying iOS compatibility...
✅ Success! All bulletin text is now iOS-compatible.
📱 iOS app will receive clean text with Unix line endings.

🔄 What happens after running:

  1. Database is permanently cleaned - No more HTML entities in stored data
  2. API responses are clean - Existing output sanitization still works
  3. iOS app gets perfect text - Unix line endings, no HTML entities
  4. Future data stays clean - Input sanitization prevents new dirty data

Performance Benefits:

  • Faster API responses - No cleaning needed on every request
  • Better iOS rendering - Clean text displays perfectly
  • Consistent data - All text fields use the same format
  • Developer friendly - Direct database queries return clean data

Your iOS app will now receive perfectly clean bulletin text! 📱