Files
Church-Music/legacy-site/documentation/md-files/FIXES_APPLIED.md

2.7 KiB

Fixes Applied - House of Prayer Song Lyrics System

Issues Fixed

1. Profile Dropdown

  • Before: Showed static "Profile" button
  • After: Dropdown shows selected profile name with arrow (e.g., "Default Profile ▾")
  • Click to toggle dropdown listing all profiles
  • Select a profile to switch active user
  • Selection persists in localStorage across sessions

2. Data Storage

  • Before: Only backend SQLite database
  • After: Hybrid system with localStorage fallback
  • Toggle USE_LOCAL_STORAGE = true in api.js for offline mode
  • All data (profiles, songs, plans) stored in browser localStorage
  • Automatic fallback if backend is unavailable
  • Default profile created on first load

3. Backend Connection Issues

  • Fixed: Database connection pool exhaustion (SQLAlchemy timeout)
  • Added proper session closing with try/finally blocks
  • Backend now stable and running on http://localhost:5000

4. Worship Planning Creation

  • Plans now save to localStorage successfully
  • Create New Day modal works properly
  • Latest plan displays on Home page
  • Click to navigate to planning details

How It Works Now

Profile Selection

  1. Click "Profile Name ▾" button in header
  2. Dropdown shows all available profiles
  3. Select a profile to switch
  4. Your choice is saved automatically

Data Persistence

  • Location: Browser localStorage (client-side)

  • Key Benefits:

    • Works offline
    • No backend required
    • Instant save/load
    • Data persists across sessions
  • Storage Keys:

    • hop_profiles - User profiles
    • hop_songs - Song database
    • hop_plans - Worship planning entries
    • hop_plan_songs - Song-plan associations
    • selected_profile_id - Current profile

Creating Worship Plans

  1. Click "+ Create New Day" on Home
  2. Enter date in modal
  3. Click "Create"
  4. Plan appears in "Latest Planning" preview box
  5. All plans shown in grid below

Files Modified

Backend

  • app.py - Fixed database session management

Frontend

  • api.js - Added localStorage fallback for all API calls
  • localStorage.js - New file with client-side storage layer
  • App.js - Updated ProfileDropdown to show selected name

Switching Between localStorage and Backend

Edit frontend/src/api.js:

const USE_LOCAL_STORAGE = true;  // Use localStorage
const USE_LOCAL_STORAGE = false; // Use backend API

Current Status

Backend running on http://localhost:5000 Frontend running on http://localhost:3000 All features working with localStorage Profile dropdown functional Worship planning creation working Data persists across page refreshes