Trey t 143e356b75 Complete the Sentence quiz type: engine, UI, tests
Add a new Complete the Sentence quiz type that renders a Spanish example
sentence from the card with the target word blanked out and asks the
student to pick the missing word from 4 choices (other cards' fronts
from the same week's pool).

Core logic lives in SharedModels/SentenceQuizEngine as pure functions
over VocabCard, covered by 18 Swift Testing tests. CourseQuizView calls
the engine, pre-filters the card pool to cards that can produce a
resolvable blank, and reuses the existing MC rendering via a new
correctAnswer(for:) helper.

VocabCard gains examplesBlanks (parallel array to examplesES) so content
can explicitly tag the blanked substring; DataLoader reads an optional
"blank" key on each example. Additive schema change, CloudKit-safe
default.

Also adds ContentCoverageTests that parse the repo's course_data.json
and assert every card has >=3 examples and yields a resolvable question.
These tests currently fail: 1,117 cards still need sentences. They are
the oracle for the gap-fill pass that follows.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 19:33:50 -05:00

Conjuga

A Spanish verb conjugation learning app for iOS. Practice all 20 tenses with spaced repetition, handwriting recognition, and vocabulary courses.

Features

  • Conjugation Practice — Flashcards, typing, multiple choice, handwriting, sentence building, and full table modes
  • Spaced Repetition — SM-2 algorithm tracks what you know and surfaces what you don't
  • 1,750 Verbs — From basic to expert, with irregular form highlighting
  • 20 Tenses — Every indicative, subjunctive, conditional, and imperative tense
  • Grammar Guide — 20 tense guides with conjugation tables + 20 grammar topic notes (Ser vs Estar, Por vs Para, etc.)
  • Vocabulary Courses — Weekly decks with example sentences
  • Progress Tracking — Streaks, daily goals, accuracy stats, and achievement badges
  • CloudKit Sync — Review progress syncs across devices
  • Widgets — Daily progress, word of the day, and weekly stats
  • Text-to-Speech — Hear any verb pronounced in Spanish

Architecture

  • SwiftUI + SwiftData with a dual-store configuration:
    • Local store — Reference data (verbs, forms, guides) seeded from JSON on first launch
    • Cloud store — User data (review cards, progress, streaks) synced via CloudKit
  • SharedModels package shared between the app and widget extension

Requirements

  • iOS 18+
  • Xcode 16+

Building

Open Conjuga/Conjuga.xcodeproj in Xcode and run on a simulator or device. Data seeds automatically on first launch.

Description
No description provided
Readme 13 MiB
Languages
Swift 91%
Python 6.1%
HTML 2.9%