- ✅ Removed elite-design.css, premium-design.css, data-viz.css, micro-interactions.css, transaction-viz.css
- ✅ Updated templates/tiers.html and templates/index.html to remove CSS references
- ✅ Kept functional loading.css and loading.js
- ✅ Tested app still works
- ✅ Committed changes
- ✅ Created cli/ package with cli.go, commands.go, tests.go
- ✅ Implemented command router with support for:
user <username>- Fetch user's leaguesleague <league_id> <username>- Analyze leaguetiers <format>- Fetch Boris Chen tiersdynasty-values- Fetch KTC valuesplayer <name>- Look up playertest- Run integration tests
- ✅ Added flags: --json, --debug, --cache-off
- ✅ Updated main.go to detect CLI mode
- ✅ CLI compiles and runs successfully
- ✅ Committed changes
Note: CLI commands show placeholder output. Full integration with main package functions requires refactoring fetch functions to accept context and be exported.
- ✅ Created otel/ package with otel.go and metrics.go
- ✅ Created logger/ package with structured logging and trace correlation
- ✅ Created docker-compose.otel.yml for local dev stack (Jaeger, Prometheus, Grafana, OTEL Collector)
- ✅ Created configuration files:
- otel-collector-config.yaml
- prometheus.yml
- grafana/datasources/datasources.yml
- ✅ Defined metrics: http.requests.total, http.request.duration, cache.hits/misses, api.calls.total, leagues.analyzed, users.active
- ✅ Created OBSERVABILITY.md documentation
- ✅ Committed changes
Note: OTEL infrastructure is in place. To activate:
- Install OTEL Go dependencies (see OBSERVABILITY.md)
- Instrument HTTP handlers with otelhttp middleware
- Add spans to key functions in fetch.go, roster.go, dynasty.go
- Start observability stack:
docker-compose -f docker-compose.otel.yml up -d
Priority: Medium Time Estimate: 4-6 hours
Features from plan/power-user-improvements.md:
-
League Selector Dropdown (for users with 5+ leagues)
- Auto-detect league count
- Switch to dropdown if > 5 leagues
- Searchable league list
- Group by type (Dynasty/Redraft/Best Ball)
- Star/favorite leagues functionality
- Show at top of list
-
Better Transaction Display
- User-centric view (You gave / You got)
- Two-column trade layout
- Clear visual separation
- Dynasty value context for trades
-
Transaction Filters
- Filter by type (All/Trades/Waivers/Free Agents)
- Date range filter
- Search by player name
-
Remember Last Viewed League
- Store in localStorage
- Auto-select on page load
Files to modify:
- templates/tiers.html (league selector HTML/JS)
- static/tiers.js (dropdown functionality)
- dynasty.go (transaction display logic)
Priority: Low Time Estimate: 3-4 hours
Features from plan/feature-gaps-analysis.md:
-
Create /admin Route
- Secret key authentication (env var ADMIN_KEY)
- Real-time metrics display
-
Metrics to Display
- Users online (active sessions)
- Lookups today/week/month
- Leagues viewed today/week/month
- Dynasty mode usage %
- Error rate and recent errors
- Most popular leagues/players
- Browser/device breakdown
-
Use Prometheus Metrics
- Query existing prometheus metrics
- Or maintain in-memory counters
Files to create:
- handlers_admin.go
- templates/admin.html
- Integrate with existing Prometheus metrics
Priority: Medium Time Estimate: 3-4 hours
Features from plan/feature-gaps-analysis.md:
-
League Settings Display
- Roster requirements (1 QB, 2 RB, 2 WR, 1 TE, 2 FLEX, 1 K, 1 DEF)
- Scoring format (PPR, Half-PPR, Standard, Superflex)
- League size (12 teams)
- Playoff format
-
Team Standings Table
- Current records (W-L)
- Points for/against
- Playoff positioning
- Sort by wins/points
-
Player Search/Filter
- Search within league view
- Filter by position
- Filter by tier
- Filter by roster status (Starters/Bench/FA)
Files to modify:
- templates/tiers.html (add league settings, standings, search)
- handlers.go (pass league settings to template)
- roster.go (add standings calculation)
Priority: Low Time Estimate: 2-3 hours
Features from plan/feature-gaps-analysis.md:
-
PWA Support
- Enhance manifest.json (already exists at /static/manifest.json)
- Service worker for offline support
- Add to home screen functionality
-
Mobile Optimizations
- Touch-friendly buttons (larger tap targets)
- Swipe gestures for league tabs
- Bottom navigation for mobile
- Improved mobile layout
-
Offline Support
- Cache API responses
- Show cached data when offline
- Sync when back online
Files to create/modify:
- static/service-worker.js
- static/manifest.json (enhance)
- static/main.css (mobile-specific styles)
Priority: Low Time Estimate: 2-3 hours
Features from various plan docs:
-
Better Error Messages
- Retry buttons
- Clear action steps
- Error categories (API down, user not found, etc.)
-
Toast Notifications
- Success messages
- Error alerts
- Loading indicators
-
Demo Mode
- Show mock data without login
- Sample league with all features
- "Try it yourself" CTA
-
CSV Export (CLI command)
./sleeperPy cli export <league_id> --format csv- Export roster data
- Export transaction history
Files to create/modify:
- static/toast.js (notification system)
- handlers.go (add demo mode)
- cli/export.go (CSV export command)
- templates/error.html (improved error page)
Completed: 3/8 phases (37.5%)
- ✅ Remove flashy design
- ✅ CLI mode framework
- ✅ OpenTelemetry infrastructure
Remaining: 5/8 phases (62.5%)
- ⏳ Power user improvements
- ⏳ Admin dashboard
- ⏳ Enhanced league features
- ⏳ PWA & mobile optimizations
- ⏳ Additional improvements
Total Implementation Time:
- Completed: ~7 hours
- Remaining: ~14-20 hours
Next Steps:
- Implement power user improvements (highest impact for users with many leagues)
- Enhanced league features (improves core experience)
- Admin dashboard (operational visibility)
- PWA/mobile optimizations (better mobile UX)
- Additional improvements (polish and refinement)
Notes:
- CLI commands need full integration with main package (export functions, add context parameter)
- OTEL needs dependency installation and instrumentation (see OBSERVABILITY.md)
- All plan/ files have detailed implementation specs