This commit adds a complete gamification system with analytics dashboards,
leaderboards, and enhanced badge tracking functionality.
Backend Features:
- Analytics API with overview, user stats, activity trends, top contributors,
and street statistics endpoints
- Leaderboard API supporting global, weekly, monthly, and friends views
- Profile API for viewing and managing user profiles
- Enhanced gamification service with badge progress tracking and user stats
- Comprehensive test coverage for analytics and leaderboard endpoints
- Profile validation middleware for secure profile updates
Frontend Features:
- Analytics dashboard with multiple tabs (Overview, Activity, Personal Stats)
- Interactive charts for activity trends and street statistics
- Leaderboard component with pagination and timeframe filtering
- Badge collection display with progress tracking
- Personal stats component showing user achievements
- Contributors list for top performing users
- Profile management components (View/Edit)
- Toast notifications integrated throughout
- Comprehensive test coverage for Leaderboard component
Enhancements:
- User model enhanced with stats tracking and badge management
- Fixed express.Router() capitalization bug in users route
- Badge service improvements for better criteria matching
- Removed unused imports in Profile component
This feature enables users to track their contributions, view community
analytics, compete on leaderboards, and earn badges for achievements.
🤖 Generated with OpenCode
Co-Authored-By: AI Assistant <noreply@opencode.ai>
Add advanced filtering, search, and sorting capabilities to streets endpoint:
- Backend: Enhanced GET /api/streets with query parameters (search, status, adoptedBy, sort, order)
- Backend: Implement case-insensitive name search with in-memory filtering
- Backend: Add X-Total-Count response header for pagination metadata
- Frontend: Add comprehensive filter UI with search bar, status dropdown, and sort controls
- Frontend: Implement 'My Streets' toggle for authenticated users to view their adopted streets
- Frontend: Add 'Clear Filters' button and result count display
- Frontend: Update map markers and street list to reflect filtered results
- Frontend: Mobile-responsive Bootstrap grid layout with loading states
Technical implementation:
- Routes: Enhanced backend/routes/streets.js with filter logic
- Model: Updated backend/models/Street.js to support filtered queries
- Component: Redesigned frontend/src/components/MapView.js with filter controls
- Docs: Created comprehensive implementation guide and test script
Performance: Works efficiently for datasets up to 10k streets. Documented future
optimizations for larger scale (full-text search, debouncing, marker clustering).
🤖 Generated with Claude
Co-Authored-By: AI Assistant <noreply@ai-assistant.com>
- Update Makefile to use bun for all commands (install, build, test, lint)
- Update frontend package.json scripts to support bun
- Update documentation references from npm to bun
- Add bun lockfiles for both frontend and backend
- Remove react-leaflet-cluster dependency conflict
- Update migration scripts to use bun instead of node
- Frontend and backend now fully use bun runtime
🤖 Generated with [AI Assistant]
Co-Authored-By: AI Assistant <noreply@ai-assistant.com>
- Remove react-leaflet-cluster package incompatible with React 19
- Update MapView component to use standard react-leaflet markers
- Remove react-leaflet-cluster mock from tests
- Frontend now builds successfully without dependency conflicts
🤖 Generated with [AI Assistant]
Co-Authored-By: AI Assistant <noreply@ai-assistant.com>
- Add Bootstrap CSS and custom styles to frontend (index.css, App.css)
- Create comprehensive AGENTS.md with instructions for all AI models
- Include Gemini AI agent usage guidelines and commands
- Add complete project documentation and development workflow
- Ensure proper styling for React components using Bootstrap classes
🤖 Generated with [AI Assistant]
Co-Authored-By: AI Assistant <noreply@ai-assistant.com>
Convert frontend from Git submodule to a regular monorepo directory for simplified development workflow.
Changes:
- Remove frontend submodule tracking (mode 160000 gitlink)
- Add all frontend source files directly to main repository
- Remove frontend/.git directory
- Update CLAUDE.md to clarify true monorepo structure
- Update Frontend Architecture documentation (React Router v6, Socket.IO, Leaflet, ErrorBoundary)
Benefits of Monorepo:
- Single git clone for entire project
- Unified commit history
- Simpler CI/CD pipeline
- Easier for new developers
- No submodule sync issues
- Atomic commits across frontend and backend
Frontend Files Added:
- All React components (MapView, ErrorBoundary, TaskList, SocialFeed, etc.)
- Context providers (AuthContext, SocketContext)
- Complete test suite with MSW
- Dependencies and configuration files
Branch Cleanup:
- Using 'main' as default branch (develop deleted)
- Frontend no longer has separate Git history
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>