Documentation Index
Fetch the complete documentation index at: https://mintlify.com/hack4impact-umd/breastfeeding-center-gw/llms.txt
Use this file to discover all available pages before exploring further.
The BCGW Dashboard stores all of its operational data in Cloud Firestore. Data is organized into four top-level collections.
| Collection | Constant | Contents |
|---|
Client | CLIENTS_COLLECTION | Unified client profiles |
JaneAppt | JANE_APPT_COLLECTION | Jane appointment records |
Users | USERS_COLLECTION | Dashboard staff accounts |
Invites | INVITES_COLLECTION | Pending invite tokens |
All four collections contain personally identifiable information (PII) or access credentials. Firestore security rules restrict reads and writes to authenticated dashboard users. Do not share collection data outside of authorized internal use.
Client document
The Client collection holds one document per client. A single document aggregates identifiers from all external services (Jane, Acuity, Squarespace, Booqable/Stripe) so that data from different sources can be joined without duplicating records.
Document ID: UUID (stored in the id field and used as the Firestore document key)
| Field | Type | Required | Description |
|---|
id | string | Yes | Firestore document ID (UUID) |
firstName | string | Yes | Client first name |
middleName | string | No | Optional middle name |
lastName | string | Yes | Client last name |
email | string | Yes | Primary matching key across all sync sources |
dob | string | No | Date of birth (ISO 8601) |
phone | string | No | Phone number |
insurance | string | No | Insurance information |
janeId | string | No | Jane patient_number — set during file upload |
paysimpleId | string | No | Paysimple customer ID |
squarespaceCustomerId | string | No | Squarespace customer ID — set during Squarespace sync |
stripeId | string | No | Stripe customer ID used for Booqable — set during Booqable sync |
baby | Baby[] | Yes | Array of baby/dependent records (may be empty) |
associatedClients | Client[] | Yes | Co-attendees linked at a Jane appointment (may be empty) |
Baby sub-document
Each entry in the baby array follows this structure:
| Field | Type | Required | Description |
|---|
id | string | Yes | Jane patient_number for the baby |
firstName | string | Yes | Baby first name |
middleName | string | No | Optional middle name |
lastName | string | Yes | Baby last name |
dob | string | Yes | Date of birth (ISO 8601) |
JaneAppt document
The JaneAppt collection holds one document per Jane appointment. Documents are written during the file upload process and linked to a client via clientId.
Document ID: Jane appointment ID (apptId)
| Field | Type | Description |
|---|
apptId | string | Jane appointment ID (also the Firestore document key) |
clientId | string | Firestore Client document ID of the primary client |
startAt | string | Appointment start time (ISO 8601) |
endAt | string | Appointment end time (ISO 8601) |
visitType | VisitType | One of HOMEVISIT, OFFICE, or TELEHEALTH |
service | string | Service or treatment name from Jane |
clinician | string | Assigned staff member name |
firstVisit | boolean | true if this was the client’s first visit |
Users document
The Users collection holds one document per dashboard staff account. Documents are created when an invite is accepted.
Document ID: Firebase Auth UID (auth_id)
| Field | Type | Required | Description |
|---|
auth_id | string | Yes | Firebase Authentication UID |
email | string | Yes | Login email address |
firstName | string | Yes | First name |
lastName | string | Yes | Last name |
pronouns | string | No | Optional pronouns |
phone | string | No | Phone number (used for MFA) |
type | Role | Yes | One of VOLUNTEER, ADMIN, or DIRECTOR |
Role levels control which actions a user can perform in the dashboard:
| Role | Level | Permissions |
|---|
VOLUNTEER | 0 | Read-only access |
ADMIN | 1 | Read and write; manage clients and appointments |
DIRECTOR | 2 | Full access including bulk delete and user management |
Invites document
The Invites collection stores pending invite tokens that allow new staff members to create an account. Tokens are consumed on registration.