- Add daily-verse API endpoint with 7 rotating verses in Romanian and English
- Replace static homepage verse with dynamic fetch from API
- Ensure consistent daily rotation using day-of-year calculation
- Support both ro and en locales for verse content
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Major homepage and SEO enhancements based on optimization document:
**Homepage Content Updates:**
- Updated H1 titles with SEO-optimized text for both RO/EN
- Enhanced hero descriptions with targeted keywords
- Improved feature descriptions for better clarity
- Updated daily verse section with keyword-rich titles
- Added new footer description with SEO focus
**SEO Implementation:**
- Added dynamic metadata generation with locale-specific SEO
- Implemented Open Graph tags for social media sharing
- Added Twitter Card metadata for enhanced sharing
- Integrated Schema.org JSON-LD structured data
- Set up hreflang tags for international SEO
- Added canonical URLs to prevent duplicate content
- Included targeted keywords for both languages
**Technical Improvements:**
- Migrated from Docker to PM2 deployment
- Removed Docker files and updated deployment scripts
- Updated README with PM2 instructions
- Fixed console log cleanup for production
- Added proper favicon with Next.js app directory
- Increased memory limit to 4GB for better performance
- Updated port configuration to 0.0.0.0:3010
- Set Romanian (/ro) as default locale with proper redirects
**Translation Updates:**
- Enhanced Romanian translations with SEO-optimized content
- Updated English translations with matching SEO improvements
- Added new 'seo' namespace for metadata translations
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add docker-compose.yml with single app service on port 3010
- Add deploy.sh script to fetch latest production branch code
- Uses external PostgreSQL database via DATABASE_URL
- No nginx container - app exposed directly on port 3010
- Supports automated deployment from production branch
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Remove all test files (__tests__, *.test.*, *.spec.*)
- Remove Jest configuration files (jest.config.js, jest.setup.js)
- Remove test-related scripts from package.json
- Remove Jest dependencies from package.json
- Add production Dockerfile for standalone Next.js app
- Update tsconfig.json exclusions
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Exclude __tests__ directory from TypeScript compilation
- Resolves Jest type definition errors in test files
- TypeScript now compiles cleanly without errors
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add Suspense boundaries for useSearchParams in bible and search pages
- Extract search page content to separate component for proper client-side rendering
- Remove all Docker configuration files and temp documentation
- Build now passes successfully without TypeScript or Suspense errors
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Change chat layout from vertical stacking to horizontal side-by-side layout
- History panel (300px width) displays on left with conversation list
- Main chat area takes remaining space on right with messages and input
- Improves UX by making chat history visible alongside active conversation
- Fix JSX structure and nesting for proper component rendering
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Fix critical async/await bug in chat API token verification
- Add comprehensive authentication debugging logs
- Fix conversations API Zod schema validation for query parameters
- Remove problematic CircularProgress import causing build warnings
- Improve error handling and user feedback in chat component
The main issue was that verifyToken() was called without await, causing
the chat API to receive a Promise object instead of the user payload,
resulting in undefined userId and failed conversation persistence.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Fix CircularProgress import from correct MUI package
- Fix conversationId validation by omitting null values instead of sending them
- Fix conversations API Zod schema default values (string vs number mismatch)
- Remove debug logging from chat error handling
- AI chat conversations now work properly with authentication
- Chat history loading no longer fails with validation errors
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Phase 1 - Database Schema & Basic API:
- Add ChatConversation and ChatMessage tables with proper relationships
- Create conversation CRUD API endpoints with authentication
- Update chat API to support persistent conversations
- Implement auto-generated conversation titles and language separation
- Add conversation soft delete and user-specific access control
Phase 2 - Enhanced Memory System:
- Implement intelligent context selection beyond simple chronological order
- Add relevance scoring for older messages based on keyword overlap and biblical references
- Create automatic message summarization for very long conversations
- Optimize token usage with smart context management (1500 token budget)
- Add biblical awareness with Romanian/English book name detection
- Implement time-based relevance decay for better context prioritization
Frontend Improvements:
- Add chat history button to floating chat header
- Create basic history panel UI with placeholder content
- Maintain backward compatibility for anonymous users
Database Changes:
- Enhanced schema with conversation relationships and message roles
- Proper indexing for performance and user-specific queries
- Migration completed successfully with prisma db push
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Replace dynamic live counter with static "thousands of believers" text in both languages
- Fix Discuss this verse feature with proper timing and quote escaping
- Add setTimeout delay to ensure chat input is set after component renders
- Remove unescaped quotes from English daily verse text
- Merge duplicate hero translation objects in both language files
- Clean up debug console.log statements
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add dynamic date and year generation replacing static 2024 values
- Implement "Discuss this verse" feature with AI chat integration
- Fix translation key conflicts by merging duplicate hero objects
- Update Romanian translations with improved messaging
- Enhance floating chat to support initial messages via events
- Fix FORMATTING_ERROR for liveCounter with proper next-intl syntax
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Features implemented:
1. Enhanced Hero Section with live user counter (simulated)
2. Interactive Demo Section with chat preview
3. Daily Verse Section with actions (discuss, save, share)
4. How It Works 3-step process visualization
5. Community Prayer Wall with live prayer examples
6. Testimonials Section with 4 realistic testimonials
7. FAQ Section with 6 common questions and expandable answers
8. Enhanced Footer with newsletter signup, quick links, legal, and social
Additional improvements:
- Added live counter showing active users studying
- Interactive demo showing AI chat conversation
- Newsletter subscription form
- Social media links and language indicators
- Comprehensive translations in English and Romanian
- Mobile-responsive design with flexbox layouts
- Modern Material-UI components with animations
- Enhanced visual hierarchy and user engagement
- Changed from incorrect f.relativeTime(number, unit, options) to correct f.relativeTime(date, now)
- The function expects two Date objects, not a number and unit string
- This properly eliminates the ENVIRONMENT_FALLBACK warning
- Simplified the implementation to use next-intl's built-in formatting
- Added 'now' parameter to all relativeTime calls to prevent ENVIRONMENT_FALLBACK warning
- Ensures proper time reference for relative time calculations
- Maintains existing fallback for older browsers
- Added data-floating-chat attribute to chat component for easy detection
- Updated bible reader keyboard event handler to check if chat is open
- Prevent shortcuts from triggering when user is typing in input fields
- Check for dialogs, modals, and the floating chat before processing shortcuts
- Migrated search page to use Box with flexbox for responsive layout
- Updated bible reader controls to use Box instead of Grid
- Converted home page hero, features, and stats sections to flexbox
- Removed Grid imports and replaced with Box components across all pages
- Maintained responsive behavior using sx breakpoints and flex properties
- Replaced Grid components with Box components using flexbox
- Sidebar now takes 25% width on desktop, 100% on mobile
- Prayer list takes remaining space with flex: 1
- Responsive layout switches to column on mobile
- Fixed side-by-side layout issue
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
- Removed 'now' parameter from relativeTime calls to avoid next-intl warning
- Added try-catch with fallback formatting for better error handling
- Provides manual time formatting if relativeTime fails
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
- Added missing 'categories.all' translation in both ro.json and en.json
- Fixed relativeTime formatting by using new Date() instead of useNow hook
- Removed unused useNow import
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
- Integrated prayer data with Prisma database schema
- Updated API endpoints to use actual database
- Implemented AI prayer generation with Azure OpenAI
- Added user authentication for prayer creation
- Moved Add Prayer button from FAB to sidebar top
- Added prayer count tracking and user prayer status
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
- Add authentication-gated prayer creation with dual-mode interface
- Implement tabbed dialog: "Write Prayer" and "AI Generate" options
- Create AI prayer generation API endpoint with bilingual support (EN/RO)
- Add category-specific prayer templates with user prompt integration
- Include proper authentication checks and user-based prayer attribution
- Enhance UX with loading states, success feedback, and guided prompts
- Fix missing searchTypes translations in English locale for search functionality
- Restrict prayer creation to logged-in users with appropriate visual feedback
- Support both manual composition and AI-assisted prayer creation workflows
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Implement search query parameters in URL for tracking and sharing capabilities
- Add support for q, testament, type, and books URL parameters
- Enable automatic search execution from URL parameters on page load
- Update URL dynamically when search is performed for shareable links
- Fix circular dependency issues with flag-based approach for URL-triggered searches
- Support browser back/forward navigation with search state preservation
- Enable bookmarking and analytics tracking of search queries
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Fix search API to include bookId, verseId, and bookKey in response for proper navigation
- Update Bible reader to handle both book ID and bookKey matching for robust navigation
- Replace deprecated ListItem button prop with ListItemButton for Material-UI v5+ compatibility
- Add fallback logic in search result navigation to handle missing book identifiers
- Ensure "Go to" button takes users to exact verse with proper highlighting and scrolling
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Complete redesign of search interface with auto-suggestions, advanced filtering, and professional result display
- Implement user-specific search history (stored per user ID) for privacy
- Move popular searches from sidebar to filters modal for better organization
- Make all page sections full width by removing container constraints
- Add comprehensive search functionality with context display, bookmarks integration, and result navigation
- Include proper Romanian translations for search types ("Căutare generală", "Căutare exactă")
- Enhance UX with skeleton loading, empty states, mobile responsiveness, and keyboard shortcuts
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Change "Bookmark-uri" to "Favorite" throughout Romanian translations
- Update chapter dropdown to show full "Chapter X" labels instead of truncated text
- Add improved MenuProps for better dropdown UX with scrollable menu
- Enhance navigation clarity with non-truncated chapter selection
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add theme button translations: light, dark, sepia
- Add close button translation for settings dialog
- Complete internationalization for Romanian and English locales
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Replace old Bible page with comprehensive reader component
- Add customizable reading preferences (font size, themes, line height)
- Implement in-page navigation instead of sidebar layout
- Add quick font size controls (A- / A+) in navigation bar
- Create fullscreen reading mode with distraction-free experience
- Include verse-level bookmarking and copy functionality
- Add keyboard shortcuts for navigation and settings
- Support URL parameters for bookmark navigation
- Responsive design optimized for mobile and desktop
- Complete internationalization for Romanian and English
- Center navigation controls for better visual balance
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Add complete bookmarks page with navigation functionality:
Features:
- Dedicated /bookmarks page for viewing all saved bookmarks
- Support for both chapter and verse bookmarks in unified view
- Statistics dashboard showing total, chapter, and verse bookmark counts
- Tabbed filtering (All, Chapters, Verses) for easy organization
- Direct navigation to Bible reading page with URL parameters
- Delete functionality for individual bookmarks
- Empty state with call-to-action to start reading
Navigation Integration:
- Add Bookmarks to main navigation menu (authenticated users only)
- Add Bookmarks to user profile dropdown menu
- Dynamic navigation based on authentication state
Bible Page Enhancements:
- URL parameter support for bookmark navigation (book, chapter, verse)
- Verse highlighting when navigating from bookmarks
- Auto-clear highlight after 3 seconds for better UX
API Endpoints:
- /api/bookmarks/all - Unified endpoint for all user bookmarks
- Returns transformed data optimized for frontend consumption
Multilingual Support:
- Full Romanian and English translations
- Consistent messaging across all bookmark interfaces
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Add both chapter-level and verse-level bookmarking capabilities:
Database Changes:
- Add ChapterBookmark table for chapter-level bookmarks
- Update schema with proper relationships to User and BibleBook models
- Maintain existing Bookmark table for verse-level bookmarks
API Endpoints:
- /api/bookmarks/chapter (GET, POST, DELETE) with check endpoint
- /api/bookmarks/verse (GET, POST, DELETE) with check and bulk-check endpoints
- JWT authentication required for all bookmark operations
- Multilingual error messages (Romanian/English)
Frontend Implementation:
- Chapter bookmark button in Bible page header with visual state feedback
- Individual verse bookmark icons with hover-to-reveal UI
- Highlighted background for bookmarked verses
- Efficient bulk checking for verse bookmarks per chapter
- Real-time UI updates without page refresh
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Replace placeholder implementation with proper API integration:
- Create /api/user/profile PUT endpoint with JWT validation
- Update profile page to call actual API instead of setTimeout
- Use refreshUser() to update UI immediately after changes
- Ensure name changes persist to database and across page refreshes
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Implement complete authentication system with JWT token validation
- Add auth provider with persistent login state across page refreshes
- Create multilingual login/register forms with Material-UI components
- Fix token validation using raw SQL queries to bypass Prisma sync issues
- Add comprehensive error handling for expired/invalid tokens
- Create profile and settings pages with full i18n support
- Add proper user role management (admin/user) with database sync
- Implement secure middleware with CSRF protection and auth checks
- Add debug endpoints for troubleshooting authentication issues
- Fix Zustand store persistence for authentication state
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Fix feature cards layout: 2 columns desktop, 1 mobile with consistent sizing
- Add Google Fonts: Merriweather for headings, Lato for body text
- Improve card content structure and spacing
- Center feature cards and stats section for better alignment
- Group all card content (icon, title, description) in single container
- Set fixed card dimensions (400px max width, 280px height)
- Add text overflow handling for descriptions (3 lines max)
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>