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 |
||
|---|---|---|
| .. | ||
| quiz-revamp | ||
| adaptive-sessions.md | ||
| api-reference.md | ||
| architecture.md | ||
| deployment.md | ||
| frontend.md | ||
| image-overlays.md | ||
| migrations.md | ||
| quiz-revamp-plan.md | ||
| quiz-revamp-progress.md | ||
| README.md | ||
| reranking.md | ||
| retrieval-thresholds.md | ||
| services.md | ||
| study-recommendations.md | ||
| tied-conditions.md | ||
| TODO.md | ||
| writing-articles.md | ||
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 |
Quick Links
- Main README: ../README.md
- Backend .env template: ../backend/.env.example
- Docker Compose: ../docker-compose.yml