Changelog
December 5, 2025
Section titled “December 5, 2025”Parishioner Management
Section titled “Parishioner Management”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
User Administration
Section titled “User Administration”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
Address & Contact Management
Section titled “Address & Contact Management”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
Search Improvements
Section titled “Search Improvements”Expanded Search Results
- Removed result limits when searching across multiple components
- Search now returns all matching results instead of truncating to a fixed number
Audit Trail System
Section titled “Audit Trail System”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)
System Improvements
Section titled “System Improvements”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
December 3, 2025
Section titled “December 3, 2025”System Improvements
Section titled “System Improvements”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)
December 1, 2025
Section titled “December 1, 2025”Parish Roles Management
Section titled “Parish Roles Management”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
November 26, 2025
Section titled “November 26, 2025”Baptism Certificate PDF Enhancements
Section titled “Baptism Certificate PDF Enhancements”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
Sacrament Request Workflow
Section titled “Sacrament Request Workflow”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
Bug Fixes
Section titled “Bug Fixes”- Fixed collection edit dialog state synchronization issue on fund detail page that caused dialogs to close immediately after opening
November 25, 2025
Section titled “November 25, 2025”Sacrament Request Improvements
Section titled “Sacrament Request Improvements”Birth Certificate Verification Tracking
- Added birth certificate verification tracking to baptism requests with
birthCertVerified,birthCertVerifiedAt, andbirthCertVerifiedByfields - 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
Bug Fixes & Maintenance
Section titled “Bug Fixes & Maintenance”- 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
November 20, 2025
Section titled “November 20, 2025”🎨 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
November 19, 2025
Section titled “November 19, 2025”🕊️ Sacrament Scheduling & Documents
Section titled “🕊️ Sacrament Scheduling & Documents”Baptism Meeting Schedule Type Update
- Renamed
ScheduleTypevalue fromPRECLASStoMEETINGin Prisma schema and backend services for clearer terminology - Updated all schedule handling logic to use the new
MEETINGtype while keeping existing workflows working as before - Renamed baptism preclass meeting PDF generator to
generateBaptismMeetingPDFand updated related imports - Refreshed sacrament approval and schedule management UI labels from “Preclass Meeting” to “Baptism Meeting” for clearer language
🌐 Public Access & Authentication
Section titled “🌐 Public Access & Authentication”Public Organization Details Endpoint
- Added
AllowAnonymousdecorator to the public organizationfindByIdendpoint so visitors can view public organization details without authentication
🎨 Authentication UX Refinements
Section titled “🎨 Authentication UX Refinements”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
November 18, 2025
Section titled “November 18, 2025”🔄 Backend Improvements & Bug Fixes
Section titled “🔄 Backend Improvements & Bug Fixes”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
🕊️ Sacrament Scheduling Enhancements
Section titled “🕊️ Sacrament Scheduling Enhancements”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
November 18, 2025
Section titled “November 18, 2025”🔄 Backend Improvements & Bug Fixes
Section titled “🔄 Backend Improvements & Bug Fixes”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
🕊️ Sacrament Scheduling Enhancements
Section titled “🕊️ Sacrament Scheduling Enhancements”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
🎨 User Interface Improvements
Section titled “🎨 User Interface Improvements”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)
November 17, 2025
Section titled “November 17, 2025”🧱 Backend Migration & Architecture
Section titled “🧱 Backend Migration & Architecture”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
✨ Sacrament Approval Experience
Section titled “✨ Sacrament Approval Experience”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
openEditDialogcallback 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
November 14, 2025
Section titled “November 14, 2025”🔐 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
Authentication Interface Refinements
Section titled “Authentication Interface Refinements”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
November 14, 2025 (Evening Update)
Section titled “November 14, 2025 (Evening Update)”🎨 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
🔄 Backend Migration
Section titled “🔄 Backend Migration”Parishioner Service Migration to NestJS
- Migrated parishioner service from legacy CAP OData endpoint to NestJS REST API using a dedicated Prisma view
- Created
parish_Parishionersdatabase 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
Parishionertypes
🔧 Bug Fixes & Backend Improvements
Section titled “🔧 Bug Fixes & Backend Improvements”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
November 13, 2025
Section titled “November 13, 2025”🏗️ 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
🔧 API & Backend Improvements
Section titled “🔧 API & Backend Improvements”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
🧹 Code Quality Improvements
Section titled “🧹 Code Quality Improvements”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
November 12, 2025
Section titled “November 12, 2025”🔐 Security & Authentication
Section titled “🔐 Security & Authentication”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
👥 User Management Enhancements
Section titled “👥 User Management Enhancements”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
November 11, 2025 (Updated)
Section titled “November 11, 2025 (Updated)”🏠 Household Management Enhancements
Section titled “🏠 Household Management Enhancements”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
🔐 Security & Access Control
Section titled “🔐 Security & Access Control”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
🧹 Code Quality Improvements
Section titled “🧹 Code Quality Improvements”Performance Optimization
- Removed unused online user tracking feature to streamline application
- Cleaned up legacy code and improved overall system performance
November 11, 2025
Section titled “November 11, 2025”🌐 Domain Migration Complete
Section titled “🌐 Domain Migration Complete”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
November 10, 2025 (Updated)
Section titled “November 10, 2025 (Updated)”🌐 Domain & Configuration Updates
Section titled “🌐 Domain & Configuration Updates”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
🏠 Household Management Enhancements
Section titled “🏠 Household Management Enhancements”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
🔧 User Interface Improvements
Section titled “🔧 User Interface Improvements”Baptism Dialog Simplification
- Simplified link baptism dialog help text for better user experience
November 10, 2025
Section titled “November 10, 2025”🚀 New Features
Section titled “🚀 New Features”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
🔄 Backend Migration
Section titled “🔄 Backend Migration”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
🏗️ Architecture Improvements
Section titled “🏗️ Architecture Improvements”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
🎨 User Experience Enhancements
Section titled “🎨 User Experience Enhancements”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
November 7, 2025
Section titled “November 7, 2025”🚀 New Features
Section titled “🚀 New Features”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
🔄 Backend Migration
Section titled “🔄 Backend Migration”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
🏗️ Infrastructure & Deployment
Section titled “🏗️ Infrastructure & Deployment”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
🔧 Bug Fixes
Section titled “🔧 Bug Fixes”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
🔄 Backend Migration
Section titled “🔄 Backend Migration”User Management System Modernization
- Removed deprecated UserService.Accounts OData endpoint and related authorization
- Implemented new NestJS
/api/admin/usersendpoint 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
🧹 Database Maintenance & Cleanup
Section titled “🧹 Database Maintenance & Cleanup”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
🎨 User Experience Improvements
Section titled “🎨 User Experience Improvements”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
November 6, 2025
Section titled “November 6, 2025”🏗️ Public API & Data Infrastructure
Section titled “🏗️ Public API & Data Infrastructure”Public Churches API Implementation
- Created
public_Churchesdatabase view with comprehensive church details, address information, and parish contact data - Added
PublicChurchesControllerwith endpoints for listing churches and retrieving church images - Established proper relationships between
AuthOrganizationandJurisdictionmodels for improved data structure - Enhanced
HouseholdYearlyStatisticsview 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
useLocalStorageFiltershook 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
InternalTableLinkcomponent for consistency - Standardized empty email display using
EmailTableLinkcomponent that shows “N/A” instead of null values - Removed unnecessary
useCallbackandgetTableRowClassesutilities to streamline codebase - Consolidated table cell content rendering into single, maintainable component
November 5, 2025
Section titled “November 5, 2025”🏗️ Architecture & Data Model
Section titled “🏗️ Architecture & Data Model”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
✨ User Experience Enhancements
Section titled “✨ User Experience Enhancements”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
🔐 Authentication & User Experience
Section titled “🔐 Authentication & User Experience”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
activeandjurisdiction_IDfields 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
🏛️ Sacrament Management
Section titled “🏛️ Sacrament Management”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
🔧 Development & Operations
Section titled “🔧 Development & Operations”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
📊 Data Management & Exports
Section titled “📊 Data Management & Exports”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
🎨 User Experience Improvements
Section titled “🎨 User Experience Improvements”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
November 4, 2025
Section titled “November 4, 2025”🛡️ Compliance & Data Protection
Section titled “🛡️ Compliance & Data Protection”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
🔧 Admin Interface & Management
Section titled “🔧 Admin Interface & Management”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 & Infrastructure
Section titled “🔧 Database & Infrastructure”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
November 3, 2025
Section titled “November 3, 2025”🛡️ Compliance & Data Protection
Section titled “🛡️ Compliance & Data Protection”GDPR Compliance Enhancement
- Added
agreedDpaOnDateTime 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
✨ New Features
Section titled “✨ New Features”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
🔧 User Interface Improvements
Section titled “🔧 User Interface Improvements”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
November 1, 2025
Section titled “November 1, 2025”📚 Documentation
Section titled “📚 Documentation”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
October 31, 2025
Section titled “October 31, 2025”✨ Improvements
Section titled “✨ Improvements”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
October 30, 2025
Section titled “October 30, 2025”✨ New Features
Section titled “✨ New Features”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
🔧 Development & Operations
Section titled “🔧 Development & Operations”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
October 29, 2025
Section titled “October 29, 2025”🛡️ GDPR Compliance
Section titled “🛡️ GDPR Compliance”Parish Access Controls
- Limited parish access to assigned secretaries only
✨ New Features
Section titled “✨ New Features”Diocese Settings Enhancement
- Added logo upload functionality in diocese settings
- Administrators can now customize their diocese branding
🔧 Admin Interface Improvements
Section titled “🔧 Admin Interface Improvements”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
🧹 Technical Improvements
Section titled “🧹 Technical Improvements”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