- Add dropdown menu with user avatar, name, and email in admin header
- Add dropdown menu with user avatar, name, and email in employee header
- Create admin profile page at /admin/profil
- Create employee profile page at /employe/profil
- Remove Profil link from admin sidebar (now in dropdown)
- Fix header public display: hide for admin/employee on all pages
- Use router.replace() instead of router.push() for login redirects to avoid history pollution
- Simplify employe dashboard page: remove redundant auth checks handled by layout
- Add click-outside-to-close functionality for dropdown menus
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Update Facebook link to official page (id: 61584261567579)
- Update Instagram link to @thetiptopgr3
- Update footer email to thetiptopgr3@gmail.com
- Keep existing Pinterest link
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
- Connect contact form to backend API endpoint
- Add email thetiptopgr3@gmail.com to contact and about pages
- Replace about page gradient with actual image
- Change Thé bio icon from emoji to Leaf component
- Remove dates from game period sections
- Add proper error handling for contact form
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
- Remove build error tolerance that was hiding failures
- Add explicit check that .next directory exists after build
- Force build to fail if .next is not created
This ensures the Docker image always contains a valid Next.js build.
- Update prize titles to include prices (39€, 69€) on lots page
- Replace emoji icons with actual product images on homepage
- Add Grand Prize (1 an de thé) to homepage prize grid
- Standardize image padding and alignment across all prize cards
- Ensure all prize cards have equal heights for better visual alignment
- Update AboutContest component to use real image (acceuil.png)
- Add official Pinterest link to footer
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Design Updates:
- Apply consistent golden/beige color scheme to all pages
- Update client dashboard, contact, FAQ, history, game, lots, profile, rules, terms, and privacy pages
- Replace green/orange colors with golden palette (#d4a574, #c4956a)
- Add golden gradient backgrounds and borders throughout
Header Improvements:
- Fix button layout to maintain proper form when page is zoomed
- Remove hover:scale-105 effects that caused deformation
- Add whitespace-nowrap to prevent text wrapping
- Add flex-shrink-0 to prevent element shrinking
- Add gap-4 to main header container for proper spacing
- Fix user info card with text ellipsis for long names/emails
- Improve spacing between "Participer" button and user card
Profile Page Updates:
- Remove "Dernière modification" field
- Update all colors to golden theme
API Endpoints:
- Fix user profile endpoint from /user/profile to /users/profile
Statistics Icons:
- Update dashboard statistics icons with distinct colors
- Total Participations: blue
- Gains réclamés: green
- En attente: yellow
- Rejetés: red
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Remove SonarQube Analysis stage
- Remove Quality Gate stage
- Keep configuration files for future use (sonar-project.properties, .sonarignore)
The SonarQube integration requires additional Jenkins plugin configuration.
Configuration files are preserved for when the plugin is properly set up.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add SonarQube configuration for code quality analysis
- sonar-project.properties with TypeScript/Next.js settings
- .sonarignore to exclude build artifacts and dependencies
- npm run sonar script
- Jenkins pipeline stages for SonarQube analysis and quality gate
- Implement cookie consent banner
- New CookieConsent component with matching site colors
- localStorage persistence for user choice
- Accept/Reject buttons with proper styling
- Link to cookies policy page
- Add strict authentication protection for game page
- Redirect unauthenticated users to login from /jeux
- Clean up redundant auth checks and UI elements
- Preserve redirect parameter for post-login navigation
- Implement smart navigation with auth-aware redirects
- "Jouer maintenant" button redirects based on auth status
- "Participer au jeu" footer link with conditional routing
- Authenticated users go to /jeux, others to /register
- UI improvements and cleanup
- Remove "Voir les lots" button from homepage
- Remove "Gestion des cookies" from footer
- Remove "À propos" from footer navigation
- Consistent design across components
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add animated tea icon backgrounds to login and register pages (35 icons)
- Update color scheme from green to golden/beige theme matching header
- Change header navigation text from "Loto à gagner" to "Lots à gagner"
- Update form placeholders to lowercase French (prénom, nom, email, etc.)
- Standardize Facebook login button style to match Google button
- Update all focus rings and button colors to #d4a574 (golden) theme
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Add animation restart mechanism using React key prop to ensure tea icons
always begin their falling animation from the top of the viewport when
the page is refreshed, providing a consistent user experience.
Changes:
- Add useState and useEffect to manage animation restart
- Set unique key based on timestamp on component mount
- Icons container remounts on each page load, resetting CSS animations
- All 35 tea icons now restart their descent from -100vh on refresh
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Add animated tea icons background with 35 falling icons, update styling to match theme, and streamline branding across header and footer.
Changes:
- Add 35 animated tea icons with falling animation (no rotation)
- Create fallDown animation with gentle horizontal oscillation
- Add new homepage components (CountdownTimer, GamePeriod, GrandPrize, AboutContest)
- Include tea icon images (teapot-green, tea-cup, gift-box, tea-leaves, teapot-pink)
- Remove "Thé Tip Top" text branding from header and footer (keep logo only)
- Add Pinterest social media icon to footer
- Update button color scheme to match golden/beige theme (#d4a574, #c4956a)
- Increase icon opacity to 50% for better visibility
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Moved "Site étudiant" to the same line as the copyright text instead of
being on a separate line. Both are now displayed inline for a more compact
footer design.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Removed the trust/marketing badges (paiement sécurisé, livraison rapide,
certifié RGPD) from the footer and replaced them with a simple "Site étudiant"
notice centered below the copyright. This makes it clear the site is for
educational purposes.
Changes:
- Removed 🔒 Paiement sécurisé badge
- Removed 📦 Livraison rapide badge
- Removed ✓ Certifié RGPD badge
- Added "Site étudiant" notice centered in footer
- Simplified footer layout to center-aligned
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Completely removed the /gagnants page and its navigation link from the
header menu. This simplifies the application structure by removing the
winners showcase functionality.
Changes:
- Deleted app/gagnants/page.tsx and entire directory
- Removed "Gagnants" link from Header navigation
- Build verified successfully without the page
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Removed the detailed winners list table showing individual winners with
dates, names, prizes, and boutiques. The page now only displays:
- Summary statistics (total winners, active days, cities)
- Winner testimonials
- Call-to-action section
This simplifies the page while maintaining social proof through
testimonials and statistics.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Enhanced error handling for Facebook Login to provide clearer messages when
the service is unavailable. Added comprehensive setup documentation for
configuring Facebook OAuth properly.
Changes:
- Improved error messages in Facebook SDK for unavailable service
- Updated login page to display specific error messages to users
- Added FACEBOOK_LOGIN_SETUP.md with step-by-step configuration guide
- Documented alternatives (email/Google login) while Facebook is being configured
This addresses the "Fonctionnalité indisponible" error users are seeing
when attempting to use Facebook Login.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Added optional ticketsCount, pendingTickets, and claimedTickets properties
to User interface to fix TypeScript build error in user details page. These
properties are populated by the getUserById API endpoint.
Fixes: TypeScript compilation error preventing deployment
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Created comprehensive user details page at /admin/utilisateurs/[id] that
displays contact information, personal data, account status, and ticket
statistics. Added getUserById method to admin service to fetch detailed
user information from the backend API. Fixes the "Détails" button that
was previously navigating to a non-existent page.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Update button color from orange to green (#1a4d2e)
- Add hover effect to darker green (#2d5a3d)
- 'Participer maintenant' stays orange for CTA emphasis
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Remove prize value display in client page tickets table
- Keep only prize name for consistency with history page
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Update about, contact, FAQ, forgot-password, lots, register, rules pages
- Apply consistent styling with bg-gray-50 and modern cards
- Update footer and layout with new design
- Add gagnants (winners) page
All pages now have consistent modern design matching homepage and dashboard
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add --no-cache flag to Docker build to force complete rebuild
- Clean .next and node_modules cache before each build
- Generate unique build ID with timestamp for each deployment
- Configure onDemandEntries to reduce cache duration
This ensures deployed site always matches localhost by preventing:
- Docker layer caching
- Next.js build cache
- Browser cache of stale assets
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Change "Voir les lots" button to orange to match "Participer maintenant"
- Add horizontal padding for balanced spacing
- Make buttons responsive (full width on mobile, auto on desktop)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Fix TypeScript error where prize.value (string) was compared with number
- Use Number() conversion before comparison
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Update client dashboard with modern cards, SVG statistics icons, and prize icons
- Add roulette animation with colored prize icons during ticket draw
- Redesign history page with 4 statistics cards and SVG icons
- Add "Rejetés" filter button in history page
- Update profile page with modern card styling
- Redesign header with clickable user name/email button
- Add Facebook login button with green border styling
- Update game page with roulette animation and prize display
- Add prize values to constants (15€, 25€, 39€, 69€)
- Replace all emoji icons with professional SVG icons
- Apply consistent color scheme: green (#1a4d2e, #2d5a3d) and orange (#f59e0b)
- Improve button styles and hover effects across all pages
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Removed white space between header and hero section (-mt-[4.5rem])
- Removed side margins on hero section (w-full px-0)
- Removed side margins on stats section (w-full px-0)
- Removed bottom padding on stats section (pb-0)
- Hero and stats sections now extend to full screen width
- No gap between stats section and footer
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Removed "Prêt à tenter votre chance?" final CTA section from homepage
- Added "Thé Tip Top" title in orange/gold to footer
- Updated footer description text
- Logo already present in header and footer
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Updated Header:
- Dark green gradient background (#1a4d2e to #2d5a3d)
- White text with orange hover (#f59e0b)
- Orange "Participer" button instead of green
- Updated menu labels to match homepage design
Updated Footer:
- Dark green gradient background matching header
- Orange section titles (#f59e0b)
- Added trust badges (Paiement sécurisé, Livraison rapide, RGPD)
- Consistent branding with homepage
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Created brand new homepage matching design requirements:
- Hero section with dark green gradient background (#1a4d2e)
- "Un code, un gain garanti!" main title with orange accent
- Trust badges (100% sécurisé, 100% gagnants, 500 000 codes)
- 3-step participation process with yellow/gold icons
- 5 prize cards with percentages and modern design
- Stats section with key metrics (100%, 500k, 10, 360€)
- Final CTA section with registration buttons
- Consistent green (#1a4d2e) and orange/gold (#f59e0b) color scheme
- Professional shadows, gradients, and hover effects
- Fully responsive layout
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Match homepage design with professional green gradient background:
- Dark green gradient (from-[#1a4d2e] via-[#2d5a3d] to-[#1a4d2e])
- Clean white card with strong shadow (shadow-2xl)
- Brand green color for titles (#1a4d2e)
- Full screen height for better visual impact
- Consistent with homepage branding
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Updated login and register pages with homepage branding:
- Dark green gradient background (from-[#1a3d2e] to-[#2d5a45])
- Semi-transparent white card (bg-white/95 backdrop-blur-sm)
- Enhanced shadow for depth (shadow-2xl)
- Brand color for titles (#1a3d2e)
- Consistent with homepage visual identity
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Added logo display at the top of both login and register forms
- Added Next.js Image component for optimized logo rendering
- Logo size: 120x120px, centered above page title
- Fixed Card padding consistency on register page (added p-8)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>