Database
Manage DB
Browse collections and tables, and watch the CQRS timing pipeline.
Peoplepeople
Global human identity record with contact info, optionally linked to a login.
π‘
Operational Purpose & Edge Invariants
Centralizes individual identity across the platform, whether or not the person ever signs in. Imported racers and emergency contacts exist without a login; a user claims their person record once their email is verified. What a person may do is scoped elsewhere: organization roles on organization_members, event-group staffing on event_group_staff, and racing on entrants.
Relational Connections (8)
β Belongs TouserId
users βLogin that has claimed this person record, if any.
β Has ManypersonId
eventGroupStaff βEvent groups this person is staffing.
β Has ManypersonId
entrants βRaces this person is or has competed in.
β Has ManyemergencyContactPersonId
entrants βEntrants for whom this person serves as designated emergency contact.
β Has ManypersonId
personExternalProfiles βExternal athletic platform profiles (UltraSignup, Strava, DUV, ITRA).
β Has ManypersonId
personRaceHistory βIndividual past race results achieved across platforms.
β Has ManypersonId
personHistoricalSummaries βMaterialized 1:1 career intelligence rollup and experience tier.
β Has ManypersonId
entrantHistoricalProjections βEvent-specific pacing projections and safety triage models.
Table Columns & Types (10)
people| Column | PostgreSQL Type | Constraints | Default | Documentation |
|---|---|---|---|---|
| id | uuid | NOT NULLPK | gen_random_uuid() | Unique person identifier. |
| userId | uuid | nullableFK -> users.idUnique | β | Login that claimed this person. Null for people who have never signed in. |
| firstName | text | NOT NULL | β | First name. |
| lastName | text | NOT NULL | β | Last name. |
| gender | text | nullable | β | Gender identity for category assignment. |
| birthdate | text | nullable | β | Birthdate string (YYYY-MM-DD) for age-group calculation. |
| text | nullable | β | Primary contact email. | |
| phone | text | nullable | β | Mobile contact phone. |
| address | jsonb (AddressSchema) | nullable | β | Residential address. |
| createdAt | timestamp with time zone | NOT NULL | now() | Creation timestamp. |
Database Indexes (2)
| Index Name | Columns | Type | Query Performance Rationale |
|---|---|---|---|
| people_email_idx | (email) | INDEX | Accelerates user authentication and participant lookup during registration. |
| people_name_idx | (lastName, firstName) | INDEX | Speeds up competitor alphabetical searches in timing kiosks. |