Commit Graph

5 Commits

Author SHA1 Message Date
William Valentin
bb9c8ec1c3 feat: Migrate from Socket.IO to Server-Sent Events (SSE)
- Replace Socket.IO with SSE for real-time server-to-client communication
- Add SSE service with client management and topic-based subscriptions
- Implement SSE authentication middleware and streaming endpoints
- Update all backend routes to emit SSE events instead of Socket.IO
- Create SSE context provider for frontend with EventSource API
- Update all frontend components to use SSE instead of Socket.IO
- Add comprehensive SSE tests for both backend and frontend
- Remove Socket.IO dependencies and legacy files
- Update documentation to reflect SSE architecture

Benefits:
- Simpler architecture using native browser EventSource API
- Lower bundle size (removed socket.io-client dependency)
- Better compatibility with reverse proxies and load balancers
- Reduced resource usage for Raspberry Pi deployment
- Standard HTTP-based real-time communication

🤖 Generated with [AI Assistant]

Co-Authored-By: AI Assistant <noreply@ai-assistant.com>
2025-12-05 22:49:22 -08:00
William Valentin
4337934349 feat: complete CouchDB test infrastructure migration for routes
- Fixed posts.test.js: Updated Post.create mock to return proper user object structure with userId field
- Fixed tasks.test.js: Updated Task.find mock to support method chaining (.sort().skip().limit())
- Fixed testHelpers.js: Updated ID generation to use valid MongoDB ObjectId format
- Fixed routes/tasks.js: Corrected Street model require path from './Street' to '../models/Street'
- Enhanced jest.setup.js: Added comprehensive CouchDB service mocks for all models

All 11 route test suites now pass with 140/140 tests passing:
 auth.test.js (9/9)
 events.test.js (10/10)
 posts.test.js (12/12)
 reports.test.js (11/11)
 rewards.test.js (11/11)
 streets.test.js (11/11)
 tasks.test.js (11/11)
 middleware/auth.test.js (4/4)
 models/User.test.js (13/13)
 models/Task.test.js (15/15)
 models/Street.test.js (12/12)

This completes the migration of route test infrastructure from MongoDB to CouchDB mocking.

🤖 Generated with [AI Assistant]

Co-Authored-By: AI Assistant <noreply@ai-assistant.com>
2025-11-02 23:23:01 -08:00
William Valentin
7c7bc954ef feat: Migrate Street and Task models from MongoDB to CouchDB
- Replace Street model with CouchDB-based implementation
- Replace Task model with CouchDB-based implementation
- Update routes to use new model interfaces
- Handle geospatial queries with CouchDB design documents
- Maintain adoption functionality and middleware
- Use denormalized document structure with embedded data
- Update test files to work with new models
- Ensure API compatibility while using CouchDB underneath

🤖 Generated with [AI Assistant]

Co-Authored-By: AI Assistant <noreply@ai-assistant.com>
2025-11-01 13:12:34 -07:00
William Valentin
e7396c10d6 feat(backend): implement complete gamification system
Implement comprehensive points and badges system with MongoDB transactions:

Point System:
- Create PointTransaction model for transaction history
- Award points atomically using MongoDB transactions
- Point values: street adoption (+100), task completion (+50), post creation (+10), event participation (+75)
- Track balance after each transaction
- Support point deduction for reward redemption

Badge System:
- Create Badge and UserBadge models
- Define badge criteria types: street_adoptions, task_completions, post_creations, event_participations, points_earned
- Auto-award badges based on user achievements
- Badge rarity levels: common, rare, epic, legendary
- Track badge progress for users
- Prevent duplicate badge awards

Gamification Service:
- Implement gamificationService.js with 390 lines of logic
- awardPoints() with transaction support
- checkAndAwardBadges() for auto-awarding
- getUserBadgeProgress() for progress tracking
- getUserStats() for achievement statistics
- Atomic operations prevent double-awarding

Integration:
- Streets route: Award points and badges on adoption
- Tasks route: Award points and badges on completion
- Posts route: Award points and badges on creation
- Events route: Award points and badges on RSVP
- Rewards route: Deduct points on redemption
- Badges API: List badges, track progress, view earned badges

Updated User Model:
- Add points field (default 0)
- Add earnedBadges virtual relationship
- Add indexes for performance (points for leaderboards)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-01 10:42:51 -07:00
William Valentin
999d37babb feat: Initial commit of backend services and AGENTS.md 2025-10-29 13:12:30 -07:00