diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md index 745cdd0..790782a 100644 --- a/docs/ROADMAP.md +++ b/docs/ROADMAP.md @@ -1,73 +1,241 @@ # Elmeg Platform Roadmap -**Last Updated:** 2025-12-27 +**Last Updated:** 2025-12-27 +**Status:** Production Ready ✅ --- -## All Major Features Complete +## Current State Summary -### ✅ Core Platform - -- Email verification & password reset (Postal) -- Performance rankings (#X of Y) with heady badges -- Theme persistence (syncs with user preferences) -- Reviews with avatar, username, date, granular scores -- Activity feed with living links - -### ✅ User Settings - -- Privacy toggles (profile, attendance, leaderboards) -- Notification preference toggles -- Avatar XP unlock system -- GDPR data export -- Account deletion - -### ✅ Rating System - -- User's existing rating shown on load -- Combined Rating + Review scores -- Heady badge for #1 ranked versions with avg >= 8.0 - -### ✅ Email Notifications - -- Reply notifications (when someone replies to your comment) -- Mention notifications (when you're @mentioned) -- Chase song alerts (when a song you're chasing is played) -- Weekly digest emails (community highlights + user activity) -- Admin API to trigger digest: `POST /api/admin/send-weekly-digest` -- Admin API to test email: `POST /api/admin/test-email` +Elmeg is a fully functional platform for the Goose fan community to track shows, rate performances, write reviews, and engage with other fans. All core features are implemented and deployed. --- -## Recent Completions (Dec 27, 2025) +## ✅ Completed Features -| Feature | Status | -|---------|--------| -| GDPR Data Export | ✅ /users/me/export endpoint | -| Account Deletion | ✅ /users/me DELETE endpoint | -| bugs.elmeg.xyz | ✅ Redirects to /bugs | -| Email Reply/Mention Triggers | ✅ Sends when comments created | -| Chase Song Notifications | ✅ Hooks into performance import | -| Weekly Digest Service | ✅ services/weekly_digest.py | -| Admin Email Endpoints | ✅ Send digest + test email | +### Core Platform + +| Feature | Description | +|---------|-------------| +| Show Database | Complete show history with venues, tours, setlists | +| Performance Tracking | Individual song performances linked to shows | +| Song Library | All songs with original artist info, cover tracking | +| Venue Database | All venues with location data | +| Tour Management | Tours with date ranges | + +### User System + +| Feature | Description | +|---------|-------------| +| Registration | Email/password with verification | +| Password Reset | Secure token-based reset via email | +| Profile | Username, display name, bio, avatar customization | +| Privacy Controls | Public/private profile, leaderboard opt-out | +| Theme Persistence | Light/dark mode synced to account | +| GDPR Data Export | Download all personal data as JSON | +| Account Deletion | Full data removal with email confirmation | + +### Social Features + +| Feature | Description | +|---------|-------------| +| Reviews | Blurb + full content + score for any entity | +| Ratings | Granular scores for performances, shows, songs | +| Comments | Threaded comments with @mentions | +| Reactions | Like/love reactions on reviews/comments | +| Activity Feed | "Living links" to reviewed content | +| Groups | Create/join fan groups | +| Chase Songs | Track songs you want to hear live | +| Attendance | Mark shows you've attended | + +### Gamification + +| Feature | Description | +|---------|-------------| +| XP System | Earn XP for activities | +| Levels | Level up based on XP | +| Badges | Unlock achievements | +| Leaderboards | Community rankings | +| Avatar Unlocks | XP-gated avatar customization | + +### Rankings & Discovery + +| Feature | Description | +|---------|-------------| +| Performance Rankings | #X of Y versions, average ratings | +| Heady Badges | Top-rated versions highlighted | +| Search | Full-text search across all entities | +| Videos Page | YouTube links for performances | + +### Email Notifications + +| Feature | Description | +|---------|-------------| +| Verification | Account email verification | +| Password Reset | Secure reset emails | +| Reply Alerts | Email when someone replies to your comment | +| Mention Alerts | Email when you're @mentioned | +| Chase Alerts | Email when a chased song is played | +| Weekly Digest | Activity summary + community highlights | + +### Admin Tools + +| Feature | Description | +|---------|-------------| +| User Management | View/edit users, roles, verification | +| Content CRUD | Shows, songs, venues, tours, performances | +| Platform Stats | Dashboard with key metrics | +| Email Testing | `POST /api/admin/test-email` | +| Digest Trigger | `POST /api/admin/send-weekly-digest` | +| Link Import | Bulk import external links | --- -## Deployment Info +## 🔄 Future Enhancements -- **Production:** -- **Analytics:** -- **Bug Tracker:** -- **Server:** tangible-aacorn (Hetzner ARM64) -- **Git:** +### Priority: High + +| Feature | Description | Complexity | +|---------|-------------|------------| +| Automated Weekly Digest | Add cron job to server to auto-send Sundays 9am UTC | Low | +| Error Tracking | Integrate Sentry for backend error monitoring | Medium | +| Uptime Monitoring | Set up UptimeRobot or similar | Low | + +### Priority: Medium + +| Feature | Description | Complexity | +|---------|-------------|------------| +| One-Click Unsubscribe | Add token-based unsubscribe links in emails | Medium | +| Email Templates | Move to proper template engine (Jinja2) | Medium | +| Rate Limiting | Add request rate limiting to protect API | Medium | +| API Caching | Redis cache for frequently accessed data | Medium | +| Image Uploads | User profile pictures, venue photos | High | + +### Priority: Low (Nice-to-Have) + +| Feature | Description | Complexity | +|---------|-------------|------------| +| Social Auth | Google/Discord OAuth login | Medium | +| Two-Factor Auth | TOTP-based 2FA | High | +| Push Notifications | Web push for real-time alerts | High | +| Mobile App | Native iOS/Android apps | Very High | +| Dark Mode System | Respect system preference by default | Low | +| PWA | Progressive web app for mobile | Medium | --- -## Optional: System Cron for Weekly Digest +## 🧹 Technical Debt -To automatically send weekly digests, add this to server crontab: +| Item | Description | Priority | +|------|-------------|----------| +| Remove deprecated `version` | docker-compose.yml version key | Low | +| Clean unused files | `scripts/cron_weekly_digest.sh` not used | Low | +| Add test coverage | No automated tests currently | Medium | +| API Documentation | OpenAPI docs exist but could be enhanced | Low | +| Code comments | Some complex functions need better docs | Low | + +--- + +## 🚀 Deployment Info + +| Component | URL/Location | +|-----------|--------------| +| Production | | +| Analytics | | +| Bug Tracker | → /bugs | +| API Docs | | +| Server | tangible-aacorn (Hetzner ARM64) | +| Git | | + +### Container Stack + +- `backend` - FastAPI (Python 3.11) +- `frontend` - Next.js 15 +- `db` - PostgreSQL 15 +- `db-backup` - Auto daily backups (7 days, 4 weeks, 6 months) +- `umami` - Analytics +- `umami-db` - Analytics database + +### Email + +- Provider: Postal (self-hosted) +- SMTP: smtp.elmeg.xyz:25 +- DNS: SPF, DKIM, DMARC configured + +--- + +## 📝 Quick Reference: Key API Endpoints + +### User Preferences -```bash -# Send weekly digest every Sunday at 9am UTC -0 9 * * 0 curl -X POST https://elmeg.xyz/api/admin/send-weekly-digest -H "Authorization: Bearer $ADMIN_JWT_TOKEN" ``` +GET /api/preferences/ # Get all preferences +PUT /api/preferences/ # Update preferences +``` + +### Email Notifications (triggered automatically) + +- Reply: When someone replies to your comment +- Mention: When you're @mentioned +- Chase: When a chased song is played (via import) +- Digest: Admin triggers `POST /api/admin/send-weekly-digest` + +### GDPR/Privacy + +``` +GET /api/users/me/export # Download all your data +DELETE /api/users/me # Delete account (body: {"confirm_email": "..."}) +``` + +### Admin (requires admin role) + +``` +POST /api/admin/test-email?to_email=... # Test email config +POST /api/admin/send-weekly-digest # Trigger weekly digest +GET /api/admin/stats # Platform statistics +``` + +--- + +## 📅 Session History + +### Dec 27, 2025 + +- Fixed auth persistence (missing DB columns) +- Added performance rankings (#X of Y) with heady badges +- Theme persistence to backend +- GDPR data export + account deletion +- Email notifications (reply, mention, chase, digest) +- bugs.elmeg.xyz subdomain +- Admin email endpoints + +### Dec 26, 2025 + +- Launch readiness polish +- Favicon, robots.txt, sitemap +- SEO meta tags + +### Dec 24-25, 2025 + +- Umami analytics integration +- Database backup automation +- UI polish (border-radius, emojis removed) + +### Dec 22-23, 2025 + +- YouTube video integration +- Postal email setup +- Email verification working + +--- + +## 🎯 Next Session Priorities + +1. **Set up automated weekly digest cron** (if desired) +2. **Test all notification flows end-to-end** +3. **Consider error tracking (Sentry)** +4. **Any user-reported bugs or requests** + +--- + +*This document is the source of truth for Elmeg platform status and roadmap.*