Skip to content

Feature: Dedicated Church Information Configuration (First-Run UX) #8190

@DawoudIO

Description

@DawoudIO

Feature: Dedicated Church Information Configuration Page (First-Run UX)

Problem Statement

Currently, when a new ChurchCRM installation is completed, church-level information (name, address, logo, etc.) is mixed into the generic Edit General Settings page alongside technical system configuration. This creates a confusing first-run experience for administrators.

Solution

Create a dedicated admin-only page at /admin/church-info that:

  • Organizes church metadata using a tabbed interface
  • Separates church info from system/technical settings
  • Enforces critical field completion during first run
  • Improves user experience with clear, focused forms

Implementation Overview

Page Structure: /admin/church-info

Tabs:

  1. Basic Information (name, website, logo)
  2. Location (address, city, state, zip, country)
  3. Contact (phone, email)
  4. Map & Coordinates (latitude, longitude, timezone)
  5. Display Options (custom header, letterhead)

Architecture

  • Routes: Add to /admin/routes/system.php
  • Controller: New ChurchInfoController for GET/POST/AJAX
  • View: src/admin/views/church-info.php with Bootstrap tabs
  • Middleware: New ChurchInfoRequiredMiddleware for first-run enforcement
  • Database: Uses existing system_config entries (no schema changes)

First-Run Enforcement

  • Middleware checks if sChurchName is empty
  • Redirects non-exempt routes to /admin/church-info
  • Dashboard displays warning if incomplete
  • Exempt routes: /admin/church-info, /logout, API auth endpoints

Configuration Fields

All existing SystemConfig entries (no new fields):

  • sChurchName, sChurchAddress, sChurchCity, sChurchState
  • sChurchZip, sChurchCountry, sChurchPhone, sChurchEmail
  • iChurchLatitude, iChurchLongitude, sTimeZone
  • sChurchWebSite, custom header, letterhead paths

Documentation

  • Update docs.churchcrm.io first-run guide with screenshots
  • Add new "Church Info" page to docs
  • Update wiki if applicable

Testing Requirements

  • Auth: Only admins can access
  • Form save (POST + AJAX)
  • Validation: Church name required
  • Middleware: No redirect loops, proper exemptions
  • Dashboard: Status reflects saved state
  • Finance dashboard: Existing checks still work

Success Criteria

✅ Page displays organized church config tabs
✅ Form saves successfully (both POST and AJAX)
✅ First-run redirect enforces completion
✅ Dashboard warnings display correctly
✅ Documentation updated
✅ Tests pass
✅ Backward compatible with existing SystemSettings

Timeline

  • Dev (routes/controller/view/middleware): 2-3 days
  • Testing (unit + Cypress): 1 day
  • Docs: 1 day
  • Review & refinement: 1-2 days

Total: 5-7 development days

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions