Commit Graph

20 Commits

Author SHA1 Message Date
William Valentin
b8ea8fd17d docs: complete migration from npm to bun in documentation
Updated all remaining documentation files to reference bun commands instead of npm:
- IMPLEMENTATION_COMPLETE.md
- frontend/README.md

This completes the npm to bun migration for all project documentation.

🤖 Generated with [AI Assistant]

Co-Authored-By: AI Assistant <noreply@ai-assistant.com>
2025-11-01 12:45:05 -07:00
William Valentin
37b22039a7 docs: update npm commands to bun in README and documentation files
- Replace npm install with bun install
- Replace npm start/test/build with bun equivalents
- Update deployment and testing documentation
- Maintain consistency with project's bun-first approach

🤖 Generated with [AI Assistant]

Co-Authored-By: AI Assistant <noreply@ai-assistant.com>
2025-11-01 12:41:59 -07:00
William Valentin
c5dbe57d74 docs: replace npm commands with bun in AGENTS.md
Updated all npm command references to use bun for better performance and consistency with the frontend's existing bun.lock file. This includes test commands, build commands, and linter commands.

🤖 Generated with AI Assistant

Co-Authored-By: AI Assistant <noreply@ai-assistant.com>
2025-11-01 12:37:56 -07:00
William Valentin
199727c2a6 feat: add comprehensive Makefile for development workflow
- Add Makefile with commands for building, testing, and running both frontend and backend
- Include development, production, testing, and code quality targets
- Add Docker support and environment setup commands
- Provide quick-start command for new developers
- Include comprehensive help documentation for all available commands

🤖 Generated with [AI Assistant]

Co-Authored-By: AI Assistant <noreply@ai-assistant.com>
2025-11-01 12:29:18 -07:00
William Valentin
f8f1d51154 feat: add comprehensive styling and AI agent guidelines
- 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>
2025-11-01 11:44:41 -07:00
William Valentin
280f1a2c5e docs: add mandatory git commit workflow to development guidelines
Update CLAUDE.md to establish clear git workflow requirements:

Workflow Requirements:
- Commit to git after EVERY feature, fix, or update
- Build and test changes before committing
- Use conventional commit message format (feat, fix, docs, test, refactor, chore, perf)
- Create commits for each logical unit of work
- Push regularly to origin/main

Benefits:
- Clear history of all changes
- Easy rollback capabilities
- Better collaboration and code review
- Deployment tracking
- Automatic CI/CD pipeline triggers

Commit Message Template:
- Prefix: feat/fix/docs/test/refactor/chore/perf
- Description: Clear, concise summary
- Body: Detailed explanation of changes
- Footer: Claude Code attribution

This ensures the codebase maintains a clean, traceable history and enables better DevOps practices.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-01 11:12:47 -07:00
William Valentin
ae791ae8b1 feat: add complete Kubernetes deployment infrastructure
Add production-ready deployment configuration for Raspberry Pi cluster with comprehensive documentation and automation scripts.

Kubernetes Manifests (deploy/k8s/):
- namespace.yaml - Dedicated namespace for the application
- configmap.yaml - Environment configuration (MongoDB URI, ports, URLs)
- secrets.yaml.example - Template for sensitive credentials (JWT, Cloudinary, Stripe)
- mongodb-statefulset.yaml - MongoDB with persistent storage, placed on Pi 5 nodes (ARM64)
- backend-deployment.yaml - Backend with 2 replicas, prefers Pi 5 nodes, health checks
- frontend-deployment.yaml - Frontend with 2 replicas, can run on any node, nginx-based
- ingress.yaml - Traefik/NGINX ingress for API, Socket.IO, and frontend routing

Docker Configuration:
- backend/Dockerfile - Multi-stage build for ARM64/ARMv7 with health checks
- backend/.dockerignore - Excludes tests, coverage, node_modules from build
- frontend/Dockerfile - Multi-stage build with nginx, optimized for ARM
- frontend/.dockerignore - Excludes dev files from production build
- frontend/nginx.conf - Production nginx config with gzip, caching, React Router support

Resource Optimization for Pi Cluster:
- MongoDB: 512Mi-2Gi RAM, 250m-1000m CPU (Pi 5 only, ARM64 affinity)
- Backend: 256Mi-512Mi RAM, 100m-500m CPU (prefers Pi 5, ARM64)
- Frontend: 64Mi-128Mi RAM, 50m-200m CPU (any node, lightweight)
- Total: ~3.5GB RAM minimum, perfect for 2x Pi 5 (8GB) + 1x Pi 3B+ (1GB)

Automation Scripts (deploy/scripts/):
- build.sh - Build multi-arch images (ARM64/ARMv7) and push to registry
- deploy.sh - Deploy all Kubernetes resources with health checks and status reporting
- Both scripts include error handling, color output, and comprehensive logging

Documentation (deploy/README.md):
- Complete deployment guide with prerequisites
- Step-by-step instructions for building and deploying
- Verification commands and troubleshooting guide
- Scaling, updating, and rollback procedures
- Resource monitoring and cleanup instructions
- Security best practices and performance optimization tips

Health Endpoints:
- Backend: GET /api/health (status, uptime, MongoDB connection)
- Frontend: GET /health (nginx health check)
- Used by Kubernetes liveness and readiness probes

Key Features:
- Multi-architecture support (ARM64 for Pi 5, ARMv7 for Pi 3B+)
- NodeAffinity places heavy workloads (MongoDB, backend) on Pi 5 nodes
- Persistent storage for MongoDB (10Gi PVC)
- Horizontal pod autoscaling ready
- Zero-downtime deployments with rolling updates
- Comprehensive health monitoring
- Production-grade nginx with security headers
- Ingress routing for API, WebSocket, and static assets

Security:
- Secrets management with Kubernetes Secrets
- secrets.yaml excluded from Git (.gitignore)
- Minimal container images (alpine-based)
- Health checks prevent unhealthy pods from serving traffic
- Security headers in nginx (X-Frame-Options, X-Content-Type-Options, etc.)

Usage:
1. Build images: ./deploy/scripts/build.sh
2. Configure secrets: cp deploy/k8s/secrets.yaml.example deploy/k8s/secrets.yaml
3. Deploy: ./deploy/scripts/deploy.sh
4. Monitor: kubectl get all -n adopt-a-street

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-01 11:08:19 -07:00
William Valentin
2df5a303ed refactor: convert frontend from submodule to true monorepo
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>
2025-11-01 11:01:06 -07:00
William Valentin
223dbb14b7 chore(backend): add coverage directory to gitignore
Ignore Jest coverage reports from version control

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-01 10:45:09 -07:00
William Valentin
4b370c87de chore: update AGENTS.md and frontend submodule reference
Update project metadata and frontend submodule pointer:

AGENTS.md:
- Document agent deployment and workstreams
- Record specialized agents used (backend-architect, javascript-pro, test-automator)
- Track implementation completion status

Frontend Submodule:
- Update submodule reference to latest commit
- Includes all frontend features: MapView, Socket.IO, ErrorBoundary
- Includes comprehensive error handling across all components
- Includes React Router v6 migration
- Includes complete testing infrastructure with MSW

Changes in Frontend (see frontend submodule commits):
- feat: MapView with Leaflet, Socket.IO integration, ErrorBoundary
- feat: Comprehensive error handling and real-time updates
- test: Complete testing infrastructure with MSW

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-01 10:44:51 -07:00
William Valentin
2f1d10e2ea docs: add comprehensive implementation and deployment documentation
Add complete implementation summary and Kubernetes deployment guides:

IMPLEMENTATION_COMPLETE.md (1,000+ lines):
- Complete feature implementation summary
- Backend security details (7 major features)
- Gamification system documentation (points, badges)
- Comments system implementation
- Pagination implementation
- Image upload system (Multer, Cloudinary)
- Frontend features (MapView, Socket.IO, ErrorBoundary)
- Testing infrastructure summary (54.75% backend coverage)
- Full API endpoint documentation
- Socket.IO events reference
- Environment variables guide
- Kubernetes deployment for Raspberry Pi cluster (600+ lines):
  * Multi-arch Docker images (ARM64, ARMv7)
  * Complete Dockerfiles for backend and frontend
  * Nginx configuration with React Router support
  * 7 Kubernetes manifests (namespace, configmap, secrets, MongoDB StatefulSet, backend/frontend deployments, ingress)
  * Resource optimization for Pi hardware (2x Pi 5 8GB, 1x Pi 3B+ 1GB)
  * NodeAffinity for strategic pod placement
  * Health checks and liveness/readiness probes
  * Deployment commands and verification steps
  * Monitoring and troubleshooting guide
  * Scaling and rolling update procedures
- Statistics: 15,000+ lines of code, 76 issues resolved
- Next steps and optional enhancements
- OWASP Top 10 compliance checklist

SECURITY_AUDIT_REPORT.md:
- Comprehensive security audit findings
- OWASP Top 10 assessment
- Critical vulnerabilities addressed
- Security best practices implemented
- Compliance checklist

IMPLEMENTATION_SUMMARY.md:
- High-level implementation overview
- Agent workstream summaries
- Key achievements and metrics

backend/IMPLEMENTATION_SUMMARY.md:
- Backend-specific implementation details
- Security features documentation
- Gamification system architecture
- API documentation

Kubernetes Deployment Features:
- Multi-stage Docker builds for minimal image size
- ARM64 and ARMv7 support for Raspberry Pi cluster
- Resource limits optimized for Pi hardware
- MongoDB StatefulSet with persistent storage on Pi 5 nodes
- Backend prefers Pi 5 nodes (more RAM for Node.js)
- Frontend can run on any node (lightweight static serving)
- Complete ingress configuration for single entry point
- Health endpoints for monitoring
- Step-by-step deployment guide
- Monitoring and troubleshooting commands

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-01 10:44:40 -07:00
William Valentin
2d1d02387d docs: add comprehensive testing documentation
Add detailed testing guides and implementation documentation:

TESTING.md (560 lines):
- Complete testing guide for developers
- Backend testing with Jest, Supertest, MongoDB Memory Server
- Frontend testing with React Testing Library, MSW
- Test writing examples and patterns
- Coverage requirements and reporting
- CI/CD integration guidelines
- Best practices and conventions

TESTING_QUICK_START.md (250 lines):
- Quick reference for running tests
- Common test commands (backend and frontend)
- Test file locations and organization
- Coverage report viewing
- Troubleshooting common issues
- Quick examples for common scenarios

TEST_IMPLEMENTATION_SUMMARY.md (750 lines):
- Detailed implementation report
- Coverage statistics by area
- Test file descriptions
- Known issues and future improvements
- Architecture decisions
- Test infrastructure details
- MSW handler documentation

CLAUDE.md Updates:
- Add testing section with quick commands
- Document test coverage targets
- Reference comprehensive testing docs
- Add Kubernetes deployment section for Raspberry Pi cluster
- Document cluster configuration (2x Pi 5 8GB, 1x Pi 3B+ 1GB)
- ARM64 and ARMv7 architecture considerations
- Resource optimization strategies

Key Documentation Features:
- Step-by-step guides for writing tests
- Examples for all test types (unit, integration, E2E)
- Coverage reporting and analysis
- Debugging test failures
- Performance testing guidelines
- Mock data management

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-01 10:44:21 -07:00
William Valentin
17e5c90a90 test(backend): add comprehensive testing infrastructure
Implement complete backend testing infrastructure with Jest and Supertest:

Test Setup:
- Configure Jest for Node.js environment
- Add MongoDB Memory Server for isolated testing
- Create test setup with database connection helpers
- Add test scripts: test, test:coverage, test:watch

Test Files (176 total tests, 109 passing):
- Middleware tests: auth.test.js (100% coverage)
- Model tests: User, Street, Task, Post (82.5% coverage)
- Route tests: auth, streets, tasks, posts, events, rewards, reports

Test Coverage:
- Overall: 54.75% (on track for 70% target)
- Models: 82.5%
- Middleware: 100%
- Routes: 45.84%

Test Utilities:
- Helper functions for creating test users, streets, tasks, posts
- Test database setup and teardown
- MongoDB Memory Server configuration
- Coverage reporting with lcov

Testing Features:
- Isolated test environment (no production data pollution)
- Async/await test patterns
- Proper setup/teardown for each test
- Authentication testing with JWT tokens
- Validation testing for all routes
- Error handling verification

Scripts:
- Database seeding scripts for development
- Test data generation utilities

Dependencies:
- jest@29.7.0
- supertest@7.0.0
- mongodb-memory-server@10.1.2

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-01 10:43:20 -07:00
William Valentin
7c70a8d098 feat(backend): implement comments, image uploads, and data consistency
Implement additional backend features and improve data models:

Comments System:
- Create Comment model with user and post relationships
- Add comments routes: GET /api/posts/:postId/comments (paginated), POST (create), DELETE (own comments)
- Update Post model with commentsCount field
- Emit Socket.IO events for newComment and commentDeleted
- Pagination support for comment lists
- Authorization checks (users can only delete own comments)
- 500 character limit on comments

Image Upload System:
- Implement Cloudinary configuration (config/cloudinary.js)
- Add uploadImage() and deleteImage() helper functions
- Image optimization: max 1000x1000, auto quality, auto format (WebP)
- Integrate image upload in users routes (profile pictures)
- Integrate image upload in posts routes (post images with add/update endpoints)
- File validation: 5MB limit, JPG/PNG/GIF/WebP only
- Automatic image deletion when removing posts/reports

Data Consistency Improvements:
- Add cascade deletes in Street model (remove from user, delete associated tasks)
- Add cascade deletes in Task model (remove from user completedTasks)
- Add cascade deletes in Post model (remove from user posts)
- Update user relationships on save (adoptedStreets, completedTasks, posts, events)
- Add proper indexes for performance (2dsphere for location, compound indexes)
- Add virtual relationships and toJSON configurations

Model Updates:
- Street: Add cascade hooks, location 2dsphere index
- Task: Add cascade hooks, compound indexes for queries
- Post: Add imageUrl, cloudinaryPublicId, commentsCount fields
- Event: Add participants tracking
- Report: Add image upload support
- User: Add earnedBadges virtual, profilePicture, cloudinaryPublicId

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-01 10:43:08 -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
b3dc608750 feat(backend): implement comprehensive security and validation
Implement enterprise-grade security measures and input validation:

Security Features:
- Add Helmet.js for security headers (XSS, clickjacking, MIME protection)
- Implement rate limiting (5/15min for auth, 100/15min for API)
- Add Socket.IO JWT authentication middleware
- Fix JWT auth middleware (remove throw in catch, extend token to 7 days)
- Implement centralized error handling with AppError class
- Add CORS restrictive configuration

Input Validation:
- Add express-validator to all routes (auth, streets, tasks, posts, events, rewards, reports, users)
- Create comprehensive validation schemas in middleware/validators/
- Consistent error response format for validation failures

Additional Features:
- Add pagination middleware for all list endpoints
- Add Multer file upload middleware (5MB limit, image validation)
- Update .env.example with all required environment variables

Dependencies Added:
- helmet@8.1.0
- express-rate-limit@8.2.1
- express-validator@7.3.0
- multer@1.4.5-lts.1
- cloudinary@2.8.0

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-01 10:42:19 -07:00
William Valentin
8002406120 feat(frontend): update frontend submodule 2025-10-30 01:39:30 -07:00
William Valentin
e9a83d9ab7 refactor(backend): remove unused err variable in auth middleware 2025-10-30 01:38:51 -07:00
William Valentin
d75fa95371 feat: Add frontend submodule 2025-10-29 13:12:39 -07:00
William Valentin
999d37babb feat: Initial commit of backend services and AGENTS.md 2025-10-29 13:12:30 -07:00