01 / Web product · Clinical education
Diagnostique
A daily clinical reasoning game in Portuguese. Progressive clues, up to six attempts, and a library of past cases.

Decision 01
Revealing a clue is also an API decision.
The React and TypeScript interface tracks the attempts. The Fastify backend determines what information the session can receive at each step.
The initial response includes the revealed clues and the total clue count. The correct answer and explanation are left out of that state.
What the test checks
The serialization test compares returned clues with the revealed subset and checks that the answer, explanation, and a future clue are absent. This is contract evidence in the code, not a usage metric.

Decision 02
History keeps its reference.
Content definitions have revisions in SQLite. A publication references one of those revisions, preserving the context in which a session began.
Content tests check that an edit creates a new revision without replacing the historical definition, and that earlier publications keep their reference.
The relationship that stays intact
The tests cover both the historical definition and the link between publication and revision. The library screenshot gives history a visible context; the implementation and tests provide the evidence of consistency.
Trade-off. Preserving revisions maintains consistency, but requires separate definitions, revisions, and publications. Updating content is no longer a simple replacement of the previous record.
Open Diagnostique · Opens in a new tabPrivate source code
Fictional cases for educational use.