49 Commits

Author SHA1 Message Date
0ff37e8999 feat: Implement automatic sermon archiving based on dates
Add intelligent auto-archiving system that automatically moves sermons to the "Previous Sermons" list when they are 1 day past their most recent date.

Features:
- Auto-archive logic that checks both primary and additional sermon dates
- Finds the most recent date across all dates for a sermon
- Archives sermon 1 day after the most recent date has passed
- Manual trigger via "Run Auto-Archive Now" button on admin page
- Automatic daily execution via scheduled cleanup task
- Clear admin UI with explanatory text and status messages
- Manual archive/unarchive functionality preserved

Implementation:
- Added getMostRecentSermonDate() helper to find latest date from primary and additional dates
- Added autoArchiveOldSermons() function to database utils
- Created /api/sermons/auto-archive endpoint for manual triggering
- Integrated into daily cleanup plugin schedule
- Updated admin UI with auto-archive button and status indicators
- Added unarchiveSermon() function for completeness

The system runs automatically every 24 hours and can be manually triggered by admins. Sermons are moved to the previous sermons dropdown on the home page exactly 1 day after their final presentation date, ensuring the main page always shows current and upcoming content while preserving access to past sermons.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-07 09:53:17 -05:00
3f1c573a67 feat: Make menu context-aware and hide current page links
Implement intelligent menu filtering that hides self-referencing links and shows all applicable pages based on user role and authentication state.

Changes:
- Menu component now uses currentPath to filter out the current page link
- Added computed properties to detect which page user is on
- Fixed profile, admin, and users pages to dynamically detect admin status from API
- Added menu to forgot-password page for consistent navigation
- All pages now pass correct authentication state to Menu component

This ensures menus always show relevant navigation options while avoiding redundant links to the current page. Admin users now see all admin options (Manage Sermons, Manage Users) regardless of which page they're on, except the current one.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-07 09:40:42 -05:00
cee37c78c4 feat: Unify navigation with hamburger menu across all screen sizes
- Renamed MobileMenu to Menu component (no longer mobile-only)
- Added 500ms debounce to prevent accidental double-tap menu toggles
- Improved click-outside detection using ref-based containment check
- Removed mobile/desktop navigation split - menu now consistent everywhere
- All pages now use single hamburger menu on both mobile and desktop
- Simplified header layouts across index, sermon, profile, admin, and users pages

This provides a cleaner, more consistent UX with the hamburger menu available
on all screen sizes. The debounce prevents the menu from closing accidentally
when navigating between pages or double-tapping.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-06 09:51:09 -05:00
1cb0a4e9a2 feat: Add consistent mobile hamburger menu across all pages
- Updated profile.vue to use MobileMenu on mobile, desktop buttons on desktop
- Updated admin.vue to use MobileMenu on mobile, desktop buttons on desktop
- Updated users.vue to use MobileMenu on mobile, desktop buttons on desktop
- All pages with header navigation now have consistent mobile UX
- Mobile menu provides clean, organized navigation with all options
- Desktop retains traditional button layout for familiarity

This ensures consistent navigation experience across the entire application,
with the hamburger menu appearing on all pages with headers when viewed
on mobile devices.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-06 09:29:34 -05:00
858f214fab Keep admin on page after editing sermon
Changed behavior so that editing a sermon no longer redirects to homepage.
Instead, it shows a success message and keeps the form filled for further edits.
Creating a new sermon still redirects to homepage as before.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-04 14:26:30 -05:00
66172e0baa Add sermon retention policy feature
Implemented a configurable retention policy system for sermons with automatic cleanup:
- Added settings table to store retention policy configuration
- Created API endpoints for getting/setting retention policy
- Added Database Settings section to admin page with retention options (forever, 1-10 years)
- Implemented manual cleanup endpoint for on-demand deletion
- Added automated daily cleanup task via Nitro plugin
- Sermons are deleted based on their date field according to the retention policy

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-04 14:07:14 -05:00
e313def354 footer fixes 2025-10-12 00:42:48 -04:00
7fc1d79eeb Saving notes and username fixes 2025-10-07 08:58:38 -04:00
53c9ba8fd7 Styling fixes 2025-10-06 17:48:38 -04:00
b4db0461a0 Footer 2025-10-02 09:24:41 -04:00
27fcedfcd5 Songs & dates 2025-10-02 08:59:05 -04:00
82aaf15957 Fix timezone issue in admin page formatDate function 2025-10-02 00:33:45 -04:00
4daea87cd1 Add unarchive functionality and show archived status in admin dropdown 2025-10-02 00:05:45 -04:00
591405c66f Fix mobile layout: Edit and Archive on first row, Delete on second row 2025-10-01 23:56:39 -04:00
fd1f3c14bb Add archive button and confirmation dialogs to admin page 2025-10-01 23:52:24 -04:00
160d898d94 Make church logo clickable on all pages to navigate to home/sermons page 2025-10-01 23:41:43 -04:00
f3d5fc68f3 Fix login UX: disable autocapitalization, make username case-insensitive, improve edit scroll position 2025-10-01 23:40:24 -04:00
18f0b3ca50 Improve mobile layouts: fix button wrapping, reorganize admin header, stack form fields properly 2025-10-01 23:35:32 -04:00
bd33432721 Simplify Bible reference label by removing redundant example text 2025-10-01 23:02:12 -04:00
4b2ae9482b Add complete edit functionality for sermons with update API endpoint and enhanced Bible reference management 2025-10-01 23:00:51 -04:00
441a7af81b Add enhanced Bible reference fields with version, reference, and text for better sermon display formatting 2025-10-01 22:54:07 -04:00
af72305c80 Fix route conflict: move delete endpoint to /api/sermons/delete/[id] to avoid conflict with [slug].get 2025-10-01 22:33:39 -04:00
bd0539118c Add sermon management functionality with delete capability to admin page 2025-10-01 22:29:50 -04:00
1b282c05fe Complete sermon itinerary application with Nuxt 3, SQLite, authentication, and Docker deployment 2025-10-01 22:15:01 -04:00
793f395795 Starting over 2025-10-01 22:00:32 -04:00
dadea8b5d0 feat: Restore admin.vue content with proper width constraints and add favicon 2025-10-01 20:55:52 -04:00
e8bac3fc75 test: Simplify admin.vue template to minimal content with fixed width for diagnostic purposes 2025-10-01 20:47:58 -04:00
Ryderjj89
67c44df1e5 test: Apply fixed width to admin page content for diagnostic purposes 2025-10-01 20:39:14 -04:00
Ryderjj89
de6907a1f1 fix: Remove !important declarations and modal styles from assets/css/main.css 2025-10-01 20:35:31 -04:00
Ryderjj89
e15ba94a2f fix: Replace UContainer with div and apply width constraints directly in admin page 2025-10-01 19:58:59 -04:00
Ryderjj89
ce867de7bc feat: Implement dedicated login page and authentication middleware 2025-10-01 19:55:49 -04:00
Ryderjj89
fb2cf9a08f feat: Enhance UI/UX of form components in admin page 2025-10-01 19:48:12 -04:00
Ryderjj89
8e97c63cef feat: Restore remaining form sections and adjust form width in admin page 2025-10-01 19:16:17 -04:00
Ryderjj89
2f3b427477 fix: Move generateSlug to admin page to prevent client-side bundling of server utils 2025-10-01 19:09:17 -04:00
Ryderjj89
a87950deec test: Restore Basic Information section in admin.vue template 2025-10-01 19:04:31 -04:00
Ryderjj89
bde4cacffe test: Restore basic structure of admin.vue template 2025-10-01 19:02:29 -04:00
Ryderjj89
0ea995abee test: Simplify admin.vue template to isolate build error 2025-10-01 19:01:27 -04:00
Ryderjj89
33a9527dd0 refactor: Replace UCard with header tag in admin page 2025-10-01 19:00:08 -04:00
Ryderjj89
71162e5b50 fix: Resolve build error and duplicate generateSlug function in admin page 2025-10-01 18:59:17 -04:00
Ryderjj89
07683824c2 feat: Improve UI of Create New Sermon page 2025-10-01 18:58:10 -04:00
Ryderjj89
0361c3fbe6 Refactor admin form layout, improve bible reference input, re-enable client-side cookie access, and try manual focus on login modal 2025-10-01 18:51:02 -04:00
Ryderjj89
0325f44d3e Fix admin form input sizes using proper size props 2025-10-01 18:03:13 -04:00
Ryderjj89
bb025259e3 Fix modal focus and adjust admin form input sizes 2025-10-01 17:58:10 -04:00
Ryderjj89
04c5c22e2f Increase main content width for better layout 2025-10-01 17:54:39 -04:00
Ryderjj89
959b70ef34 Adjust form input sizes: smaller title/date, larger bible reference inputs 2025-10-01 17:54:09 -04:00
Ryderjj89
2715c25744 CRITICAL FIX: Force logo sizing with CSS and ensure styling is applied to all elements 2025-09-29 19:50:57 -04:00
Ryderjj89
c818d43f4e Fix logo size, improve CSS styling with universal selector, and add error handling 2025-09-29 19:43:53 -04:00
Ryderjj89
eb21825f77 Fix issues: reduce logo size, improve CSS styling, fix API error handling 2025-09-29 19:36:05 -04:00
Ryderjj89
c033410c2e Complete sermon management system with Nuxt 4, authentication, SQLite database, QR codes, and Docker deployment 2025-09-29 18:59:31 -04:00