Appearance
ADR 0039 — Member Gender Field ​
Status: Accepted
Date: 2026-06-24
Deciders: Kristopher Turner
Supersedes: —
Related: ADR 0032 (extended profile fields), ADR 0038 (RBAC multi-role)
Context ​
Heritage Virginia communicates with members in ways that reflect biblical fellowship patterns — announcements, meeting invitations, or pastoral messages that are intended specifically for "brothers" (men) or "sisters" (women) in the congregation. Without a gender field, there is no programmatic way to target gendered communications.
This field is also relevant for future features such as gender-specific small groups, prayer circles, or service roles.
Decision ​
Add a gender field to the User model as a PostgreSQL enum.
Enum values ​
| Value | Meaning |
|---|---|
MALE | Member self-identifies as male (brother) |
FEMALE | Member self-identifies as female (sister) |
NOT_SPECIFIED | Member has not provided a gender (default) |
Access model ​
| Operation | Who can do it |
|---|---|
| Self-set via profile edit | Any authenticated adult member |
| View in directory / member detail | Admin, minister |
| Filter or target for comms | Admin, minister |
| Read own value | Member themselves |
Children (PARENT_MANAGED accounts) may also have a gender set — by the parent during child account management.
Wire format ​
gender is returned as lowercase on the wire: 'male', 'female', 'not_specified'. The field is included in UserProfile and MemberSummary DTOs.
Privacy ​
Gender is not shown in the public member directory. It is visible to admins and ministers, and to the member themselves on their profile.
Consequences ​
- One new enum type (
Gender) and one new column (User.gender) in the database. UpdateMyProfileBodyschema gains an optionalgenderfield.AdminUpdateUserRequestalso gainsgender(allows admin to correct on behalf of a child account).UserProfileDTO gainsgender: GenderSlugfield.MemberSummaryDTO gainsgender: GenderSlugfield (for admin use and CSV export).- Profile edit page gains a gender selector (Male / Female / Prefer not to say).
- Admin member view gains a gender display field.
- Future comms feature can filter recipients by
gender = MALE | FEMALE.