Skip to content

Changelog

Move Parishioner to Another Household

  • Added ability to move a parishioner from one household to another directly from the parishioner detail page
  • Primary household members are protected from being moved to prevent accidental data issues
  • Streamlined household reorganization without needing to delete and recreate member records

Simplified Role Assignment

  • Changed user role assignment from multi-select checkboxes to single-select radio buttons for clearer role management
  • Makes it easier to understand and assign the correct access level to each user

Enhanced Address Display

  • Added display name and notes support for addresses with read-only Google address display
  • Improved address presentation in household forms with cleaner editing interface
  • Better handling of structured address data from Google Places

Parish Contact Updates

  • Added REST endpoints for updating parish contact details and social media information
  • Parishes can now manage their public contact information more easily

Expanded Search Results

  • Removed result limits when searching across multiple components
  • Search now returns all matching results instead of truncating to a fixed number

Activity Tracking Module

  • Implemented comprehensive audit trail module with statistics views and REST endpoints
  • Foundation for tracking and reviewing system activity (full reporting coming soon)

Automatic Modification Tracking

  • Added automatic modifiedAt and modifiedBy field tracking for organization data
  • Changes are now automatically timestamped and attributed without manual intervention

Improved Table Display

  • Applied consistent table row styling across multiple components for better visual uniformity
  • Enhanced breadcrumb navigation with descriptive labels for parishioner detail pages

Sacrament Scheduling

  • Separated meeting and ceremony schedule handlers in the baptism approval checklist for clearer workflow management

Enhanced Address Management

  • Improved address editing in household forms with better display and easier updates
  • Added inline address editing capabilities for quicker household information management
  • Enhanced error handling and user feedback when entering address information

Improved Table Display

  • Updated table styling throughout the application for better readability and consistency
  • Enhanced hover effects and selection indicators for easier navigation
  • Improved accessibility with better keyboard navigation support

Foundation for Audit Tracking

  • Began work on comprehensive activity tracking system (in development)
  • Setting up infrastructure for better system monitoring and reporting (coming soon)

New Parish Roles System

  • Added parish roles and role assignments feature for managing ministry positions and volunteer roles within parishes
  • Created ParishRole and ParishRoleAssignment database models with soft delete support for data preservation
  • Implemented comprehensive CRUD operations for parish roles including create, update, delete, and search functionality
  • Added role assignment management to assign parishioners to specific roles with
  • Created ParishRoleAssignmentInfo view joining role assignments with parishioner details for efficient querying

Role Management Interface

  • Added roles table with search, filtering, and export capabilities
  • Implemented role details page showing assigned members with household information
  • Created bulk assign dialog for assigning multiple parishioners to a role at once
  • Added create role dialog with name and description fields

Parishioner Role Integration

  • Added parishioner roles card to parishioner detail page showing all role assignments
  • Implemented add role dialog for assigning roles directly from parishioner profile
  • Added role assignment row component with edit and remove capabilities
  • Enhanced parishioner selector component for role assignment workflows

Navigation Updates

  • Added “Roles” menu item to parish navigation sidebar
  • Created dynamic breadcrumb support for role pages

Parish Logo Support

  • Added organization logo support to baptism certificate PDF with automatic sizing and aspect ratio preservation
  • Falls back to decorative cross symbol when organization logo is unavailable

Baptism Certificate Header Improvements

  • Reordered certificate header to display parish name above diocese name for better visual hierarchy
  • Updated diocese name correctly

Smart Email Notification Handling

  • Skip email notifications when baptism requests are created by secretary or admin users
  • Reduces unnecessary email noise when parish staff creates requests on behalf of parishioners
  • Fixed collection edit dialog state synchronization issue on fund detail page that caused dialogs to close immediately after opening

Birth Certificate Verification Tracking

  • Added birth certificate verification tracking to baptism requests with birthCertVerified, birthCertVerifiedAt, and birthCertVerifiedBy fields
  • Parish staff can now mark birth certificates as verified directly in the request approval workflow
  • Added proper boolean validation and string-to-boolean conversion for form submissions

Inline Baptism Request Creation

  • Replaced navigation-based request form with inline dialog for creating new baptism requests
  • Updated “Open Request Form” button to “New Request” with Plus icon for clearer action
  • Added dialog state management and automatic query invalidation after request creation

Baptism Permission Letter Enhancements

  • Updated permission letter PDF to use stored parent organization name for diocese header instead of hardcoded value
  • Added child’s address to baptism permission letter when available
  • Improved address formatting with proper filtering of empty address components
  • Fixed complete baptism error handling in sacrament approval workflow
  • Made page field non-required and alphanumeric in baptism book entry form
  • Temporarily deactivated daily compliance checks pending implementation completion

🎨 User Experience & Interface Improvements

Section titled “🎨 User Experience & Interface Improvements”

Contributions Input Form Enhancements

  • Improved keyboard navigation in contributions input form for better accessibility and user experience
  • Replaced toast notifications with inline error alerts in schedule form dialog for more consistent error messaging
  • Enhanced form validation feedback with inline alerts that provide clearer context and actionability

Schedule Form Dialog Improvements

  • Updated error handling in schedule form dialog to use inline alerts instead of toast notifications
  • Improved error message positioning and visibility for better user feedback during form submission

Baptism Meeting Schedule Type Update

  • Renamed ScheduleType value from PRECLASS to MEETING in Prisma schema and backend services for clearer terminology
  • Updated all schedule handling logic to use the new MEETING type while keeping existing workflows working as before
  • Renamed baptism preclass meeting PDF generator to generateBaptismMeetingPDF and updated related imports
  • Refreshed sacrament approval and schedule management UI labels from “Preclass Meeting” to “Baptism Meeting” for clearer language

Public Organization Details Endpoint

  • Added AllowAnonymous decorator to the public organization findById endpoint so visitors can view public organization details without authentication

Login Form Call-To-Action Flow

  • Moved the “Don’t have an account? Sign up” link from the header area to just below the login button to create a clearer, more intuitive focus on primary login before account creation

Query Invalidation & Performance Optimizations

  • Added query invalidation for sacrament requests after baptism request submission to ensure data consistency
  • Fixed baptism schedule handling issues and improved schedule management workflow
  • Removed AdminService database views to streamline schema and reduce complexity
  • Cleaned up schema field ordering for better database organization and maintainability
  • Removed modifiedFields from organization Prisma extension create operations to simplify data handling

🎨 Baptism Request Workflow Improvements

Section titled “🎨 Baptism Request Workflow Improvements”

Same-Tab Baptism Request Form Navigation

  • Updated baptism request form button to open in the same tab instead of a new window for a more consistent user experience
  • Removed external link icon from the open form button to match the new same-tab navigation behavior
  • Simplified the baptism request success page to only show follow-up action buttons for authenticated parish users
  • Adjusted success page navigation logic to route secretaries back into the parish workspace instead of the public site

Multiple Schedule Types per Request

  • Updated sacrament request model to support multiple schedules per request instead of a single schedule
  • Introduced ScheduleType (e.g. PRECLASS and BAPTISM) so each schedule clearly indicates its purpose
  • Extended schedule DTOs and services to handle optional schedule types while keeping existing flows working
  • Refined sacrament approval UI and schedule forms to display and manage multiple schedule entries per request

Query Invalidation & Performance Optimizations

  • Added query invalidation for sacrament requests after baptism request submission to ensure data consistency
  • Fixed baptism schedule handling issues and improved schedule management workflow
  • Removed AdminService database views to streamline schema and reduce complexity
  • Cleaned up schema field ordering for better database organization and maintainability
  • Removed modifiedFields from organization Prisma extension create operations to simplify data handling

🎨 Baptism Request Workflow Improvements

Section titled “🎨 Baptism Request Workflow Improvements”

Same-Tab Baptism Request Form Navigation

  • Updated baptism request form button to open in the same tab instead of a new window for a more consistent user experience
  • Removed external link icon from the open form button to match the new same-tab navigation behavior
  • Simplified the baptism request success page to only show follow-up action buttons for authenticated parish users
  • Adjusted success page navigation logic to route secretaries back into the parish workspace instead of the public site

Multiple Schedule Types per Request

  • Updated sacrament request model to support multiple schedules per request instead of a single schedule
  • Introduced ScheduleType (e.g. PRECLASS and BAPTISM) so each schedule clearly indicates its purpose
  • Extended schedule DTOs and services to handle optional schedule types while keeping existing flows working
  • Refined sacrament approval UI and schedule forms to display and manage multiple schedule entries per request

Form Input Enhancements

  • Disabled autocomplete for two-factor verification code input to prevent browser interference
  • Removed icons from household member card contact information for cleaner visual presentation
  • Made birth certificate optional for baptism requests to streamline the application process

PDF Generation Enhancements

  • Added preclass meeting PDF generation for baptism schedules to support different ceremony types
  • Updated download functionality to generate appropriate PDF based on schedule type (preclass vs ceremony)

Admin User Management Migration to NestJS

  • Removed legacy CAP admin service definitions for user management
  • Added NestJS PATCH endpoint for updating admin users via /api/admin/users
  • Implemented update logic in AdminUsersService including role array handling and validation
  • Updated admin user edit dialog to use the new NestJS API instead of CAP OData endpoints

Audit Feature Migration Plan

  • Created comprehensive migration plan document for moving the audit system from CAP to NestJS
  • Documented current CAP audit architecture, including backend modules and frontend components
  • Defined target NestJS module structure for audit trail, compliance, and security sub-features
  • Outlined database schema enhancements using Prisma views for audit statistics and compliance metrics

Edit Participants from Empty Documents State

  • Added an “Edit Participants” action to the empty documents state in the baptism approval card
  • Wired the documents card to receive an openEditDialog callback from the request summary card
  • Adjusted empty state copy for document uploads for clearer, more consistent messaging
  • Enabled parish staff to quickly add participants even before any documents have been uploaded

🔐 Authentication & Routing Improvements

Section titled “🔐 Authentication & Routing Improvements”

Smart Redirect & Route Protection Enhancements

  • Improved authentication routing logic to better handle redirects after login and logout
  • Ensured users are consistently redirected back to their intended destination after successful authentication
  • Refined protected route handling to reduce edge cases where users could see intermediate loading or incorrect pages
  • Simplified auth flow in shared layout routes to make future changes to routing and guards easier to maintain

Google Sign-In Button Componentization

  • Extracted the Google authentication button into a reusable component for consistent styling and behavior across the application
  • Simplified button properties and usage patterns to make it easier to adopt Google sign-in in additional views

No-Parish Page Layout Improvements

  • Simplified the no-parish selected page layout for a clearer, more focused user experience
  • Removed automatic dismissal behavior from the contact form to give users more control over submitting and reviewing their messages

🎨 User Experience & Interface Improvements

Section titled “🎨 User Experience & Interface Improvements”

Support Page Component Refactoring

  • Created new SupportPage component to consolidate support page logic and improve maintainability
  • Moved ContactForm with user default values from route file to dedicated component for better code organization
  • Extracted FAQ cards and support page layout into dedicated component file for cleaner separation of concerns
  • Simplified route definition to render extracted SupportPage component for better readability

Login Form Loading State Enhancement

  • Added loading state to login form submit button to provide better user feedback during authentication
  • Disabled submit button during login process to prevent duplicate submissions and improve user experience
  • Changed button text dynamically from “Login” to “Logging in…” while processing authentication requests
  • Implemented proper state management to track form submission status and clear it after completion

Parishioner Service Migration to NestJS

  • Migrated parishioner service from legacy CAP OData endpoint to NestJS REST API using a dedicated Prisma view
  • Created parish_Parishioners database view to flatten household member and parishioner data for efficient querying
  • Implemented parishioner controller, DTOs, and service layer methods to support create, update, list, and search operations
  • Updated parishioner detail, edit dialog, and table components to consume the new NestJS endpoints and shared Parishioner types

Parishioner Detail Page Parameter Fix

  • Fixed API query parameter from memberId to selectedId in household-members endpoint call
  • Updated parishioner detail page to use consistent parameter naming with backend for proper data retrieval
  • Resolved issue where wrong parishioner information was being displayed due to parameter mismatch

Database Configuration Environment Variable Migration

  • Updated migration configuration to read DATABASE_URL and other settings from environment variables for better flexibility
  • Replaced hardcoded PostgreSQL connection details with environment-based configuration for improved security
  • Added environment variable support for organizationId, batchSize, and logQueries settings
  • Modified DatabaseManager to use connection string instead of individual connection parameters
  • Standardized code formatting with tabs across migration files for consistency

🏗️ Organization Management Enhancements

Section titled “🏗️ Organization Management Enhancements”

Active Status Management

  • Added active/inactive status toggle in organization forms with checkbox control for better lifecycle management
  • Display organization status badge in info card with visual distinction (active/inactive indicators)
  • Updated form validation and data handling to include active status field with proper UI feedback
  • Enhanced organization filtering capabilities with active status parameter support

Advanced State Management & Search Persistence

  • Implemented URL-based state management for organizationType and activeStatus filters using TanStack Router
  • Added localStorage persistence for search term to maintain user input across page refreshes
  • Synchronized filter state between URL parameters and component state with proper navigation updates
  • Enhanced user experience with seamless filter state preservation during navigation

Boolean Query Parameter Handling Fix

  • Fixed boolean query parameter handling in DTOs by changing from boolean to string type (‘true’ | ‘false’)
  • Updated controller and service logic to properly parse string values to booleans for query string parameters
  • Removed unnecessary Transform decorators that were causing validation issues
  • Applied fix across multiple DTOs including admin users, organizations, and household search

Database Schema Cleanup

  • Removed unused addressTo field from Household schema across CAP and Prisma models
  • Cleaned up database views that referenced the deprecated addressTo column
  • Created proper migration to safely remove the field without data loss
  • Simplified household data structure by removing redundant address relationship

Service Layer Simplification

  • Simplified findAll method in admin users service by using DTO directly instead of manual parameter mapping
  • Removed manual parameter mapping in controller by passing DTO directly to service layer
  • Updated emailVerified filter to use ‘yes’/‘no’ values with boolean conversion in service layer
  • Removed unused limit parameter from service implementation for cleaner code

Two-Factor Authentication System

  • Implemented comprehensive email-based 2FA system with multi-step setup flow
  • Added database schema for storing 2FA secrets and backup codes with user relationship
  • Created intuitive setup process with intro, enable, and verification steps for user onboarding
  • Integrated 2FA into existing login flow with automatic redirect to setup for new users
  • Enhanced account security with optional two-factor authentication for all user accounts

Admin Users Table Improvements

  • Added 2FA status column to admin users table with custom boolean indicator styling
  • Implemented account type filtering to distinguish between credential and Google authentication providers
  • Enhanced users table to display account type badges with color-coded styling
  • Created filter UI component in table actions for selecting account types
  • Refactored email verification display to use reusable BooleanIndicator component

Address Autofill Integration

  • Added automatic address autofill functionality in household dialog using Google Places API
  • Implemented GET endpoint to retrieve address details by ID for efficient data loading
  • Standardized address endpoint with shared types and comprehensive validation
  • Fixed hover positioning for address search popup to improve user experience
  • Extracted Google Places API logic into reusable utility functions for better code organization

Admin Route Protection

  • Refactored authentication to prevent non-admin users from accessing admin routes
  • Enhanced role-based access control for improved security
  • Added automatic redirect for admin users to admin dashboard by default

Performance Optimization

  • Removed unused online user tracking feature to streamline application
  • Cleaned up legacy code and improved overall system performance

emilyhelps.com → emilyhelps.ie

  • Successfully migrated primary domain from emilyhelps.com to emilyhelps.ie
  • Updated all frontend and backend configurations to use new .ie domain
  • Changed email sender addresses and base URLs across the application
  • Updated environment banners and support contact information to reflect new domain

Documentation URL Restructure

  • Moved documentation from docs.emilyhelps.ie to emilyhelps.ie/docs
  • Updated all internal and external documentation links
  • Enhanced documentation accessibility with cleaner URL hierarchy

Domain Migration to emilyhelps.ie

  • Updated frontend base URL and email sender addresses in backend configuration
  • Changed allowed hosts in Vite preview configuration
  • Updated UI references including environment banner and support contact information

Combined Household Name Generation

  • Implemented real-time combined name generation using react-hook-form’s useWatch to monitor title and name fields
  • Enhanced household prefill data to support both primary and other household member names
  • Reordered form fields to show combined name after individual names for better user flow

Baptism Dialog Simplification

  • Simplified link baptism dialog help text for better user experience

Parish Session Persistence

  • Implemented parish selection persistence across user sessions for improved workflow continuity
  • Added automatic restoration of previously selected parish when users return to the application
  • Enhanced user experience by eliminating need to reselect parish preferences on each visit

Structured Address Handling with Google Places Integration

  • Added AddressInput component that captures structured address data including coordinates, place ID, and address components from Google Places API
  • Implemented comprehensive address creation and replacement logic in household service with proper lifecycle management
  • Created reusable address utilities and useAddressCreation hook for consistent address handling across the application
  • Added standalone address creation endpoint (POST /addresses) that accepts Google Places API data with proper validation

Automatic Timestamp Tracking

  • Implemented automatic createdAt/createdBy and modifiedAt/modifiedBy field injection for all create operations through organization extension
  • Removed manual timestamp assignments throughout codebase as they’re now handled automatically by the extension
  • Simplified address management service by using spread operator for cleaner data assignment

Household Management Complete Migration to NestJS

  • Successfully migrated household save operations from CAP to NestJS REST API
  • Created comprehensive DTOs for household operations (create, save, update) with full field validation
  • Moved household DTOs into dedicated household/ subdirectory for better code organization
  • Added VSCode task configuration with Ctrl+Shift+B keybinding for building API types

Address Service Refactoring

  • Relocated AddressManagementService from sacraments/shared to common/address module for better code organization
  • Added parseGender helper method to safely convert string values to Gender enum type
  • Updated imports across affected modules to reflect new service location
  • Enhanced address handling capabilities with better separation of concerns

Baptism Request Interface Simplification

  • Simplified CopyBaptismRequestLinkButton by removing organization context dependency and passing organizationId as prop
  • Added OpenBaptismRequestFormButton component alongside copy link button for improved workflow
  • Streamlined button styling by removing configurable variant/size props for cleaner interface
  • Enhanced baptism request management with more intuitive user interactions

Parish Collection Organization Type Filtering

  • Added organization type filtering to parish collections for better data management
  • Implemented type-based filtering to distinguish between parish and diocese collections
  • Enhanced collection queries with organization type parameters for improved data segmentation

Enhanced Baptism Ceremony PDF Generation

  • Added stamp box to baptism ceremony PDF templates for official documentation
  • Improved PDF layout with designated area for parish stamps and seals
  • Enhanced ceremonial document presentation for official parish records

GDPR-Friendly Real-Time Online User Counter

  • Implemented heartbeat endpoint to track active users with automatic cleanup after 5 minutes of inactivity for GDPR compliance
  • Added admin-only endpoint to retrieve current online user count with proper access controls
  • Displayed online user count in fixed position on authenticated pages for real-time monitoring
  • Enhanced user presence tracking without storing personal data or browsing history

Household Data Migration Complete

  • Successfully migrated household management from CAP OData endpoints to NestJS REST API
  • Replaced PageHouseholds view with optimized household info view for better performance
  • Updated frontend household table to use new NestJS API endpoints with improved query parameters
  • Removed legacy CAP household service endpoints as part of ongoing modernization effort

Database Migration Service Integration

  • Created s6-overlay migrate service that runs Prisma migrations before other services start
  • Added migrate as dependency for all application services (nest, cap, cron, react) to ensure database is ready
  • Configured environment variable mounting for migrate service in docker_action.sh script
  • Improved container startup reliability with proper database initialization sequencing

Contribution Date Validation

  • Fixed invalid date creation from null contribution dates to prevent data integrity issues
  • Added proper null handling for contribution date fields in financial calculations
  • Enhanced data validation to ensure consistent date formatting across donation records

User Authentication & Access Control

  • Fixed online count heartbeat logic that was incorrectly skipping non-admin users instead of admin users

User Management System Modernization

  • Removed deprecated UserService.Accounts OData endpoint and related authorization
  • Implemented new NestJS /api/admin/users endpoint with comprehensive filtering and search
  • Updated frontend components to use new REST API with query parameters instead of OData filters
  • Streamlined user management architecture by consolidating to NestJS-only approach

Database Schema Optimization

  • Removed Stripe Customer ID column from users table to simplify payment integration
  • Cleaned up unused payment-related fields for improved data model clarity

Role Management Migration

  • Migrated role options management from CAP to NestJS for unified backend architecture
  • Centralized role-based access control in modern NestJS framework

Comprehensive Data Cleanup Scripts

  • Created scripts to remove empty email/phone records (65.47% and 15.95% respectively) for improved data quality
  • Added cleanup for orphaned auth accounts with invalid user references to maintain data integrity
  • Implemented comprehensive nullification script for collection notes across all related tables
  • Added cleanup script for orphaned households and members to remove dangling references
  • Created script to nullify all reference numbers across tables for data privacy
  • Added script to randomize AIB identifiers for 10% of households for testing purposes
  • All scripts include pre/post analysis and verification steps for safe execution
  • Removed obsolete shortfall logic fix scripts to streamline maintenance

🏗️ Architecture & Data Model Refactoring

Section titled “🏗️ Architecture & Data Model Refactoring”

CDS Model Schema Standardization

  • Replaced direct organization references with association pattern across multiple services for better data consistency
  • Standardized mixin structure for organization, jurisdiction, and other entity relationships
  • Updated projection columns to use association aliases (_organization, _jurisdiction, etc.) for unified access patterns

Database Schema Optimization

  • Removed deprecated lastNameNee field from Person entity across CAP and Prisma models
  • Deleted obsolete introspected.prisma file containing auto-generated database views
  • Simplified schema by removing unused fields and redundant definitions

Service Layer Modernization

  • Migrated jurisdictions service from Kysely to Prisma view for simplified data access
  • Replaced complex SQL query logic in favor of Prisma’s type-safe ORM operations
  • Aligned DTOs with shared api-types interfaces for type consistency across packages

Performance Optimizations

  • Simplified church page title logic by removing unnecessary useMemo hook
  • Computed title inline in PageTitle component for better performance
  • Removed unused import of useMemo from React to reduce bundle size

Public Churches API Implementation

  • Created public_Churches database view with comprehensive church details, address information, and parish contact data
  • Added PublicChurchesController with endpoints for listing churches and retrieving church images
  • Established proper relationships between AuthOrganization and Jurisdiction models for improved data structure
  • Enhanced HouseholdYearlyStatistics view to include phone and email contact information for better public accessibility

🎨 User Experience & Interface Improvements

Section titled “🎨 User Experience & Interface Improvements”

Organization Navigation & Membership Controls

  • Modified organization navigation to restrict options based on user’s organization memberships
  • Added session-based filtering to ensure users only see organizations they belong to
  • Enhanced security by returning empty navigation options when no valid session exists

Church Filtering & Diocese Integration

  • Added diocese logos to church filter interface with dynamic image display
  • Implemented dynamic page titles that show selected diocese name (e.g., “Churches of [Diocese Name]”)
  • Enhanced diocese selector component to pass full diocese objects for richer UI updates
  • Added diocese filtering functionality for public churches with dedicated API endpoint
  • Created new public dioceses endpoint to populate filtering interface with available options
  • Implemented DioceseSelect component with “All Dioceses” default option for comprehensive filtering

Code Organization & Type Safety

  • Consolidated church-related type definitions into centralized @repo/api-types package
  • Moved PublicChurch, PublicChurchCard, ChurchAddress, and ParishDetail interfaces from individual components
  • Updated all church components to import types from shared location
  • Removed duplicate interface definitions across church-card, churches-grid, churches, and church details routes

💰 Charitable Donation Scheme Enhancements

Section titled “💰 Charitable Donation Scheme Enhancements”

Advanced Tax Refund Calculations

  • Implemented interactive Tax Refund column showing calculated refund amounts (31% relief rate) for each household
  • Added detailed tooltips on donation and tax refund amounts with comprehensive calculation breakdown
  • Updated totals row and summary sections to include aggregate tax refund information for complete financial overview

Enhanced Household Data Management

  • Added year column to charitable donation households table for improved temporal tracking and organization
  • Reordered PPSN and Agreement Status filters for better user experience and workflow efficiency
  • Updated totals row colspan to properly accommodate the new year column structure

Contact Information Integration

  • Added email column to household yearly statistics view by joining primary member’s email data
  • Implemented phone number display in charitable donation scheme household view with search highlighting support
  • Enhanced household search filter functionality to include both email and phone number searches
  • Updated donation service response mapping to include comprehensive contact information

🎨 User Experience & Interface Improvements

Section titled “🎨 User Experience & Interface Improvements”

Persistent Filter System

  • Integrated useLocalStorageFilters hook to persist charitable donation household filter state across browser sessions
  • Added reset button to household filters UI for restoring default values with one click
  • Created comprehensive usage documentation for the localStorage filters pattern for future development

Form Tracking & Management

  • Added “Form Sent” column with interactive send button to track when donation forms are sent to households
  • Implemented local state management to record and display form submission dates for better tracking
  • Added toast notifications to confirm successful form sends and provide user feedback

Component Refactoring & Standardization

  • Replaced manual navigation logic and styling with reusable InternalTableLink component for consistency
  • Standardized empty email display using EmailTableLink component that shows “N/A” instead of null values
  • Removed unnecessary useCallback and getTableRowClasses utilities to streamline codebase
  • Consolidated table cell content rendering into single, maintainable component

Organization Hierarchy Refactoring

  • Replaced jurisdiction system with self-referential parent organization hierarchy for better scalability
  • Renamed jurisdiction_ID to parentId in schema and DTOs to support flexible organization relationships
  • Migrated from Kysely to Prisma for organization queries with proper type safety and performance
  • Added explicit relation mappings between AuthOrganization, AuthMembers, and AuthUser models
  • Enhanced organization data structure to support complex hierarchical relationships

Organization Type Classification System

  • Added OrganizationType enum (PARISH/DIOCESE) to database schema with PARISH as default
  • Implemented type filtering in organization queries and list views for better data management
  • Enhanced UI with type badges and icons to distinguish between parish and diocese organizations
  • Created comprehensive organization type management with proper validation and defaults

Data Presentation Improvements

  • Converted jurisdiction names from uppercase to title case for better readability
  • Implemented special handling for names with special characters, parentheses, and slashes
  • Added configurable page size limit to jurisdictions table with options for 20, 50, 100, 500, and 1000 items
  • Integrated limit control into table toolbar for user-adjustable pagination

Organization Management Interface

  • Added parent organization card component for clear hierarchy visualization
  • Enhanced organization detail page with comprehensive parent-child relationship display
  • Improved organization selection components with better search and filtering capabilities
  • Streamlined organization forms with type-aware validation and defaults

Smart Authentication Enhancements

  • Added Gmail detection with Google sign-in suggestion for improved user experience
  • Detects Gmail addresses in login and signup forms and displays helpful suggestion banner
  • Highlights the “Continue with Google” button with enhanced styling when Gmail is detected
  • Guides Gmail users toward the optimal authentication method to reduce friction

Advanced Filtering Capabilities

  • Added parent name search filter for jurisdictions with dedicated search input field
  • Implemented debouncing and visual highlighting for better search experience
  • Display selected hierarchy level names next to filter button for clear filter state
  • Added helper function to generate comma-separated list of selected level names
  • Wrapped filter in flex container to show selected names inline with truncation
  • Updated disabled label opacity for better visual consistency

🏗️ Organization Management Enhancements

Section titled “🏗️ Organization Management Enhancements”

Organization Filtering & Navigation

  • Added active and jurisdiction_ID fields to AuthOrganization schema for enhanced filtering
  • Created nav-specific endpoint that returns only active organizations with parent details
  • Enhanced organization selector to display parent diocese name for parishes
  • Improved navigation hierarchy display with parent-child relationship visualization

User Interface Refinements

  • Simplified parent organization card logic with better encapsulation and empty state handling
  • Added optional onEdit callback to enable “Assign Parent Organization” action from empty state
  • Removed redundant component imports and improved component composition
  • Removed AddHouseholdButton from fund dialogs to streamline user interface
  • Cleaned up unused invalidateQueries imports and component dependencies

Baptism Approval Workflow Enhancement

  • Implemented automatic household linking workflow for completed baptism entries during approval process
  • Added sequential dialog flow to guide users through assigning multiple baptisms to households before request completion
  • Enhanced sacrament approval page with intelligent detection of completed baptisms without household assignments
  • Integrated LinkBaptismDialog component to streamline household assignment process for baptism records
  • Improved data completeness by ensuring all completed baptisms are properly linked to households

UI Layout & Code Quality Improvements

  • Reorganized sacrament approval page layout with responsive grid for schedule and book entry cards
  • Standardized arrow function formatting across filter callbacks for better code consistency
  • Enhanced container spacing with bottom padding for improved visual hierarchy
  • Refactored component structure for better maintainability and readability

Baptism Household Linking Enhancement

  • Moved household linking functionality from approval page to baptism entries table for improved workflow efficiency
  • Added household member and person data to baptism entry queries for comprehensive display in table
  • Replaced parent names column with household column showing linked household information or link button for unassigned entries
  • Enhanced baptism entries table with real-time household assignment capabilities without requiring navigation to approval page

Data Privacy & Development Tools

  • Added comprehensive email address randomization script for development and testing environments
  • Created new script to randomize email addresses using fake testing domains while preserving username format
  • Integrated email randomization into master data randomization workflow with backup/restore support and skip option
  • Added email record counting to organization data statistics for better tracking of anonymization process

Envelope Export Enhancement

  • Added Excel export button to envelopes table for improved data export capabilities
  • Created EnvelopeExcelExportButton component with comprehensive export functionality including envelope number, combined name, last name, address, and assignment date
  • Updated Envelope type to include householdName field for better export data context
  • Adjusted toolbar spacing to accommodate new export button while maintaining clean UI layout

Data Randomization Improvements

  • Fixed organization filter in address randomization query to properly handle cases when ORGANIZATION_ID is not set
  • Added where_org_filter variable for dynamic organization filtering in randomization scripts
  • Fixed hardcoded organization filter in row_nums subquery to use dynamic filter for better multi-tenant support

Table Pagination Enhancement

  • Increased default table pagination from 15 to 50 items per page for better data visibility
  • Improved user experience by reducing need for frequent pagination when browsing larger datasets
  • Enhanced data browsing efficiency across all table components in the application

Data Processing Agreement Implementation

  • Implemented comprehensive DPA agreement functionality for Data Protection Officer (DPO) users
  • Added dedicated DPA route with conditional access for DPO role users who haven’t agreed to the terms
  • Created new endpoint and service method to record user agreement timestamps to Data Processing Agreement
  • Extended AuthUser type and authentication schema to track DPA agreement status and timestamps
  • Added DPA navigation item in sidebar visible only to DPO users for streamlined access
  • Enhanced authentication context to handle DPA agreement state and validation

Data Privacy & Development Tools

  • Added comprehensive data randomization scripts for development and testing environments
  • Implemented gender-specific Irish name selection with realistic male/female first names based on gender field
  • Generated authentic Irish PPSN numbers following official format (2 letters + 7 digits + 2 letters)
  • Created age-appropriate birth dates with realistic demographic distribution (15% children, 20% young adults, 30% middle-aged, 35% seniors)
  • Developed complete data anonymization suite including phone numbers, addresses, household names, and donation reports
  • Enhanced development workflow with GDPR-compliant test data generation

Organization Management Enhancement

  • Added organization deletion functionality with comprehensive member validation
  • Implemented safety checks preventing deletion of organizations with active members
  • Added delete button to organization detail page with automatic redirect after successful deletion
  • Display helpful tooltips when deletion is disabled due to existing members for better user guidance

User Management Improvements

  • Implemented user deletion functionality in admin panel with proper service integration
  • Added delete action to user dropdown menu with confirmation dialog for safety
  • Integrated deletion callback to refresh user list automatically after successful deletion
  • Enhanced admin control with comprehensive user lifecycle management

Development Environment Indicators

  • Added environment banner to authenticated layout for clear development/staging identification
  • Enhanced development workflow with visual environment indicators to prevent confusion
  • Improved safety by clearly distinguishing between production and non-production environments

Database Management Tools

  • Added comprehensive PostgreSQL cloning script for local to staging database synchronization
  • Implemented SSH-based remote operations with automatic backup creation for both source and target databases
  • Provided dry-run mode, verbose logging, and flexible configuration via CLI arguments or environment variables
  • Enhanced development workflow with reliable database staging environment setup

User Interface Refinements

  • Added user email display to organization members table for better identification
  • Included userEmail field in backend member queries and response mapping
  • Display email below username in members table UI with muted styling for improved readability
  • Removed cache-busting logic from organization avatar for simplified image rendering
  • Cleaned up unnecessary useState and useEffect imports and timestamp-based cache busting helper function

GDPR Compliance Enhancement

  • Added agreedDpaOn DateTime field to AuthUser model to track Data Protection Agreement acceptance timestamps
  • Enhanced compliance monitoring with automated DPA consent tracking
  • Removed obsolete migration scripts to streamline database maintenance

Contact Management Improvements

  • Added contact position display in the contacts page with visual indicators
  • Integrated Contact icons for better representation of role information
  • Enhanced contact directory with clearer organizational hierarchy visualization

Role-Based Access Control Updates

  • Extended logo upload permissions to include secretary role alongside administrators
  • Improved organizational management flexibility for authorized staff members
  • Enhanced role-based access control in OrganizationsController for better delegation

Contact Information Display

  • Simplified phone number formatting in ContactInfoCard for cleaner presentation
  • Streamlined telephone link generation to improve user experience
  • Enhanced contact card layout with better accessibility and readability

Data Encryption Research

  • Added comprehensive data encryption research document covering PostgreSQL, Prisma, and NestJS encryption strategies
  • Documented multiple encryption layers including database-level (pg_tde, pgcrypto), application-level (field encryption), and transport-layer (TLS 1.3) security
  • Researched GDPR-compliant encryption approaches for parish data including PII, health information, and children’s records
  • Covered advanced techniques like blind indexing for searchable encryption, tokenization for credit cards, and data masking strategies
  • Provided practical implementation examples with performance benchmarks and security trade-offs
  • Documentation: Available at /architecture/researches/data-encryption

Baptism Request Email Enhancement

  • Improved baptism request confirmation emails to include parish name for better context
  • Fixed button link in email notifications to ensure proper navigation to request details
  • Enhanced email template with more relevant information for users and administrators

Documentation Structure Optimization

  • Restructured documentation sidebar for improved navigation and user experience
  • Removed outdated import system documentation to focus on current features
  • Added comprehensive GDPR documentation structure with 9 specific topic pages covering data protection principles, legal basis, subject rights, security, retention, breach management, privacy by design, and processing agreements
  • Simplified Architecture section navigation with direct link access for security and authentication

Sacrament Approval Workflow Enhancement

  • Added interactive requirements checklist that tracks sacrament approval steps (schedule, book entry, permissions)
  • Implemented clickable requirement items that navigate users directly to relevant actions
  • Added completion status card for approved sacraments with scheduled date/time display
  • Enhanced validation checks to prevent premature request completion without required data
  • Improved sacrament scheduling interface with better data attributes for programmatic access

Household Management Improvements

  • Enhanced household linking functionality with prefill data support for better user experience
  • Added ability to prefill household creation form from existing baptism record details
  • Improved household selector component with better state management and success callbacks
  • Enhanced LinkBaptismDialog to automatically populate form data from sacrament records

Organization Management Features

  • Added member removal functionality to organization page with one-click deletion
  • Implemented role-based admin route authorization with dedicated admin navigation
  • Updated sidebar navigation to properly display based on user roles (secretary vs admin)
  • Enhanced organization members table with remove member column and automatic refresh

User Experience & Form Improvements

  • Added loading states to baptism request form to prevent duplicate submissions during processing
  • Updated baptism certificate button UI with improved icon and descriptive text
  • Fixed email sending logic to only send in production environments with detailed logging for development
  • Disabled map preview hover by default to improve initial user experience

Anonymous Baptism Requests

  • Updated sacrament system to allow anonymous baptism requests
  • Improved accessibility for users who wish to submit baptism requests without creating an account
  • Enhanced request handling logic to properly manage anonymous submissions

Documentation Platform Migration

  • Migrated documentation generator from Docusaurus to Astro with Starlight theme
  • Better Performance: Smaller bundle sizes and faster page loads for improved user experience
  • Modern Architecture: Astro’s island architecture allows for better component isolation and flexibility
  • Starlight Theme Benefits: Built-in accessibility, responsive design, and optimized documentation features including search, navigation, and dark mode support

Authentication & Infrastructure Fixes

  • Fixed issue with partial restricted pages causing authentication conflicts with Caddy reverse proxy
  • Resolved routing problems where some pages were incorrectly accessible without proper authentication
  • Improved integration between better-auth and Caddy middleware for consistent access control

VS Code Configuration

  • Added documentation workspace configuration to VS Code launch settings
  • Improved development experience with better debugging setup for documentation

Package Updates

  • Updated better-auth NestJS plugin package to latest version
  • Enhanced authentication integration with improved security features

Parish Access Controls

  • Limited parish access to assigned secretaries only

Diocese Settings Enhancement

  • Added logo upload functionality in diocese settings
  • Administrators can now customize their diocese branding

Streamlined User Management

  • Consolidated user management into a single, simplified interface
  • Removed redundant account and subscription management pages
  • Cleaned up unused backend endpoints for better performance

Organization Management

  • Simplified organization table by removing unnecessary action columns
  • Removed logo upload from organization detail pages (moved to diocese settings)

User Profile Updates

  • Streamlined user edit dialog by removing logo manager
  • Improved user experience with cleaner interface design

Code Cleanup

  • Removed 815+ lines of unused code across 23 files
  • Eliminated redundant authentication entities and services
  • Consolidated user management routes and components
  • Improved application performance and maintainability