Add opt-in racer preferences and discovery filters
- Dominant language
- JavaScript
- Stars
- 30
- Forks
- 9
- PR merge metrics
- No merged PRs in 30d
Description
## Goal
After the Friend System MVP is stable, help cubers discover compatible racers beyond people they have already met in a room.
## Candidate profile fields
All fields must be optional, coarse, and independently hideable:
- preferred WCA events;
- language tags;
- timezone or broad availability windows;
- self-described pace bands per event.
Do not infer or publish age, exact location, email, hidden WCA identity, or solve history.
## Discovery contract
- Users are excluded from recommendations by default until they opt in.
- Filters and recommendations must respect blocks and profile visibility.
- Explain why a result matched; do not create opaque global rankings.
- Keep search bounded and rate-limited and provide a way to leave discovery immediately.
- Validate demand with Friend System usage before choosing the final fields or ranking logic.
## Acceptance criteria
- [ ] Research which two or three fields users will actually maintain and document the privacy tradeoffs.
- [ ] Add profile visibility and discovery opt-in controls with safe defaults.
- [ ] Define coarse, validated values rather than unrestricted location/speed text where possible.
- [ ] Add filtered discovery with pagination, rate limits, block enforcement, and explicit empty states.
- [ ] Add data retention/deletion behavior and privacy-safe adoption metrics.
- [ ] Test hidden fields, opt-out, blocking, pagination, and unauthorized access.
## Dependencies
- #75
- #82
- #188
## Non-goals
- Exact geolocation.
- Age-based matching.
- Automatic competitive ratings.
- Shipping as part of the Friend System MVP.
Contributor guide
Research direction
Start by reviewing dependencies #75, #82, and #188, then validate demand through Friend System usage before settling the profile fields or ranking logic. Done means the privacy tradeoffs and chosen fields are documented, and discovery controls, filters, safety measures, retention behavior, and the listed privacy and access tests are in place.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript
- Domain
- backend-api-design
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100