Refresh README with recent features
Add YouTube video integration, reflexive-verb list + practice-pool filters, verb-detail example sentences, lyrics word lookup. Bump iOS / Xcode requirements to 26. Correct grammar-note count and document the YouTubeKit + AVFoundation muxing architecture plus the video-curation script. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -9,15 +9,18 @@ A Spanish-learning iOS app that combines verb conjugation practice, a full textb
|
|||||||
- **Focus modes** — weak verbs (SM-2 spaced repetition), irregularity drills (spelling / stem / unique), common tenses
|
- **Focus modes** — weak verbs (SM-2 spaced repetition), irregularity drills (spelling / stem / unique), common tenses
|
||||||
- **1,750 verbs** across 5 levels (Basic → Expert) with 209 K pre-conjugated forms and 23 K irregular-span annotations
|
- **1,750 verbs** across 5 levels (Basic → Expert) with 209 K pre-conjugated forms and 23 K irregular-span annotations
|
||||||
- **20 tenses** — every indicative, subjunctive, conditional, and imperative tense, each with character-level irregular highlighting
|
- **20 tenses** — every indicative, subjunctive, conditional, and imperative tense, each with character-level irregular highlighting
|
||||||
- **Irregularity filter** — search the verb list by Any Irregular / Spelling Change / Stem Change / Unique Irregular, combinable with level filter
|
- **Verb list filters** — search by level, by irregularity (Any / Spelling Change / Stem Change / Unique Irregular), or by reflexive only (curated 100-verb list); filters compose
|
||||||
|
- **Practice pool filters** (Settings) — multi-select per level, per tense, per irregular-type, plus a "reflexive verbs only" toggle. Practice pool = intersection of all four.
|
||||||
|
- **Verb detail pages** — conjugation table, six AI-generated example sentences (one per core tense), and reflexive infinitive + preposition hint for curated reflexive verbs
|
||||||
- **Text-to-speech** on any form
|
- **Text-to-speech** on any form
|
||||||
|
|
||||||
### Content & study
|
### Content & study
|
||||||
- **Textbook reader** — 30 chapters of *Complete Spanish Step-by-Step* with 251 interactive exercises (keyboard + Apple Pencil), 931 OCR'd vocab tables rendered as Spanish→English grids (~3 100 paired cards extracted via bounding-box OCR)
|
- **Textbook reader** — 30 chapters of *Complete Spanish Step-by-Step* with 251 interactive exercises (keyboard + Apple Pencil), 931 OCR'd vocab tables rendered as Spanish→English grids (~3 100 paired cards extracted via bounding-box OCR)
|
||||||
- **Course decks** — weekly vocab decks with example sentences, week tests, and cumulative checkpoint exams
|
- **Course decks** — weekly vocab decks with example sentences, week tests, and cumulative checkpoint exams
|
||||||
- **Stem-change toggle** on Week 4 flashcard decks (E-IE, E-I, O-UE, U-UE) showing inline present-tense conjugations
|
- **Stem-change toggle** on Week 4 flashcard decks (E-IE, E-I, O-UE, U-UE) showing inline present-tense conjugations
|
||||||
- **Grammar guide** — 20 tense guides with usage rules and examples + 20+ grammar topic notes (ser/estar, por/para, preterite/imperfect, etc.), each with 100+ practice exercises
|
- **Grammar guide** — 20 tense guides with usage rules and examples + 36 grammar topic notes (ser/estar, por/para, preterite/imperfect, reflexives, subjunctive triggers, etc.), each with 100+ practice exercises
|
||||||
- **Grammar exercises** — interactive quizzes for 5 core topics (ser/estar, por/para, preterite/imperfect, subjunctive, personal *a*)
|
- **Grammar exercises** — interactive quizzes for 5 core topics (ser/estar, por/para, preterite/imperfect, subjunctive, personal *a*)
|
||||||
|
- **Curated YouTube videos** — 54 hand-picked videos attached to guide and grammar items (preference for The Language Tutor's numbered lessons + BaseLang). Each item offers three actions: **Stream** (opens YouTube app / Safari), **Download** (YouTubeKit extraction + AVFoundation mux for modern adaptive-stream videos), **Play** (full-screen AVPlayer from local MP4). Settings → Downloaded Videos lists all downloads with total size, per-item delete, and a 500 MB warning.
|
||||||
|
|
||||||
### AI & speech
|
### AI & speech
|
||||||
- **Conversational practice** — on-device AI chat partner (Apple Foundation Models) with 10 scenario types; chat bubbles have tappable words that open dictionary / on-demand AI lookup
|
- **Conversational practice** — on-device AI chat partner (Apple Foundation Models) with 10 scenario types; chat bubbles have tappable words that open dictionary / on-demand AI lookup
|
||||||
@@ -29,7 +32,7 @@ A Spanish-learning iOS app that combines verb conjugation practice, a full textb
|
|||||||
- **Offline dictionary** — reverse index of 175 K verb forms + 200 common words, cached to disk for instant lookups
|
- **Offline dictionary** — reverse index of 175 K verb forms + 200 common words, cached to disk for instant lookups
|
||||||
- **Vocab SRS review** — spaced repetition over course vocabulary with Again / Hard / Good / Easy rating
|
- **Vocab SRS review** — spaced repetition over course vocabulary with Again / Hard / Good / Easy rating
|
||||||
- **Cloze practice** — fill-in-the-blank sentences with distractor generation
|
- **Cloze practice** — fill-in-the-blank sentences with distractor generation
|
||||||
- **Lyrics practice** — search, translate, and read Spanish song lyrics
|
- **Lyrics practice** — search, translate, and read Spanish song lyrics; long-press any word for an instant definition + tense/person readout (for verbs)
|
||||||
|
|
||||||
### Tracking & sync
|
### Tracking & sync
|
||||||
- **Progress** — streaks, daily goals, accuracy stats, achievement badges, study-time tracking per day
|
- **Progress** — streaks, daily goals, accuracy stats, achievement badges, study-time tracking per day
|
||||||
@@ -39,18 +42,21 @@ A Spanish-learning iOS app that combines verb conjugation practice, a full textb
|
|||||||
## Architecture
|
## Architecture
|
||||||
|
|
||||||
- **SwiftUI** + **SwiftData** with a dual-store configuration:
|
- **SwiftUI** + **SwiftData** with a dual-store configuration:
|
||||||
- **Local store** (App Group `group.com.conjuga.app`) — reference data: verbs, forms, irregular spans, tense guides, course decks, vocab cards, textbook chapters. Seeded from bundled JSON on first launch. Self-healing re-seeds trigger on version bumps *or* if rows are missing on disk.
|
- **Local store** (App Group `group.com.conjuga.app`) — reference data + per-device artifacts: verbs, forms, irregular spans, tense guides, course decks, vocab cards, textbook chapters, and downloaded videos. Seeded from bundled JSON on first launch. Self-healing re-seeds trigger on version bumps *or* if rows are missing on disk.
|
||||||
- **Cloud store** (CloudKit `iCloud.com.conjuga.app`, private database) — user data: review cards, course reviews, user progress, test results, daily logs, saved songs, stories, conversations, textbook exercise attempts.
|
- **Cloud store** (CloudKit `iCloud.com.conjuga.app`, private database) — user data: review cards, course reviews, user progress, test results, daily logs, saved songs, stories, conversations, textbook exercise attempts.
|
||||||
- **SharedModels** Swift Package shared between the app and widget extension. Widget schema must include every local-store entity or SwiftData destructively migrates the shared store.
|
- **SharedModels** Swift Package shared between the app and widget extension. Widget schema must include every local-store entity or SwiftData destructively migrates the shared store.
|
||||||
- **Foundation Models** for on-device AI generation (`@Generable` structs for typed output).
|
- **Foundation Models** for on-device AI generation (`@Generable` structs for typed output) — conversation partner, short stories, verb-detail example sentences.
|
||||||
- **Vision** framework for OCR of textbook pages and vocabulary images.
|
- **Vision** framework for OCR of textbook pages and vocabulary images.
|
||||||
- **Speech** framework for recognition and pronunciation scoring.
|
- **Speech** framework for recognition and pronunciation scoring.
|
||||||
|
- **YouTubeKit** (SPM) for video stream URL extraction, paired with **AVFoundation** (`AVMutableComposition` + `AVAssetExportSession` passthrough) to mux separate DASH video + audio tracks into a single MP4 when progressive streams aren't available.
|
||||||
- **Textbook extraction pipeline** (`Conjuga/Scripts/textbook/`) — XHTML and answer-key parsers, macOS Vision image OCR + PDF page OCR, bounding-box vocab pair extractor, NSSpellChecker-based validator, and language-aware auto-fixer.
|
- **Textbook extraction pipeline** (`Conjuga/Scripts/textbook/`) — XHTML and answer-key parsers, macOS Vision image OCR + PDF page OCR, bounding-box vocab pair extractor, NSSpellChecker-based validator, and language-aware auto-fixer.
|
||||||
|
- **Video curation tooling** (`Conjuga/Scripts/generate_videos_markdown.py`) — regenerates `Conjuga/youtube_videos.md` with per-video channel, upload date, duration, view count, and like count (pulled via yt-dlp).
|
||||||
|
|
||||||
## Requirements
|
## Requirements
|
||||||
|
|
||||||
- iOS 18+ (iOS 26 for Foundation Models features)
|
- iOS 26+ (Foundation Models, Liquid Glass, modern Swift concurrency)
|
||||||
- Xcode 16+
|
- Xcode 26+
|
||||||
|
- Apple Intelligence-capable device for AI features (conversation partner, AI stories, verb-detail examples); other features degrade gracefully
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user