Fig. 2 / 6

Anatomie UNIL

Muscle anatomy quizzes, graded on the Swiss 1–6 scale.

A native iOS quiz app for medical students at the University of Lausanne. Every muscle is asked four ways: origin, insertion, innervation, vascularization. Results are scored like a UNIL exam.

  • 4 question types per muscle
  • 1–6 Swiss grading scale, as at UNIL
  • 319 unit and UI tests in the repo

Figures read from the repositories on 24 Oct 2026.

Platform
iOS · iPhone & iPad
Status
On the App Store
For
Medical students at UNIL revising muscle anatomy
Year
2025
Role
Product and design direction. Built with Claude Code agents.
Stack
Swift, SwiftUI, SwiftData, Swift Charts, StoreKit 2, Firebase, Fastlane, Astro (landing page)
Typeface
System sans (heavy weight) with a monospace for labels
Commits
340 · 101 co-authored by agents · read 24 Oct 2026
Version
2.11 · released 26 Aug 2026 · read 26 Oct 2026
Colour bar sampled from the film: #f5f8fa, #0f37f5, #0f2337, #b9c3f5.

The film · 0:30

The phone shows a correction screen: the wrong answer in red, the right one in green, and a Next button.
Play with sound · 0:30 · 4.8 MB

Everything in this film is also described in the text and the shot list on this page.

Shot list: every frame, described
Frame Time Shot On screen English
Frame 01 0:00 A glowing blue muscle-signal trace on a dark navy grid, with one burst of spikes near the right and 0.23 mV shown. 0.23 mV 0.23 mV
Frame 02 0:02 A white screen with a thin muscle outline in the centre, fibres inside, and a tendon line running above and below it.
Frame 03 0:04 A muscle outline with a single blue callout for its origin, beside a bold French headline. Interrogé sous tous les angles. Questioned from every angle.
Frame 04 0:06 A muscle drawing with four blue callouts, origin, insertion, nerve and artery, beside a bold French headline. Interrogé sous tous les angles. Questioned from every angle.
Frame 05 0:08 Rows of French muscle names and nerves scroll sideways around a large counter reading 18, the next digit blurring.
Frame 06 0:10 Bold dark letters spell out the lower limb, filled with tiny muscle names, above a row of four body regions. MEMBRE INFÉRIEUR — HANCHE · CUISSE · JAMBE · PIED LOWER LIMB: HIP · THIGH · LEG · FOOT
Frame 07 0:12 An iPhone on a blue field shows the home screen with four body-region tiles, beside a headline and a four-step list. Du premier choix à la note finale. From the first choice to the final grade.
Frame 08 0:14 On a blue field, the phone shows a nerve question with four white answer buttons and a countdown timer. Quelle est l'innervation du muscle court extenseur radial du carpe ? What is the innervation of the extensor carpi radialis brevis muscle?
Frame 09 0:16 The phone shows a correction screen: the wrong answer in red, the right one in green, and a Next button. Erreur corrigée Mistake corrected
Frame 10 0:18 The phone shows a finished quiz: an orange ring at 80 percent, a Swiss grade of 5.0, a comparison card and result bars. Quiz terminé ! Quiz finished.
Frame 11 0:20 A dark navy screen with a glowing blue ring around a large grade of 5.0, labelled as a Swiss grade. NOTE SUISSE 5.0 — Très bien SWISS GRADE 5.0: Very good
Frame 12 0:22 On dark navy, a ruler from 1 to 6 with a marker at 1.9, and the formula that turns a percentage score into a grade. Un score noté comme à l'UNIL. A score graded like at UNIL.
Frame 13 0:24 A white chart of scores over 15 sessions, a blue line rising above a dashed pass mark, with a 71 percent average. Séance après séance, jusqu'à l'examen. Session after session, up to the exam.
Frame 14 0:26 An almost empty white frame where the logo is starting to draw in, as a dark vertical stroke with pale ghost lines.
Frame 15 0:28 The Anatomie UNIL logo, a muscle with its tendon, beside the app name, a tagline and a blue App Store button. Anatomie UNIL — Maîtrisez l'anatomie musculaire. — Disponible sur l'App Store Anatomie UNIL. Master muscle anatomy. Available on the App Store.

The sheet · 15 frames, one every 2 s

The problem

Muscle anatomy in the first years of medical school is a memory exercise. A student has to hold, for hundreds of muscles, where each one starts, where it ends, which nerve drives it and which artery feeds it. Textbooks list the facts. They do not ask for them.

Students at the University of Lausanne also learn in French, against a specific curriculum, and are graded on the Swiss 1–6 scale. A generic flashcard app gets none of that right.

The product

Anatomie UNIL is a quiz app for iPhone and iPad. The content covers the upper limb (Membre supérieur), the lower limb (Membre inférieur) and the trunk (Tronc), or all three at once (Tout).

Each muscle is asked four ways: Origine, Terminaison, Innervation, Vascularisation. A quiz is a set of multiple-choice questions with a per-question timer. After each answer the correct option is shown, and a review follows at the end.

The result is converted to the Swiss grade, with the pass mark at 4. History and statistics show progress session by session, so a student can see which region or question type is weakest before the exam.

The app is free for 10 questions per rolling 24 hours. Unlimited use is a StoreKit 2 purchase.

How it’s made

The first version was a Xamarin.iOS app, first committed in 2015. The current app is a native rewrite: Swift and SwiftUI, MVVM, SwiftData for persistence with a custom V1 to V2 migration plan. Firebase provides anonymous auth, analytics, crash reporting and remote config. There are no third-party UI libraries.

The rewrite began in September 2025, partly with Claude Code agents; the production notes below give the share. The repository carries Claude Code review and assistant workflows, agent guidance for cheap xcodebuild runs, and a test suite covering the quiz service, the persistence fallback and the muscle data itself.

Fastlane handles test runs and App Store screenshots. A small Astro site serves as the landing page.

The muscle data is hand-written Swift, not a database file. It is versioned in git and reviewed in pull requests like any other code.

Details

The curriculum data is treated as code under test. The integrity tests check naming conventions, disambiguation and an allowlist of abbreviations, because an ambiguous answer is a wrong grade.

The interface uses semantic colour sets, light and dark mode, VoiceOver labels, Dynamic Type clamping and Reduce Motion handling.

The 30-second film borrows the language of an anatomical atlas plate. A muscle is drawn on, labelled with numbered callouts for its four questions, then the app is shown answering one. The grade scale morphs from a ring into a ruler. The palette is one electric cobalt (#003AFF) on ink and paper; green and red appear only for correct and incorrect.

Decisions

  1. Fig. 2.1

    Questions that grade fairly

    Two muscles that share a name get a parenthetical qualifier, so the question never has two defensible answers. An integrity test enforces an allowlist of abbreviations in answer text.

  2. Fig. 2.2

    A grade, not a percentage

    Scores convert to the Swiss 1–6 scale (note = 1 + score / 20), so a result reads the way a UNIL exam result does. Pass mark is 4.

  3. Fig. 2.3

    Progress you can read

    A Swift Charts dashboard shows score over time, category and question-type breakdowns, weekly activity and streaks.

  4. Fig. 2.4

    Fails safe

    If the SwiftData store cannot be opened, the app falls back to an in-memory store and shows a degraded-mode banner instead of crashing or silently wiping data.

  5. Fig. 2.5

    Quota gates the start, not the middle

    The free tier allows 10 questions per rolling 24 hours. It is checked when a quiz begins, never mid-quiz, so exam practice is not cut off by a paywall.

Production notes

Commits on the default branch, read 24 Oct 2026
Span 6 Dec 2015 to 14 Oct 2026, 3,966 days
Commits 340
Co-authored by Claude Code agents 101
Share 30%
Read on 24 Oct 2026
Note First commits are the 2015 Xamarin app; the native rewrite began in September 2025.

Credits

Product and final cut
Sven Borden
Built with
Claude Code agents · 101 of 340 commits co‑authored, read 24 Oct 2026
Film
Design and motion by Claude
Printed by
App Store

Next print · Fig. 3 / 6

Couple Check-In

Film

0:00 / 0:00