Add data model doc and sheets explorer tool
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
# Data model
|
||||
|
||||
The entities the directory serves. Structured data lives in the data source (see `docs/plan.md`); blobs (photos, audio) are URL references into blob storage.
|
||||
|
||||
## Person
|
||||
|
||||
One record per person, all roles in one shape:
|
||||
|
||||
- **Key**: school email, lowercased. Everyone has one, including the youngest students (their addresses exist but they don't have access yet).
|
||||
- **Names**: full name, legal name, preferred name.
|
||||
- **Roles**: student, parent, and staff booleans — combinations are valid (staff members are often also parents). Display strings derive from the flags.
|
||||
- **Pronouns**: optional; a curated list plus a freeform escape hatch.
|
||||
- **Pronunciation**: optional audio recording of the person's name.
|
||||
- **Photo**: official portrait or personal upload; people may opt for an illustrated avatar instead.
|
||||
- **Facts**: optional about-me text — first-person blurbs for students, professional bios for staff.
|
||||
- **Student fields**: grade (`Kindergarten`, `Grade 1` … `Grade 8`), classroom section, and the parent contact emails for the student.
|
||||
- **Staff fields**: job title, department, grade band.
|
||||
- **Contact**: email always; phone optional.
|
||||
- **Year rollover**: next-year grade and band, so the directory can flip to the new school year.
|
||||
|
||||
## Family
|
||||
|
||||
A family groups adults and kids:
|
||||
|
||||
- **Key**: shared by all members. (Currently a parent's email; minting stable family IDs is a planned migration.)
|
||||
- **Photo and caption**: the family photo plus a who's-who description naming everyone in it.
|
||||
- **Pronunciation**: optional audio recording of the family name.
|
||||
- **Address**: as much as the family chooses to share — full postal address or just city and state.
|
||||
- **Phone**: optional family phone.
|
||||
|
||||
## Classrooms and grades
|
||||
|
||||
- **Classroom**: name, mascot artwork, and the grade band it serves. Some classrooms subdivide into sections (teams); sections have their own logos.
|
||||
- **Section**: classroom subdivision with up to a few teachers, a sort order, and named schedule blocks.
|
||||
- **Grade band**: pairs of grades share a band with a combined identity — `Hummingbirds` (K), `Halcons` (1st/2nd), `Jayvens` (3rd/4th), `Cospreys` (5th/6th), `Hegrets` (7th/8th) — used for browsing, room-parent organization, and band-colored styling (see `docs/design.md`). A grade → next-grade mapping drives year rollover.
|
||||
- **Room parents**: parent assignments per grade band.
|
||||
- **Departments**: ordered list organizing the staff view into sections.
|
||||
|
||||
## Sourcing
|
||||
|
||||
Records are imported from the school's systems and enriched by families themselves (photos, facts, pronunciation recordings, address preferences), with each contributed item carrying a last-updated stamp so refresh cadence can be enforced.
|
||||
+2
-2
@@ -4,11 +4,11 @@ The directory ("Helios Who?") is the community's who's-who: students, parents, a
|
||||
|
||||
## Entities
|
||||
|
||||
- **Person** — first and last name; role (student, parent, staff); optional pronouns; optional nickname and pronunciation; photo (some people use an illustrated avatar instead); email; role-specific fields:
|
||||
- **Person** — first and last name; role (student, parent, staff); optional pronouns; optional nickname and pronunciation (an audio recording); photo (some people use an illustrated avatar instead); email; role-specific fields:
|
||||
- *Students*: grade, classroom and team assignment (displayed as a chain, e.g. grade ▶ team ▶ subteam), optional free-text "about me" written by or about the kid.
|
||||
- *Parents*: their kids (shown as context wherever the parent appears), optional room-parent assignments.
|
||||
- *Staff*: job title, displayed prominently; staff may have no family record.
|
||||
- **Family** — the join between adults and kids: combined surname(s), family photo with a caption identifying everyone in it, member list split into adults and kids, address, phone. Lists show the city; the full address powers map actions.
|
||||
- **Family** — the join between adults and kids: combined surname(s), family photo with a caption identifying everyone in it, an optional family-name pronunciation recording, member list split into adults and kids, address, phone. Lists show the city; the full address powers map actions. Families choose how much address to share (full postal address or just the city).
|
||||
- **Classroom** — name and mascot artwork, the grade band it serves, and its students, staff, and parents. Classrooms nest teams/subteams that student rows reference.
|
||||
- **Grade** — K through 8, grouped into bands (K, 1st/2nd, 3rd/4th, ...) for browsing.
|
||||
|
||||
|
||||
+1
-1
@@ -26,7 +26,7 @@
|
||||
- Clone the existing app's functionality and layout, working from screenshots of the current app as the reference.
|
||||
- Views: browsable/searchable directory of families and individuals; detail pages with contact info, photos, and name pronunciation.
|
||||
- Photo handling: individual and family photos uploaded to Drive, resized/cached for serving.
|
||||
- Pronunciation: stored per person; representation (text respelling vs. audio) decided during the clone.
|
||||
- Pronunciation: audio recordings (MP3), one per person and one per family, stored with the other blobs.
|
||||
|
||||
## Data
|
||||
|
||||
|
||||
Reference in New Issue
Block a user