- Add reCAPTCHA verification on registration
- Add POST /api/auth/check-email endpoint
- Fix email service lazy loading
- Add FRONTEND_URL and RECAPTCHA keys to env
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add POST /api/auth/check-email endpoint for email validation
- Check if email exists in database
- Validate email domain with MX DNS records
- Fix email service transporter lazy loading
- Add detailed logging for email sending
- Add FRONTEND_URL to .env for email links
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Send welcome email when users register via Google OAuth
- Send welcome email when users register via Facebook OAuth
- Only send email for new user registrations, not existing users
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add welcome email sent on user registration
- Add account deletion confirmation email
- Add draw winner notification email with celebratory design
- Remove email verification requirement on registration
- All emails have HTML templates with responsive design
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Users who deleted their account (is_active=false) should still be
eligible for the grand prize draw if they have validated tickets.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add is_active column migration for users table
- Update user.controller.js to support isActive in profile updates
- Update admin.controller.js to support isActive filtering and updates
- Add migration script for is_active column
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add jest.setup.js with JWT_SECRET for test environment
- Update jest.config.js with setupFiles and increased timeout
- Fix auth middleware to return 401 (not 403) for invalid JWT tokens
- Fix errorHandler to return 'message' instead of 'error' in response
- Fix validate middleware to properly detect Zod errors in ESM
- Remove unused 'pool' import in middleware tests (lint fix)
- Update middleware tests to check next() calls with AppError
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Remove unused variables and imports across codebase
- Use empty catch blocks where error object not needed
- Remove unused fs, path imports from apply-grand-prize-migration.js
- Remove unused OAuth2Client from oauth.controller.js
- Update dependencies to latest patch versions
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Change header background from gold to vibrant orange (#f59e0b → #ea580c)
- Update welcome section to match header colors
- Change footer from dark gray to orange gradient for consistency
- Add logo icon in white circle for professional appearance
- Update game section border to orange
- Change benefit items background to orange tones (#fef3c7 → #fed7aa)
- All sections now use consistent orange/red color palette
Design improvements:
- Cohesive color scheme throughout the email
- Logo icon in white circular background with shadow
- Modern and energetic orange theme matching buttons
- Better visual hierarchy and brand consistency
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Change game button to redirect to /jeux instead of /register
- Improve button colors: orange/red for primary, gold for secondary
- Add hover effects with shadows and transform animations
- Remove unsubscribe section from footer
- Clean up email subject: remove emoji, keep professional format
- Increase button font size and add letter spacing for better readability
Button improvements:
- Primary button (Jouer Maintenant): vibrant orange gradient (#f59e0b → #ea580c)
- Secondary button (Visiter le Site): gold gradient matching brand colors
- Enhanced shadows and hover effects for better interactivity
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Redesign email template with brand colors and modern layout
- Add animated welcome icon and professional styling
- Improve button design with gradient colors matching the site
- Add TLS configuration to fix SSL certificate errors
- Fix email validation regex to be more permissive
- Update email subject to include logo emoji
Design improvements:
- Logo in header with brand colors (#d4a574, #c4956a, #5a5a4e)
- Beautiful rounded buttons for "Jouer Maintenant" and "Visiter le Site"
- Responsive design with proper spacing and shadows
- Benefits section with visual icons
- Professional footer with unsubscribe link
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Update SMTP_PASS with Gmail App Password in all environment files
- Add TLS configuration to ignore self-signed certificate errors
- Fix email sending functionality for contact form
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add SMTP configuration in all .env files
- Create sendContactEmail function in email service
- Add contact controller with form validation
- Create contact API route (POST /api/contact)
- Register contact route in main index.js
- Emails sent to thetiptopgr3@gmail.com🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
- Add newsletter database table migration
- Create newsletter controller with subscribe/unsubscribe endpoints
- Add newsletter routes and validation
- Implement newsletter service with email validation
- Add setup documentation and migration scripts
- Include test page for newsletter functionality
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add updated_at to SELECT query in getProfile
- Add updatedAt to response in getProfile
- Auto-update updated_at timestamp in updateProfile
- Add updated_at to RETURNING clause in updateProfile
- Include isVerified, createdAt, updatedAt in updateProfile response
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Added GET /api/admin/users/:id endpoint to retrieve detailed user
information including contact info, personal data, and ticket statistics.
This enables the admin interface to display comprehensive user details
when clicking the "Détails" button.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Updated the getPendingTickets endpoint to return nested objects for user
and prize data instead of flat SQL columns. Frontend expects structure like
ticket.user.firstName and ticket.prize.name, which now displays correctly
in the employee verification interface instead of showing N/A.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Changed dotenv.config({ override: true }) to { override: false }
This ensures environment variables from docker-compose.yml take precedence
over the embedded .env file, allowing proper DB configuration in containers.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>