Create personalized Anki flashcards that adapt to your target language's unique grammar challenges.
Language Learn automatically generates intelligent flashcards designed for the specific grammar patterns and learning challenges of your target language. Instead of generic vocabulary cards, you get cards that understand noun genders, verb conjugations, and other language-specific features that make learning more effective.
Transform simple vocabulary lists into smart learning experiences:
- German nouns β Cards that test article recall (der/die/das) separately from meaning
- Verb conjugations β Cards that practice irregular patterns and separable verbs
- Adjective forms β Cards covering comparative and superlative forms
- Pronunciation β Audio files for proper pronunciation practice
- Visual memory β Images to reinforce vocabulary retention
Create CSV files with your target language vocabulary. The software currently includes German vocabulary, but you can use any language by providing your own CSV files:
data/
βββ nouns.csv # Your nouns with language-specific info
βββ adjectives.csv # Adjectives with comparison forms
βββ verbs.csv # Verbs with conjugation patterns
βββ adverbs.csv # Adverbs and examples
βββ phrases.csv # Common phrases and expressions
# Clone the repository
git clone <repository-url>
cd language-learn
# Install dependencies
pip install hatch
hatch env create
# Basic deck generation (no audio/images)
python src/langlearn/main.py
# Advanced: With audio and images (requires API keys)
python src/langlearn/main.py --with-media
- Open Anki on your computer
- Click "Import"
- Select the generated
.apkg
file from theoutput/
folder - Start studying your personalized cards!
The software works with any vocabulary in CSV format. Here's how to create cards for your target language:
noun,article,english,plural,example,related
Hund,der,dog,Hunde,Der Hund bellt laut,Tier
Katze,die,cat,Katzen,Die Katze schlΓ€ft,Tier
Auto,das,car,Autos,Das Auto ist schnell,Fahrzeug
# Point to your data directory
python src/langlearn/main.py --data-dir /path/to/your/csv/files
# Specify output location
python src/langlearn/main.py --output output/my_deck.apkg
- Front: "dog" β Back: "der Hund" (tests article + word together)
- Front: "_____ Hund" β Back: "der" (tests article recall specifically)
- Front: "Hund β Plural" β Back: "Hunde" (tests plural forms)
- Front: "to speak (ich)" β Back: "ich spreche" (tests conjugation)
- Front: "speak up (separable)" β Back: "ich stehe auf" (tests separable verbs)
- Grammar-aware: Cards adapt to your target language's specific challenges
- Audio pronunciation: Hear correct pronunciation (with API keys configured)
- Visual learning: Images help with vocabulary retention
- Example sentences: Learn words in context, not isolation
The software works out of the box with the included German vocabulary data.
For audio and images, configure these services:
export AWS_ACCESS_KEY_ID=your_key
export AWS_SECRET_ACCESS_KEY=your_secret
export AWS_DEFAULT_REGION=us-east-1
python src/langlearn/utils/api_keyring.py add PEXELS_API_KEY your_key
The software automatically organizes cards into logical subdecks:
My German Deck
βββ Nouns
βββ Verbs
βββ Adjectives
βββ Adverbs
βββ Phrases
You can customize the main deck name:
python src/langlearn/main.py --deck-name "My French A1 Vocabulary"
Coming Soon:
- Multi-deck support: Generate separate decks for different topics
- Multi-language support: Built-in support for Spanish, French, Italian, etc.
- Voice recording: Record yourself to compare with native pronunciation
- Quiz modes: Multiple choice for articles, verb forms, etc.
- Progress tracking: See which grammar patterns you've mastered
"No cards generated":
- Check that your CSV files are in the correct format
- Verify the data directory path is correct
"Import failed in Anki":
- Make sure you're using Anki desktop (not AnkiWeb)
- Try importing a smaller test deck first
"Audio/images not working":
- This feature requires API keys (see Configuration section)
- Cards will still work without media - only text will be shown
- π§ Issues: Report problems here
- π Documentation: See
docs/
folder for technical details - π¬ Discussions: Ask questions in GitHub Discussions
The included German dataset demonstrates how Language Learn adapts to German's specific challenges:
German Challenge: Noun genders (der/die/das) are arbitrary and must be memorized Language Learn Solution: Separate cards test article recall vs. word meaning
German Challenge: Separable verbs work differently than English phrasal verbs
Language Learn Solution: Cards specifically practice separable verb patterns
German Challenge: Adjective endings change based on case, gender, and definiteness Language Learn Solution: Cards show adjectives in various contexts and declensions
This same adaptive approach will extend to other languages as multi-language support is added.
Click to view technical details
hatch env create
hatch run test # Run tests
hatch run lint # Check code quality
- Clean Pipeline: CSV β Domain Models β Cards β Anki Deck
- Language Agnostic: Core engine supports any language with proper CSV data
- Quality: 401 tests, MyPy strict mode, comprehensive linting
- Check
docs/DESIGN-INDEX.md
for navigation - Review
docs/DESIGN-GUIDANCE.md
for standards - Add vocabulary data for new languages
- Enhance card templates for different grammar patterns
Transform your vocabulary lists into intelligent flashcards that understand your target language's unique challenges.