Skip to content

feat: member profile #69

Description

@ethnjs

Background

A member's TD-facing panel and their own profile page show only a thin slice of what's actually known about them — name, roles, tracks, join date. Everything else a member has already told the tournament through onboarding forms — availability, lunch selection, event preferences, and answers to any custom questions a TD added — exists only as raw form responses, invisible on both the roster and the member's own profile. TDs have to dig through form submissions by hand to answer basic questions like "is this person free for the morning shift."

Separately, some tournaments need to know whether a member is over 18 and/or over 21, without ever collecting or exposing an actual date of birth, and TDs need a way to hide specific pieces of this now-surfaced data per tournament without that becoming a second, competing privacy mechanism. And once a member's data is visible, they have no way to fix a mistake in what they submitted — only a TD can edit it on their behalf.

Motivation

Consolidating what's already been collected into one visible place saves TDs from re-deriving it from raw form data, gives members a way to see and correct their own information, and gives TDs a privacy-respecting way to ask a narrow, sensitive question (age threshold) without turning it into a broader disclosure than intended.

Proposed changes

Surfacing existing data — the TD-facing member panel and a member's own profile page will show availability, lunch selection, event preferences, track statuses, and answers to any custom (non-reserved) onboarding questions, pulled from what the member already submitted. A TD with visibility into a tournament will be able to open any member's profile, not just their own; a member can always view their own.

Age disclosure — a tournament can opt into asking whether a member is over 18 and/or over 21. A member must explicitly consent before that derived flag is shared with the tournament; their actual date of birth is never shared. Existing members are asked to decide the moment a TD turns this on for a tournament they've already joined. Declining pauses the member's access to that tournament without deleting anything they've submitted, and consenting afterward restores it in full.

Display configuration — independent of the age-disclosure gate, a TD will be able to hide specific tracks, lunch categories, event-preference options, or custom questions from the member panel, a member's profile, and the roster table, per tournament.

Member self-service editing — a member will be able to revise their own previously submitted availability, lunch selection, event preferences, and track status, without going through a TD.

What will not change

  • A member cannot move their own track status backwards past one already confirmed.
  • Declining age disclosure or a track never deletes any of the member's prior submissions.
  • Declining a track does not affect the member's existing availability answers — that connection is separate, unbuilt work.
  • Display configuration and the age-disclosure consent gate stay independent — hiding an item in display configuration never exposes an age flag a member hasn't consented to share, and vice versa.

Completion criteria

  1. A member's availability, lunch selection, event preferences, track statuses, and custom question answers are visible on both the TD-facing member panel and the member's own profile page.
  2. A TD with the right visibility can view any member's profile; a member can always view their own.
  3. A tournament can turn on collecting an 18+ and/or 21+ flag, and a member must explicitly consent before that flag is shared with the tournament.
  4. A member who declines age disclosure loses access to that tournament without losing any submitted data, and regains access by consenting later.
  5. A TD can hide specific tracks, lunch categories, event-preference options, or custom questions from the member panel, profile, and roster, per tournament — independently of the age-disclosure gate.
  6. A member can edit their own availability, lunch selection, event preferences, and track status after initial submission, subject to the same forward-only track status rule as before.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions