commit d100e07b7925e93d6049268c5fa47f850c5115e6 Author: Chris Smith Date: Tue Jun 30 11:47:01 2026 +0200 init commit diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..ab1f416 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,10 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Ignored default folder with query files +/queries/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/MISSION.md b/MISSION.md new file mode 100644 index 0000000..98dcbb5 --- /dev/null +++ b/MISSION.md @@ -0,0 +1,26 @@ +# Mission: German Fluency + +## Why + +Living and working in Heitersheim, Germany, with a German employer (cn-mobility GmbH) and children in German schools. The gap between passive survival-German and confident, fluent German is costing real connection — with colleagues, with the community, and with my children's daily lives. This is about belonging, not just communicating. + +## Success looks like + +- Speak without searching for words or restructuring thoughts mid-sentence +- Write work emails in German confidently, without second-guessing register or grammar +- Understand German TV, radio, podcasts, and films without subtitles +- Join conversations at school events, with neighbours, and in community settings without anxiety +- Read German news (e.g. Badische Zeitung, Der Spiegel) fluently + +## Constraints + +- B1.2 level, attending Goethe Institut twice a week (class already handles systematic grammar) +- 30-60 minutes per day available for self-study (reading, listening, speaking practice) +- Native English speaker — Germanic false friends and article/case system are the main structural hurdles +- No budget constraint mentioned; apps, courses, and resources are fair game + +## Out of scope + +- Academic German (literary analysis, formal register beyond professional email) +- Translation or interpretation work +- Dialect study (Alemannic/Badisch) — standard Hochdeutsch is the target diff --git a/NOTES.md b/NOTES.md new file mode 100644 index 0000000..55316a1 --- /dev/null +++ b/NOTES.md @@ -0,0 +1,31 @@ +# Teaching Notes + +## User profile + +- Native English speaker, living in Heitersheim (Baden-Wurttemberg), Germany +- Works at cn-mobility GmbH — German-language workplace +- Children in German schools — wants to be part of their lives more fully +- B1.2 at Goethe Institut Freiburg, 2x/week +- 30-60 min/day for self-study +- Has a detailed weak-spots document from prior practice; that document should seed early lessons + +## Known weak spots (from their self-assessment doc) + +Priority order: +1. V2 word order after fronted elements (~40% of errors) — highest leverage +2. Verb conjugation: *ich habe* not *ich hat* +3. Noun gender and adjective endings (especially tech vocab) +4. Possessive pronouns (*sein-* vs *ihn/er*) +5. Missing prepositions (*an* with task work) +6. Compound noun splitting (*Datenbank kopie* → *Datenbankkopie*) +7. Partizip II — inseparable prefix verbs take no *ge-* +8. du/Sie register slips in formal messages +9. Subordinate clause verb-final (*weil, dass, ob, wenn*) +10. Meaning distinctions: *ob* vs *wenn*, *fur mich* vs *bei mir*, *eingestellt* etc. + +## Teaching preferences / approach + +- Goethe class already handles systematic grammar — complement, don't duplicate +- Ground all lessons in real-life contexts: cn-mobility work, Heitersheim community, children's school +- Interleave listening + reading + writing practice, not just grammar drills +- Space repetition of weak-spot patterns across lessons diff --git a/RESOURCES.md b/RESOURCES.md new file mode 100644 index 0000000..2999187 --- /dev/null +++ b/RESOURCES.md @@ -0,0 +1,46 @@ +# German Learning Resources + +## Knowledge + +- [DW Nicos Weg (B1)](https://learngerman.dw.com/en/nicos-weg/c-36519691) + DW's flagship B1 video course. Grammar explanations anchored in everyday German life. Use for: systematic B1 grammar and vocabulary, watching real conversational German. + +- [DW Top-Thema mit Vokabeln](https://www.dw.com/de/deutsch-lernen/top-thema/s-8031) + Weekly current-affairs audio (slow, clear narration) with transcript and vocabulary. Use for: daily 10-minute listening practice tied to real news. + +- [Easy German YouTube](https://www.youtube.com/c/EasyGerman) + Street interviews with native speakers + dual German/English subtitles. B1-B2 sweet spot. Use for: authentic listening, hearing regional speech, confidence that real German is comprehensible. + +- [Slow German Podcast — Annik Rubens](https://slowgerman.com/) + Slow, clear narration on German culture, history, and everyday life. Transcripts available. Use for: daily commute listening, 5-10 minute episodes at exactly B1-B2 pace. + +- [Hammer's German Grammar and Usage — Martin Durrell](https://www.routledge.com/Hammers-German-Grammar-and-Usage/Durrell/p/book/9781138659353) + The reference grammar used by university German departments. Exhaustive but well-indexed. Use for: looking up edge cases in word order, adjective endings, prepositions — not for reading cover to cover. + +- [Duden Online](https://www.duden.de/) + Authoritative German dictionary with gender, plurals, and usage examples. Use for: confirming article genders, correct compound noun formation. + +- [DWDS — Digitales Worterbuch der deutschen Sprache](https://www.dwds.de/) + Corpus-based dictionary with frequency data and real example sentences. Use for: checking whether a word is actually used the way you think, finding collocations. + +- [Badische Zeitung](https://www.badische-zeitung.de/) + Regional newspaper covering Freiburg and the Markgraflerland (including Heitersheim). Use for: daily reading practice in locally relevant German, community context. + +## Wisdom (Communities) + +- [r/german](https://www.reddit.com/r/german/) + High-quality moderated subreddit with native speaker participation. Use for: grammar questions, register doubts, writing feedback. + +- [r/WriteStreakGerman](https://www.reddit.com/r/WriteStreakGerman/) + Daily writing streak community — post a short German text, get corrections from natives. Use for: low-stakes daily writing practice with real feedback. + +- Goethe Institut Freiburg class — B1.2, twice a week + Current formal study environment. Use for: structured grammar, speaking practice with peers, teacher feedback. + +- Local: Heitersheim/Markgraflerland community events, Vereine (clubs/associations) + The highest-leverage wisdom source. Use for: real community immersion, building local relationships, practising spontaneous speech. + +## Gaps + +- No strong resource yet for formal email writing practice (professional German register) +- No resource specifically for Goethe B2 preparation (relevant when B1 is complete) diff --git a/assets/style.css b/assets/style.css new file mode 100644 index 0000000..fe05547 --- /dev/null +++ b/assets/style.css @@ -0,0 +1,262 @@ +/* German Learning — Shared Stylesheet */ + +:root { + --ink: #1a1a1a; + --ink-light: #555; + --ink-faint: #888; + --bg: #fafaf8; + --bg-warm: #f4f1eb; + --accent: #2e5d9e; + --accent-dark: #1d3f6e; + --green: #1e6b3c; + --green-bg: #eaf5ee; + --red: #8b1a1a; + --red-bg: #fdecea; + --yellow-bg: #fdf8e8; + --border: #ddd; + --radius: 6px; + --max-w: 680px; +} + +* { box-sizing: border-box; margin: 0; padding: 0; } + +body { + font-family: 'Georgia', 'Times New Roman', serif; + font-size: 18px; + line-height: 1.7; + color: var(--ink); + background: var(--bg); + padding: 3rem 1.5rem 6rem; +} + +.page { + max-width: var(--max-w); + margin: 0 auto; +} + +/* Typography */ + +h1 { + font-size: 1.9rem; + line-height: 1.25; + margin-bottom: 0.3rem; + color: var(--ink); +} + +.subtitle { + font-size: 1rem; + color: var(--ink-light); + margin-bottom: 2.5rem; + font-style: italic; +} + +h2 { + font-size: 1.2rem; + font-weight: bold; + margin: 2.5rem 0 0.75rem; + color: var(--ink); + letter-spacing: 0.01em; +} + +h3 { + font-size: 1rem; + font-weight: bold; + margin: 1.5rem 0 0.5rem; + color: var(--ink); +} + +p { margin-bottom: 1rem; } + +a { color: var(--accent); } +a:hover { color: var(--accent-dark); } + +code, .de { + font-family: 'Courier New', monospace; + font-size: 0.92em; + background: var(--bg-warm); + padding: 0.1em 0.35em; + border-radius: 3px; + color: var(--accent-dark); +} + +/* Rule box */ + +.rule-box { + background: var(--yellow-bg); + border-left: 4px solid #c9a800; + padding: 1rem 1.25rem; + margin: 1.5rem 0; + border-radius: 0 var(--radius) var(--radius) 0; +} + +.rule-box .formula { + font-family: 'Courier New', monospace; + font-size: 1rem; + color: var(--ink); + margin-top: 0.5rem; +} + +/* Example table */ + +table { + width: 100%; + border-collapse: collapse; + margin: 1.25rem 0; + font-size: 0.95rem; +} + +th { + text-align: left; + padding: 0.4rem 0.75rem; + border-bottom: 2px solid var(--border); + color: var(--ink-light); + font-size: 0.85rem; + font-style: normal; + letter-spacing: 0.05em; +} + +td { + padding: 0.5rem 0.75rem; + border-bottom: 1px solid var(--border); + vertical-align: top; +} + +tr:last-child td { border-bottom: none; } + +.wrong { color: var(--red); } +.right { color: var(--green); } + +/* Quiz */ + +.quiz-section { + margin: 2rem 0; +} + +.question-block { + background: white; + border: 1px solid var(--border); + border-radius: var(--radius); + padding: 1.25rem 1.5rem; + margin-bottom: 1rem; + transition: border-color 0.2s; +} + +.question-block.correct { border-color: #5aab77; background: var(--green-bg); } +.question-block.incorrect { border-color: #c97070; background: var(--red-bg); } + +.question-text { + font-size: 1rem; + margin-bottom: 0.9rem; + line-height: 1.5; +} + +.blank { + display: inline-block; + min-width: 120px; + border-bottom: 2px solid var(--ink-light); + margin: 0 0.2em; + color: transparent; + font-family: 'Courier New', monospace; +} + +.options { + display: flex; + flex-direction: column; + gap: 0.5rem; +} + +.option-btn { + background: var(--bg-warm); + border: 1px solid var(--border); + border-radius: var(--radius); + padding: 0.55rem 1rem; + text-align: left; + font-family: 'Courier New', monospace; + font-size: 0.95rem; + cursor: pointer; + transition: background 0.15s, border-color 0.15s; + color: var(--ink); +} + +.option-btn:hover:not(:disabled) { + background: #e8e4da; + border-color: #bbb; +} + +.option-btn.selected-correct { + background: var(--green-bg); + border-color: #5aab77; + color: var(--green); + font-weight: bold; +} + +.option-btn.selected-incorrect { + background: var(--red-bg); + border-color: #c97070; + color: var(--red); + text-decoration: line-through; +} + +.option-btn.reveal-correct { + background: var(--green-bg); + border-color: #5aab77; + color: var(--green); +} + +.option-btn:disabled { cursor: default; } + +.feedback { + margin-top: 0.75rem; + font-size: 0.9rem; + line-height: 1.5; + display: none; +} + +.feedback.show { display: block; } +.feedback.correct-fb { color: var(--green); } +.feedback.incorrect-fb { color: var(--red); } + +/* Score */ + +.score-bar { + background: white; + border: 1px solid var(--border); + border-radius: var(--radius); + padding: 1rem 1.5rem; + margin-top: 1.5rem; + display: none; + font-size: 1rem; +} + +.score-bar.show { display: block; } +.score-number { font-size: 1.5rem; font-weight: bold; color: var(--accent); } + +/* Nav footer */ + +.lesson-nav { + margin-top: 3rem; + padding-top: 1.5rem; + border-top: 1px solid var(--border); + font-size: 0.88rem; + color: var(--ink-faint); +} + +.lesson-nav a { color: var(--ink-light); } + +.ask-teacher { + background: var(--bg-warm); + border-radius: var(--radius); + padding: 0.75rem 1rem; + margin-top: 2rem; + font-size: 0.92rem; + color: var(--ink-light); + border: 1px solid var(--border); +} + +/* Print */ + +@media print { + body { background: white; padding: 1rem; } + .option-btn { border: 1px solid #aaa; } + .quiz-section { display: none; } +} diff --git a/learning-records/0001-starting-point.md b/learning-records/0001-starting-point.md new file mode 100644 index 0000000..98a2517 --- /dev/null +++ b/learning-records/0001-starting-point.md @@ -0,0 +1,7 @@ +# Starting Point: B1.2, English Native, Living in Germany + +The user enters at B1.2 (Goethe Institut), living and working in Heitersheim, Germany, with a German-speaking workplace and children in German schools. They have a detailed self-assessment of their writing errors from prior practice sessions, giving an unusually clear view of the starting floor. + +**Evidence:** Self-provided weak-spots document covering V2 word order, verb conjugation (ich habe/hat), noun gender, adjective endings, possessive pronouns, prepositions, compound nouns, Partizip II, du/Sie register, subordinate clause word order, and several meaning-level distinctions. + +**Implications:** Skip remedial B1 content. First lessons should drill V2 word order (highest-error, highest-leverage), grounded in real-life contexts (work emails, community, family). Goethe class covers systematic grammar — complement with authentic listening and productive writing practice. diff --git a/lessons/0001-v2-word-order.html b/lessons/0001-v2-word-order.html new file mode 100644 index 0000000..fdcd491 --- /dev/null +++ b/lessons/0001-v2-word-order.html @@ -0,0 +1,259 @@ + + + + + + Lesson 1 — V2 Word Order + + + +
+ +

Lesson 1 of your German course

+

V2 Word Order: The Rule That Fixes 40% of Your Errors

+

B1.2 · Grammar · ~15 minutes

+ +

Why this matters

+ +

+ German verbs are obsessed with position. In a main clause, the finite verb always occupies the second slot — the second grammatical unit, not the second word. This is called the Verb-Second (V2) rule and it affects every sentence you speak or write in German. +

+ +

+ In English, the subject almost always comes first. German doesn't care. You can put a time expression, a location, a reason, or an adverb in front — but the moment you do, the subject has to step aside and the verb takes slot two. +

+ +
+ The Rule +
[ Front element ] → VERB → Subject → rest of sentence
+
+ +

The pattern in your own sentences

+ +

These are the exact constructions you've been writing — and the correction each time:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
What you wroteWhat it should beFront element
Heute ich werde Code-Review machenHeute werde ich Code-Review machenHeute (time)
Am Freitag ich hat gearbeitetAm Freitag habe ich gearbeitetAm Freitag (time)
Danach ich werde weiterDanach werde ich weiterDanach (sequence)
Weiss ich nicht was...Ich weiß nicht, was...Subject first → no inversion needed
+ +

+ Notice the last row: when the subject is already in front, there is no inversion. The rule only triggers when something other than the subject occupies slot one. +

+ +

Common front elements that trigger inversion

+ + + + + + + + + +
TypeExamples
TimeHeute, Gestern, Am Freitag, Um 9 Uhr, Letzte Woche
SequenceDann, Danach, Zuerst, Anschließend, Zuletzt
Contrast / additionTrotzdem, Also, Außerdem, Dennoch
Reason phraseDeshalb, Daher, Deswegen
LocationIn Heitersheim, Im Büro, Zu Hause
Object moved to frontDas Ticket habe ich gestern geschlossen.
+ +

A trick that never fails

+ +

+ After you write a sentence, hold up one finger for the first unit. Ask: is this the verb? If no — your next word must be the verb, and the subject comes after it. Count on your fingers if needed. This catches the error every time before it leaves your head. +

+ +
+ +

Drill — choose the correct word order

+ +

All sentences are grounded in your actual life. Eight questions. Immediate feedback after each answer.

+ +
+ +
+ +
+ +
+ +

Primary source for this lesson

+ +

+ DW Nicos Weg — B1 covers V2 word order with video examples in natural conversational German. Episodes 31–35 are particularly good for this pattern. Free, no account needed. +

+ +
+ Ask your teacher: Anything from this lesson that felt unclear — a sentence that confused you, or a case where you're unsure whether inversion applies — paste it into the chat and ask. The teacher is here to dig into it with you. +
+ +
+ Related: + Word Order Reference Sheet · + Lesson 2 coming next session +
+ +
+ + + + + diff --git a/reference/word-order.html b/reference/word-order.html new file mode 100644 index 0000000..f12024e --- /dev/null +++ b/reference/word-order.html @@ -0,0 +1,116 @@ + + + + + + Reference — German Word Order + + + + +
+ +

Reference Sheet · Print-friendly

+

German Word Order

+ +

V2 Rule — Main Clauses

+ +
+ Formula +
[ Slot 1: anything ] → FINITE VERB → Subject → rest
+
+ +

The finite verb always occupies slot 2 in a main clause. When the subject is in slot 1, no inversion is needed. When anything else is in slot 1, the subject and verb swap.

+ +
+
+
Subject first — no inversion
+ Ich habe heute Code-Review gemacht. +
+
+
Time first — inversion
+ Heute habe ich Code-Review gemacht. +
✗ Heute ich habe …
+
+
+
Sequence adverb — inversion
+ Danach habe ich die E-Mail geschrieben. +
✗ Danach ich habe …
+
+
+
Location first — inversion
+ In Heitersheim gibt es viele Wege. +
✗ In Heitersheim es gibt …
+
+
+
Reason connector — inversion
+ Deshalb schreibe ich dir. +
✗ Deshalb ich schreibe …
+
+
+
Object fronted — inversion
+ Das Ticket habe ich gestern geschlossen. +
+
+ +

Verb-Final — Subordinate Clauses

+ +
+ Conjunctions that send the verb to the end +
weil • dass • ob • wenn • obwohl • damit • bevor • nachdem
+
+ + + + + + + + + + + + + + + + + + +
Main clauseSubordinate clause
Ich bin bereit,wenn die Reinigung nicht möglich ist.
Ich weiß nicht,ob das Ticket schon geschlossen wurde.
Er sagt,dass er morgen ins Büro kommt.
+ +

Common Front Elements (trigger V2 inversion)

+ + + + + + + + + +
CategoryWords
Timeheute, gestern, morgen, letzte Woche, am Freitag, um 9 Uhr
Sequencedann, danach, zuerst, zuletzt, anschließend
Reasondeshalb, daher, deswegen, aus diesem Grund
Contrasttrotzdem, dennoch, jedoch, allerdings
Additionaußerdem, auch, zudem
Conditionsonst (otherwise)
+ +

+ ← Back to Lesson 1 +

+ +
+ +