Files
photofetch/CONTEXT.md

2.9 KiB

photofetch

Pick a Napta Project and see a grid of its Members — each shown with their Slack Avatar, name, and Role. The shared vocabulary below is the ubiquitous language: it must appear verbatim in conversation, code, tests, commits, and docs.

Language

Project: A Napta project that people are staffed on; the unit you select to see its team. Avoid: mission, engagement.

Person: An employee in Napta (a Napta user), carrying an email, first/last name, and Position. Avoid: collaborator, resource, user (ambiguous — there are no app accounts).

Staffing Assignment: A Napta user_project row linking one Person to one Project; may be real or simulated. Avoid: allocation, booking.

Member: A Person with a real (non-simulated) Staffing Assignment on the selected Project who is still an active employee — one cell in the grid. Avoid: teammate, staff.

Role: A Member's Napta job Position (user_position), shown under their name. Avoid: title, grade, seniority.

Match: The link from a Member to their Slack profile, made by equal email. A Member is matched or unmatched. Avoid: lookup, mapping.

Avatar: A matched Member's Slack profile picture. Unmatched Members fall back to an initials Avatar. Avoid: photo, picture, image.

Selection: The set of one or more Projects currently chosen, whose teams are shown together. Avoid: filter.

Project Group: One selected Project plus its Members — a section in the grid and a folder in an Export. Avoid: section, bucket.

Export: A downloadable zip of Member Avatars, organized as one folder per Project Group (folder named after the Project). Avoid: download, dump.

Relationships

  • A Project has many Staffing Assignments; each Assignment links one Person.
  • A Member is a Person with a qualifying Staffing Assignment on a selected Project.
  • A Member has exactly one Role and at most one Avatar (via an email Match).
  • A Selection contains one or more Projects; each renders as a Project Group.
  • A Person staffed on several selected Projects appears in each of those Project Groups.
  • An Export writes one folder per Project Group, holding its Members' Avatar files.

Example dialogue

Dev: "When I pick a Project, do I show every Person who has a Staffing Assignment on it?" Domain expert: "Only real ones — drop the simulated assignments, and drop people who've left." Dev: "And if a Member's email has no Match in Slack?" Domain expert: "Still show them — initials Avatar, real name and Role. A missing photo isn't a missing person."

Flagged ambiguities

  • "user" is avoided: Napta calls a Person a user, but photofetch has no login/accounts, so the word would mislead. A Person on the selected Project is a Member.