39 Commits

Author SHA1 Message Date
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
c7dc88cdf6 feat: Add mobile hamburger menu and Register button
Implemented comprehensive navigation improvements to make registration
more discoverable and provide a cleaner mobile experience.

## Mobile Improvements
- Created reusable MobileMenu component with hamburger icon
- Replaces cluttered button layout with clean dropdown menu
- Includes Home, Profile, Admin links, and authentication options
- Auto-closes when clicking outside or navigating
- Smooth transition animations

## Register Button Added
- Sermon page: Added Register button next to Login in notes section
- Sermon page: Added Register button in header for non-authenticated users
- Home page: Added Register button next to Login for easy discovery
- All Register links redirect to login page in register mode

## Navigation Consistency
- Home button now visible on sermon pages (desktop and mobile)
- Consistent navigation experience across all pages
- Mobile menu available on both home and sermon pages
- Better mobile UX with less header crowding

Benefits:
- Users can easily find how to register
- Cleaner mobile interface
- Consistent navigation patterns
- Better discoverability of account features

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-06 09:02:41 -05:00
287284c2fe perf: Comprehensive efficiency optimizations
Implemented all 5 critical efficiency improvements to optimize
performance, reduce resource usage, and improve scalability.

## 1. Database Indexes
- Added indexes on sermon_notes foreign keys (user_id, sermon_id)
- Added composite index on sermons (archived, date DESC)
- Added indexes on frequently queried columns across all tables
- Impact: Faster queries as data grows, better JOIN performance

## 2. Eliminated N+1 Query Pattern
- Reduced 2 API calls to 1 on home page load
- Changed from separate active/archived fetches to single call
- Filter archived sermons client-side using computed properties
- Impact: 50% reduction in HTTP requests per page load

## 3. Scheduled Database Cleanup
- Extended existing plugin to clean expired sessions hourly
- Added cleanup for expired rate limits every hour
- Added cleanup for expired password reset codes every hour
- Sermon cleanup continues to run daily based on retention policy
- Impact: Prevents database table growth, better performance

## 4. Multi-stage Docker Build
- Implemented 3-stage build: deps -> builder -> runtime
- Separated build-time and runtime dependencies
- Added non-root user (nuxt:nodejs) for security
- Integrated dumb-init for proper signal handling
- Added health check endpoint at /api/health
- Impact: Smaller image size, faster deployments, better security

## 5. HTTP Caching
- Static assets: 1 year cache (immutable)
- Logos/images: 1 year cache (immutable)
- API routes: No cache (always fresh)
- HTML pages: 10 minute cache with revalidation
- Impact: Reduced bandwidth, faster page loads, less server load

All optimizations follow best practices and maintain backward
compatibility with existing functionality.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-06 08:01:45 -05:00
e313def354 footer fixes 2025-10-12 00:42:48 -04:00
7a481f5004 layout fixes 2025-10-12 00:39:14 -04:00
e05b5a032d layout & date fixes 2025-10-12 00:35:14 -04:00
f0f7108765 layout & text fixes 2025-10-12 00:31:07 -04:00
21b480021e Profile enhancements & greeting 2025-10-06 18:54:58 -04:00
53c9ba8fd7 Styling fixes 2025-10-06 17:48:38 -04:00
ab952e0334 Mobile layout adjustments 2025-10-06 17:32:01 -04:00
966e244729 Mobile layout adjustments 2025-10-06 17:29:10 -04:00
291b6743c5 Login watcher 2025-10-06 17:14:54 -04:00
a50791e74c User creation and management 2025-10-06 17:04:34 -04:00
b4db0461a0 Footer 2025-10-02 09:24:41 -04:00
a70393b375 Sermon dates 2025-10-02 09:09:02 -04:00
27fcedfcd5 Songs & dates 2025-10-02 08:59:05 -04:00
dfe3517ac6 Fix mobile layout: stack View button below dropdown on mobile devices 2025-10-02 08:45:31 -04:00
b08aeab3a4 Fix timezone issue: dates now display correctly by forcing local time interpretation 2025-10-02 00:32:54 -04:00
2d64213411 Fix hydration mismatch by wrapping sermon sections in ClientOnly 2025-10-02 00:28:47 -04:00
2bd8afe785 Align Today's Sermon with grid layout to match Upcoming Sermons 2025-10-02 00:27:46 -04:00
deb0269a67 Restructure home page: separate Today's Sermon, Upcoming Sermons, and Previous Sermons sections 2025-10-02 00:23:14 -04:00
2b5618a4da Fix sermon selection to exclude future dates - show most recent sermon up to today 2025-10-02 00:17:18 -04:00
8df6f886f3 Fix hydration mismatch by wrapping sermon heading in ClientOnly 2025-10-02 00:14:27 -04:00
3cee9fefd7 Fix home page: show archived sermons in dropdown, fix Today's Sermon heading, add View button 2025-10-02 00:12:39 -04:00
4daea87cd1 Add unarchive functionality and show archived status in admin dropdown 2025-10-02 00:05:45 -04:00
18f0b3ca50 Improve mobile layouts: fix button wrapping, reorganize admin header, stack form fields properly 2025-10-01 23:35:32 -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
b0ede7dd61 Add fallback template to ClientOnly to prevent hydration mismatch 2025-10-01 22:39:40 -04:00
da5135d615 Fix favicon location and hydration mismatch by moving logos to public directory and wrapping auth UI in ClientOnly 2025-10-01 22:35:19 -04:00
315336a6e9 Update logout to stay on home page instead of redirecting to login 2025-10-01 22:27:24 -04:00
71e39cceb1 Fix favicon and add authentication state to main page with logout/create sermon buttons 2025-10-01 22:25:35 -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
Ryderjj89
ce867de7bc feat: Implement dedicated login page and authentication middleware 2025-10-01 19:55:49 -04:00
Ryderjj89
8b35f8cacf Fix modal visibility and database path issues for Docker deployment 2025-09-29 20:05:49 -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