pdf-quiz-generator/docs
Daniel 809ac2fca6 feat: figures are thumbnails that open into a viewer, with source and overlay
A 2,000px radiograph written into an article rendered at whatever width it
happened to be — a wall of greyscale in the middle of a sentence, four
megabytes to draw it, and no way to look at it properly. Every image in prose
is now a 256px thumbnail with the author's label under it, and a click gives it
the screen.

The viewer puts what is known about the figure beside it: its title, what it
shows, and where it came from. `media_assets` gains `source` and `source_url`
for that — a citation belongs to the file, because the same figure used in
three articles is cited the same way in all three, and a licence that turns out
to be wrong is one row to fix rather than three paragraphs to find. Asked for
when the figure is opened, not when the page is drawn.

And `overlay`: the regions an educator has marked, as vector shapes in
normalised coordinates on the unit square, so one drawing is correct in a
thumbnail, in the viewer and on a projector. Off until the learner turns it on
— marks shown before they have looked answer the question for them. Vectors
rather than a second burnt-in picture, for four reasons written down in
docs/image-overlays.md. The tool that draws them is next; this is the storage,
the contract and the reader's half.

On a narrow screen the description stacks above the image rather than beside
it, where it can be read before scrolling to the picture.

Also here: `classify_question_difficulty`, which labelled all 2,924 questions
in batches of twenty-five against a written rubric — 622 easy, 1,634 medium,
668 hard, no failed batches. The column had been NULL on every row since it
existed. Migration l2c3d4e5f6a7.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TqXevQJhxFrM7jJg82cgZN
2026-09-12 20:33:00 +02:00
..
quiz-revamp feat: authorize tutor context and protect uploaded media 2026-09-07 15:04:00 +02:00
adaptive-sessions.md feat: a session prepared for you, and a model that can see when the one on the job cannot 2026-09-12 15:46:04 +02:00
api-reference.md feat: Cap replaces hCaptcha, self-hosted beside the app 2026-09-12 06:14:14 +02:00
architecture.md feat: Cap replaces hCaptcha, self-hosted beside the app 2026-09-12 06:14:14 +02:00
deployment.md feat: Cap replaces hCaptcha, self-hosted beside the app 2026-09-12 06:14:14 +02:00
frontend.md feat: Cap replaces hCaptcha, self-hosted beside the app 2026-09-12 06:14:14 +02:00
image-overlays.md feat: figures are thumbnails that open into a viewer, with source and overlay 2026-09-12 20:33:00 +02:00
migrations.md fix: gateway-agnostic URL handling for TTS and embeddings, docs cleanup 2026-04-19 02:17:35 +02:00
quiz-revamp-plan.md docs: sync backlog with what shipped today 2026-09-09 20:11:20 +02:00
quiz-revamp-progress.md feat: Cap replaces hCaptcha, self-hosted beside the app 2026-09-12 06:14:14 +02:00
README.md docs: how article links, highlights and views are actually written 2026-09-12 19:30:43 +02:00
reranking.md feat: rerank what a learner is shown, with Cohere through the proxy 2026-09-12 18:23:06 +02:00
retrieval-thresholds.md feat: rerank what a learner is shown, with Cohere through the proxy 2026-09-12 18:23:06 +02:00
services.md Improve quiz TTS and Android release build 2026-05-12 01:01:01 +02:00
study-recommendations.md fix: the difficulty facet counts itself, and the adaptive item is closed 2026-09-12 19:57:21 +02:00
tied-conditions.md content: every article has a high-yield view, and three ties that were not ties 2026-09-12 18:16:59 +02:00
TODO.md feat: figures are thumbnails that open into a viewer, with source and overlay 2026-09-12 20:33:00 +02:00
writing-articles.md docs: how article links, highlights and views are actually written 2026-09-12 19:30:43 +02:00

PedsHub Documentation

Deep technical documentation for the PedsHub pediatric learning platform.

Pages

Document Description
Architecture System overview, database schema, multi-worker setup, vector search, auth, rate limiting, concurrent quiz protection
API Reference Every endpoint: method, path, auth, request/response, notes
Services Backend service layer: AI extraction, embedding, vector search, PDF processing, email, reminders
Frontend React app structure, pages, components, state patterns, runtime config
Deployment Docker setup, environment variables, HTTPS, rebuilding, monitoring, troubleshooting, scaling
Adaptive sessions What the Adaptive toggle selects, where the code is, and what it deliberately ignores
Study recommendations How focus areas are ranked and what readiness means
Writing articles Cross-reference links, key-point highlights, teaching tips, the three views, linking questions, and what deleting does
Reranking Where the cross-encoder is applied and where it deliberately is not
Retrieval thresholds The numbers behind sourced / adjacent / open answers