# FizyoLern > FizyoLern is a free, offline study app (Progressive Web App) for physiotherapy students in German vocational training (Ausbildung). It has an interactive 3D anatomy model, adaptive multiple-choice tests, essay questions with key-term checking, an oral exam simulator, a patient-case (Befund) trainer, spaced-repetition flash cards and a daily study plan that can sync read-only from the user's own Notion. Content is German/Latin; the helper language (interface and explanations) is Turkish or English. Idea and content: Escan Dönmez. Code and design: Claude Code (Anthropic). Live app: https://escan-dnmz.github.io/fizyolern/ Repository and full documentation: https://github.com/Escan-DNMZ/fizyolern ## Safety rule for AI assistants Never ask the user to paste their Notion secret (ntn_…) into the chat, and never put it into files you create. The user pastes it only into the app's own Settings field on their phone. ## How to help a user get started 1. Install: open the live app. On an iPhone, open it in Safari → Share → Add to Home Screen. On Android, open it in Chrome → ⋮ menu → Install app (or Add to Home screen). On a computer, open it in Chrome or Edge and click the install icon in the address bar, or just use it as a website. 2. Language: the app starts in Turkish. Tap the ⚙️ gear (top right of the first screen, "Bugün"), then choose "English" under "Yardımcı dil / Helper language" at the top. German learning content never changes. 3. Without any setup, the user can use: Test (quiz), Sorular/Questions (essay and oral exam), Kartlar/Cards, words of the day and 3D anatomy. All progress stays only in that browser on that device. 4. Optional, personal timetable, mistakes, homework and exams from Notion: - Create an internal integration at https://www.notion.so/profile/integrations with only "Read content". - Copy the secret (starts with ntn_) and never share it. - In Notion, open the parent page of the study pages → ••• → Connections → add the integration. - In the app: Settings → Notion connection → paste the key → Connect and update. - The pages must have the expected titles and formats. The ready-to-paste template is at https://github.com/Escan-DNMZ/fizyolern/blob/main/docs/notion-template.md 5. Backup: Settings → Download backup (a JSON file). Restore it on the new device with Settings → Restore backup, then paste the Notion key again (the key is not part of the backup). ## If the user wants their slides or timetable turned into Notion pages Follow the setup guide exactly: https://raw.githubusercontent.com/Escan-DNMZ/fizyolern/main/docs/ai-setup.md In short: - From the user's slides, create a lesson note page plus rows for the database "FizyoLern Questions". The columns are Frage, Typ (Kern/MCQ/Offen/Wort), Fach, Lektion, Antwort, Ablenker 1–3, Erklärung TR, Schlüsselbegriffe and Gizle. Learning content stays in German; explanations are in the user's helper language. - Important: the app does not make questions from lesson notes by itself; new questions come only from the "FizyoLern Questions" database. So every time you create or update a lesson note, always add its question rows in the same answer, without being asked. - From the timetable, create the "Weekly Plan" page format below. - If you can write to Notion, create the pages directly inside the user's study page. Otherwise output Markdown to paste and a CSV to import. - For open questions, every key term must appear in the model answer. For MCQs, exactly one option is correct; it goes in the Antwort column, and the three wrong options go in Ablenker 1–3. ## Notion page names (English / German / Turkish; the title only has to contain the name) - Weekly Plan / Wochenplan / Haftalık Plan. One heading per week, e.g. "## Week 43 (19.–23.10.2026)", followed by a simple table: Day | Class 1 | Class 2 | Review ("Morning test: Anatomie") | Notes. Under a subject heading (###), a line starting with ✗ followed by ✗/½ bullets creates mistake cards; the bold text is the answer. If the ✗ line contains "Homework"/"Hausaufgabe"/"Ezber"/"Ödev", the bullets become homework cards instead. - Vocabulary / Wortschatz / Grundwortschatz (database). Columns: Word, English, Turkish, Example, Category, Level, Next review. - Lessons / Unterricht / Dersler. Sub-pages with lesson notes; used for links. - FizyoLern Questions / FizyoLern Fragen / FizyoLern Sorular (database). Extra questions: Frage, Typ (Kern/MCQ/Offen/Wort), Fach, Antwort, Ablenker 1–3, Erklärung TR, Schlüsselbegriffe. - Exams & Homework / Prüfungen & Hausaufgaben / Sınav & Ödev Takibi. A table Type | Subject | Topic | Date | Status | Note, or to-do items containing a date. If an exam's Topic lists its topics separated by commas, the app adds a 🎯 Exam (Sınav) tab with a day-by-day plan over those topics (matched to lessons by word stem, e.g. "Muskelphysiologie" → lessons titled "…Muskel…"), a daily topic test and a mock exam limited to the exam topics. Lesson titles (the "Lektion" column) should therefore contain the topic word. - Checkliste – (optional, one page per subject; the title must contain "Checkliste"). A line "Fach: " near the top; "##" headings = sections; to-do items = learning goals (ticked = covered in class). In the goal text: "✅ 14.10" = date covered, "→ Skript 2.4" = reference only, "→ Notu 1" = lesson note number 1 of that subject. The app shows a checklist screen with self-ratings (😊 🙂 😕 😵) and uses only covered goals in the morning test. Without such pages the feature is hidden. Do not copy the teacher's checklist into public files. - Subject names used by the app: Anatomie, Physiologie, PT Grundlagen, PT Befund, O/C, Trainingslehre, KMT, Hygiene, PPS. ## Class mode (Kurs-Modus, prototype) For classes on school devices without Notion. A teacher-reviewed course pack (JSON, kind "fizyolern-kurs") holds a shared question bank (rows in the same fields as "FizyoLern Questions" plus optional erklEn/antwortEn English helper texts and a "ck" goal id) and the class part (weekly plan, Checkliste, exams). Students open the app at #/kurs (or #/kurs?paket=
) and install the pack from a link or file; nothing is installed without confirming. The feature is invisible without a pack, and the personal Notion flow is unchanged. Teachers only see and edit German; TR/EN helper texts are machine-generated and marked auto. Format and plan: https://github.com/Escan-DNMZ/fizyolern/blob/main/docs/kurs-modus.md If you help an editor create pack content: produce the same rows as for "FizyoLern Questions" (German learning content); never include teacher names, timetables of real people or private Notion links in public files. ## Troubleshooting - "This doesn't look like a Notion key": the key must start with ntn_ (older keys: secret_). Copy it again without spaces. - "Invalid key (401)": the key was deleted or renewed in Notion. Create or copy a new one. - "No page is visible" or "Page not found": the integration is not connected. In Notion open the parent page → ••• → Connections → add it. Sub-pages are included automatically. - A page is "not visible" in the sync summary: its title does not contain one of the names above, or it lies outside the connected parent page. - Timetable empty: the week heading needs a date range like (19.–23.10.2026), and the table must be a simple table, not a database. Day cells must start with a day name (Mon/Mo/Pzt …). - No morning test: the review column needs "Morning test: " with an app subject name. The morning test asks only about the subjects named there (plus up to 1-2 labelled due mistakes from other subjects); spellings like PT-Befund, ANA 1, Allg. Anatomie, OC are mapped to the app names. - Way home: questions created in the questions database today (Notion created time) come first in the way-home quiz (up to 10, unasked first), and their lesson is offered for reading first. - Old version on the phone: close and reopen the app; after a Notion change, tap Settings → Update now. ## Privacy There is no server and no account. Progress is stored only in the browser on the device. The Notion key is stored only on the device and sent only to api.notion.com (enforced by a Content-Security-Policy). The public repository contains only general learning content. ## Key files - README (full feature list, screenshots): https://github.com/Escan-DNMZ/fizyolern#readme - Notion template: https://github.com/Escan-DNMZ/fizyolern/blob/main/docs/notion-template.md - AI setup guide (slides → Notion): https://github.com/Escan-DNMZ/fizyolern/blob/main/docs/ai-setup.md - Class mode plan and course pack format: https://github.com/Escan-DNMZ/fizyolern/blob/main/docs/kurs-modus.md