39a979b1a7
backend phase 3: identity profiles, patients & nurse bank accounts Add the role-attached identity layer on top of the b2 auth spine: nurse seller profiles (guarded is_verified, read-only aggregates), thin customer payer profiles, first-class patients (tenancy-scoped), and nurse payout bank accounts hardened with an iban_hash uniqueness guard and an automated استعلام شبا IBAN-ownership inquiry. - Four usr tables via one migration (1:1 uniques, UNIQUE(iban_hash), filtered UNIQUE(nurse_id) WHERE is_primary=1, guarded is_verified, encrypted PII, soft-delete on nurse_profiles) - 15 CQRS slices + 4 role-scoped controllers; reads projected + paginated, IBAN masked (last-4); ownership-inquiry endpoints rate-limited - New IBankAccountOwnershipVerifier seam (mock deterministic شبا match) + per-domain repositories on IUnitOfWork + encrypted-PII value converters - Activate FluentValidation repo-wide (validators were never registered) - Handler unit tests + WebApplicationFactory integration tests (76 pass); contract identity-profiles.md + swagger snapshot; docs, handoff & report Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> @
dev/ — the Balinyaar build workspace
This folder is the plan for building Balinyaar, not application code. It takes the repo from its
current starter + auth baseline to the MVP described in product/, as a chain of
agent-runnable prompt files split into two parallel tracks.
| Folder | What it is |
|---|---|
phases/ |
The prompt chain — backend/ (b0–b15) and frontend/ (f0–f15), plus the shared rules/template in phases/_shared/. Start at phases/README.md. |
contracts/ |
The shared API/flow contract between the two independent projects. Backend writes, frontend reads. |
shared-working-context/ |
The parallel-agent handoff + per-phase reports + the mock registry. Each lane writes only its own files. |
How to use it
- Read
phases/README.md— the roadmap and dependency graph. - To run a phase, point a fresh agent at one phase file (e.g. "Execute
dev/phases/backend/backend-phase-2.md"). The phase file tells it what to read, what to build, and how to close out. - Run the two tracks in parallel with two agents if you like: a frontend phase named
frontend-phase-N-bM.mdonly needs backend phase bM merged first; everything else about the two tracks is decoupled throughcontracts/andshared-working-context/(which are designed so the two agents never touch the same files).
Non-negotiables (every phase enforces them)
- Follow the project rules in the relevant
CLAUDE.md/CONVENTIONS.mdand the shared operating rules. - Mock external services behind DI seams and record them in
shared-working-context/reports/mocks-registry.md. - Finish each phase with: updated docs, a written contract (backend), a handoff note, a phase report, and saved memory.