- Fixed ElGamal class instantiation in votes.py (ElGamalEncryption instead of ElGamal)
- Fixed public key serialization in admin.py (use public_key_bytes property)
- Implemented database migration with SQL-based key generation
- Added vote deduplication endpoint: GET /api/votes/check
- Protected all array accesses with type validation in frontend
- Fixed vote parameter type handling (string to number conversion)
- Removed all debug console logs for production
- Created missing dynamic route for vote history details
Fixes:
- JavaScript error: "can't access property length, e is undefined"
- Vote deduplication not preventing form display
- Frontend data validation issues
- Missing dynamic routes
Changes:
- Add next-themes dependency for theme management
- Create ThemeProvider wrapper for app root layout
- Set dark mode as default theme
- Create ThemeToggle component with Sun/Moon icons
- Add theme toggle to home page navigation
- Add theme toggle to dashboard header
- App now starts in dark mode with ability to switch to light mode
Styling uses existing Tailwind dark mode variables configured in
tailwind.config.ts and globals.css. All existing components automatically
support dark theme.
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
This commit completes the voting system implementation with:
1. Frontend API Proxy Routes:
- Created 9 Next.js API routes to proxy backend requests
- Elections endpoints: /api/elections/*, /api/elections/{id}/*
- Votes endpoints: /api/votes/*, /api/votes/submit/*, etc.
- Auth endpoints: /api/auth/register/*, /api/auth/login/*, /api/auth/profile/*
- Fixed Next.js 15.5 compatibility with Promise-based params
2. Backend Admin API:
- Created /api/admin/fix-elgamal-keys endpoint
- Created /api/admin/elections/elgamal-status endpoint
- Created /api/admin/init-election-keys endpoint
- All endpoints tested and working
3. Database Schema Fixes:
- Fixed docker/create_active_election.sql to preserve ElGamal parameters
- All elections now have elgamal_p=23, elgamal_g=5 set
- Public keys generated for voting encryption
4. Documentation:
- Added VOTING_SYSTEM_STATUS.md with complete status
- Added FINAL_SETUP_STEPS.md with setup instructions
- Added fix_elgamal_keys.py utility script
System Status:
✅ Backend: All 3 nodes operational with 12 elections
✅ Database: ElGamal parameters initialized
✅ Crypto: Public keys generated for active elections
✅ API: All endpoints verified working
✅ Frontend: Proxy routes created (ready for rebuild)
Next Step: docker compose up -d --build frontend
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
- Updated Dockerfile.frontend to use Next.js instead of React CRA
- Multi-stage build for optimized image size
- Use NEXT_PUBLIC_API_URL instead of REACT_APP_API_URL
- Updated docker-compose.yml to pass correct env variable
- Frontend now starts with 'npm start' instead of serve
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Added HistoriquePage component to display user's voting history with detailed statistics and vote cards.
- Created UpcomingVotesPage component to show upcoming elections with a similar layout.
- Developed CSS styles for both pages to enhance visual appeal and responsiveness.
- Integrated API calls to fetch user's votes and upcoming elections.
- Added a rebuild script for Docker environment setup and data restoration.
- Created a Python script to populate the database with sample data for testing.