AssayLink Docs

Technical documentation

For developers and coding agents: what AssayLink is, what is already built, and how to change it without breaking the product rules.

Agent brief (read this first)

Goal: a POC that can mature into a product — the assay definition layer (intended TDP successor): AI-assisted template discovery, metadata authoring, vocabulary governance and template review. Not experimental execution data. Stewardship and controlled vocabulary are first-class, not an afterthought.

Two rules that override everything else:

  1. Build a metadata-driven, vocabulary-governed assay template product, not a JSON viewer.
  2. Design so every hard-coded demo behaviour can later become governed configuration.

Canonical project instructions also live in the repo root CLAUDE.md. Prefer this HTML pack for humans and offline export; keep CLAUDE.md as the short agent policy file.

What is implemented today

Capability Status
Next.js 15 App Router app under src/web/Done
Prisma + PostgreSQL schema, migrations, seed from 4 JSON sourcesDone
Three personas with capability-based auth (mock cookie)Done
Grouped catalogue, template detail, lifecycle statusesDone
Metadata-driven authoring wizard (by section) + draft editDone
Steward review queue + review decision formDone
Vocabulary CRUD, suggestions gate, change logDone
Metadata model: Assay Definition Knowledge Model (sections, field–vocabulary map, rules)Done
Metadata Quality Score (completeness, vocabulary, rules)Done
Free-text matcher with explained scoring and rule-derived gapsDone
Hybrid extraction (rules + optional Claude / Azure OpenAI)Done (mock default)
Project-first flow via MaRLay mock + ProjectAssayLinkDone
Static HTML docs at /docs/Done
Real Entra/ALB SSODesigned, not wired
Real MaRLay HTTP clientMock client shaped for swap
Reusable assay subtypes as a primary objectOut of primary UX (ADR-0003)
Protocol / instruments / data-output blocksFUTURE sections on the section map

Non-negotiable engineering rules

Repository map

ph-rnd-assaylink/
├── CLAUDE.md                 # Agent/project policy (short)
├── config.yml                # ONLY infra file to edit
├── terraform/                # DO NOT MODIFY (upstream)
├── docs/                     # Markdown ADRs & product notes (source material)
├── .github/workflows/ci.yml  # Our CI
├── docker-compose.yml        # Local Postgres
├── dev.sh                    # One-command local start
└── src/web/                  # Entire application (Docker build context)
    ├── prisma/               # Schema, migrations, seed
    ├── public/docs/          # THIS documentation (static HTML)
    ├── src/app/              # Routes, server actions
    ├── src/components/       # UI
    ├── src/domain/           # Types + Zod
    ├── src/server/           # services, repositories, ai, auth, integrations
    └── tests/                # unit, integration, e2e

Markdown under repo docs/ (ADRs, meeting notes) remains the historical design record. Prefer linking to those for deep decisions; this HTML site is the navigable export for users and agents.

Architecture → · Implementation detail → · How to continue development →