coder13 / coder13/LetsCube

Add opt-in racer preferences and discovery filters

Open
#190 0 comments 0 reactions 0 assignees View on GitHub
area: social enhancement priority: P2
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.