Files
baya-monorepo/dev/shared-working-context
hamid 99ebf5d881 frontend phase 4: catalog browse (Home A5) & nurse service builder (B7)
Light up the two faces of the configurable service catalog over a new cached
services/catalog domain (consumes the b5 contract; unlocks f6 search).

- services/catalog: types/keys/constants/apis(client+mock+seam)/hooks/index +
  names.ts. Categories & option groups are session-cached reference data
  (Infinity staleTime, like geography); variant mutations invalidate
  myVariantsLists() and setQueryData the edited row. Mock-primary
  (USE_CATALOG_MOCK), one-line swap; mock reproduces the 400 missing-required
  and (nurse,category,option-set) 409 duplicate rules.
- Customer Home (A5): greeting+avatar, search bar (navigates toward f6),
  data-driven category grid (loading/empty/error), patient nudge from the
  cached f2 query. Deferred /search placeholder stub.
- Nurse Services & prices (B7) at /nurse/services: offerings list (active vs
  deactivated, edit, soft-deactivate w/ confirm, reactivate, no delete) and a
  3-step variant builder (category -> required/optional options -> price+unit+
  duration). Required-group gate; Toman->IRR digit-string at the field
  boundary (no float); live unit-aware estimated total (never from price
  alone); editable auto display_name; inline 409 duplicate warning; locked
  category edit form.
- Shared, tested components: CategoryTile, PriceDisplay, VariantCard. Money
  util: tomanToRial + multiplyIrr (integer-safe) + tests.
- i18n: catalog/services/search namespaces + home additions + nav.services
  (both locales, in sync). Icons, routes (SEARCH, NURSE_SERVICES), nurse nav.

Gate: npm run check green; npm run test:ci green (147 tests, +18 across 4
suites); npm run build green with NEXT_PUBLIC_API_URL set.

Docs: client/CLAUDE.md (Project Structure, caching note, namespaces), STATUS,
for-backend REQ-010 (pagination param casing), phase report, mocks registry.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 17:33:44 +03:30
..
2026-06-28 21:59:59 +03:30

Shared working context — the parallel-agent handoff

This folder lets a backend agent and a frontend agent work at the same time without ever editing the same file. It is the running, append-only record of what each side has done and what it needs from the other. (Stable API shapes live in ../contracts/; this folder is the running coordination on top of them.)

Lane ownership — the one rule that keeps it safe

Each lane writes only its own files. Neither lane edits the other's.

Lane Writes (only) Reads
Backend backend/STATUS.md, backend/handoff/after-backend-phase-N.md (new file per phase), reports/backend-phase-N-report.md, reports/mocks-registry.md frontend/requests/for-backend.md, prior backend handoffs
Frontend frontend/STATUS.md, frontend/requests/for-backend.md (append), reports/frontend-phase-N-report.md backend/handoff/*, ../contracts/*, prior frontend reports

Because each handoff is a new file per phase and each STATUS/requests file is append-only, two agents can run concurrently and only ever append — no merge conflicts, no clobbering.

Layout

shared-working-context/
├── backend/
│   ├── STATUS.md                          # append: one block per backend phase (what shipped, gate status)
│   └── handoff/
│       └── after-backend-phase-N.md       # "context for frontend after backend phase N" (one per phase)
├── frontend/
│   ├── STATUS.md                          # append: one block per frontend phase
│   └── requests/
│       └── for-backend.md                 # append: contract gaps / shape requests the backend should fulfil
└── reports/
    ├── README.md                          # the per-phase report template
    ├── mocks-registry.md                  # master list of every mock/seam + how to make it real (backend-owned)
    ├── backend-phase-N-report.md          # what was built / testable / mocked (one per backend phase)
    └── frontend-phase-N-report.md         # one per frontend phase

The handoff note (backend → frontend), per phase

backend/handoff/after-backend-phase-N.md should answer, for the frontend agent:

  • Which endpoints/contracts are now live (link the contracts/domains/* doc + the swagger snapshot).
  • What the frontend can now build because of this phase.
  • What is mocked server-side (so the frontend knows responses are fake-but-shaped) and what's real.
  • Any auth/enum/format detail the frontend must mirror.
  • Open questions / things the frontend should not assume yet.

The request note (frontend → backend)

frontend/requests/for-backend.md is where the frontend appends: missing endpoints, fields it needs, shape mismatches, pagination/filter needs — anything that should land in a later backend change. The backend agent reads this at the start of each phase. The frontend never edits backend code to "fix" it.