https://github.com/thatfactory/lingokit
A plug-and-play, UI-agnostic Swift toolkit for building and scoring language-learning exercises. 📚
https://github.com/thatfactory/lingokit
domain-logic education game-development gamification language language-learning listening package reading speaking swift swiftpm ui-agnostic writing
Last synced: 3 months ago
JSON representation
A plug-and-play, UI-agnostic Swift toolkit for building and scoring language-learning exercises. 📚
- Host: GitHub
- URL: https://github.com/thatfactory/lingokit
- Owner: thatfactory
- License: mit
- Created: 2026-02-09T08:40:20.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2026-02-23T18:09:13.000Z (4 months ago)
- Last Synced: 2026-02-24T00:45:13.316Z (4 months ago)
- Topics: domain-logic, education, game-development, gamification, language, language-learning, listening, package, reading, speaking, swift, swiftpm, ui-agnostic, writing
- Language: Swift
- Homepage:
- Size: 43.9 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Agents: AGENTS.md
Awesome Lists containing this project
README
# LingoKit
A plug-and-play, UI-agnostic Swift toolkit for building and scoring language-learning exercises. 📚
It supports activities across *reading*, *writing*, *listening*, and *speaking* by providing reusable exercise modules and consistent evaluation/scoring logic.
Instead of organizing by modality, `LingoKit` organizes by exercise type—such as `intent classification`, `cloze`, or `ordering`—allowing the same exercise to be reused across different contexts. For example, `intent classification` can work with written prompts (*reading*) or audio transcripts (*listening*).
This approach keeps UI and content flexible while making it easy to integrate well-defined challenges and receive consistent, comparable results.
Each exercise engine can expose an `ExerciseType` taxonomy value so host apps can model generic flows while keeping evaluation logic in `LingoKit`.
```mermaid
flowchart TB
subgraph HOST["Host App/Game"]
FLOW["ExerciseFlow"]
end
subgraph LK[" "]
ALL["LingoKit"]
CORE["LingoKitCore"]
IC["LingoKitIntentClassification"]
CLOZE["LingoKitCloze"]
ORDER["LingoKitOrdering"]
TILES["LingoKitTileAssembly"]
FTXT["LingoKitFreeText"]
SPEECH["LingoKitSpeechScoring"]
ETC["..."]
end
FLOW --> ALL
ALL --> IC
ALL --> CLOZE
ALL --> ORDER
ALL --> TILES
ALL --> FTXT
ALL --> SPEECH
ALL --> ETC
IC --> CORE
CLOZE --> CORE
ORDER --> CORE
TILES --> CORE
FTXT --> CORE
SPEECH --> CORE
ETC --> CORE
```