An intelligent, data-driven vocabulary learning application with spaced repetition and comprehensive analytics
Ankara
is a next-generation vocabulary learning application that tries to combine proven educational techniques with modern data analytics. Unlike traditional flashcard applications, this tool features three-sided cards (word, meaning, example) and collects comprehensive learning data for AI research applications ( and this feature is completely for fun and experimental).
While most flashcard tools limit you to two-sided cards, our application provides a unique three-stage learning approach:
- Word β See the vocabulary term
- Example β Context before definition (optional intermediate step)
- Meaning β Final definition reveal
This progression mimics natural language acquisition and allows learners to build context before seeing direct translations, at least for me this approach helped and I like to think its better approach.
- Spaced Repetition Algorithm: Intelligently schedules reviews based on your performance
- Three-Sided Flashcards: Word β Example β Meaning progression
- Vim-Inspired Keybindings: Efficient navigation for power users, plus helps you learning touch typing
- Multi-Language Support: Automatic language detection for pronunciation
- Comprehensive Learning Metrics: Track study time, accuracy, and progress patterns
- Machine Learning Ready: Generates datasets suitable for memory research
- Performance Analytics: Session statistics and long-term progress tracking
- Export Capabilities: Data ready for neural network training
- Automatic Backups: Scheduled backups with configurable retention
- CSV-Based Storage: Lightweight, portable, and version-controllable
- Data Recovery: Built-in backup restoration system
- Performance Optimized: Handles large vocabularies efficiently
- Intuitive Interface: Clean, distraction-free design
- Real-Time Pronunciation: Text-to-speech with automatic language detection
- Progress Visualization: Session stats and accuracy tracking
- Responsive Controls: Both keyboard and mouse support
Python 3.8+
-
Clone the repository
git clone https://github.com/Andebugulin/ankara.git cd ankara
-
Create virtual environment (recommended)
python -m venv venv source venv/bin/activate # Linux/macOS # or venv\Scripts\activate # Windows
-
Install dependencies
pip install -r requirements.txt
-
Run the application
python ankara.py
pygame
- GUI frameworkpandas
- Data manipulationgtts
- Text-to-speech functionalitypathlib
- Modern path handlinglangdetect
- Language detection
-
Prepare your vocabulary data in CSV format:
word,meaning,example serendipity,pleasant surprise,Finding that book was pure serendipity ephemeral,lasting very briefly,The ephemeral beauty of cherry blossoms
-
Place the CSV file in the application directory in flashcard_data/words.csv
-
Launch the application and follow the on-screen instructions
N
- Next cardP
- Previous card0
- Skip 10 cards forward<
- Switch language for pronunciation manually>
- Switch language for pronunciation manually
F
- Show wordD
- Show meaningS
- Show exampleA
- Play pronunciation (auto-detects language)
H
- Don't remember (1)J
- Hard (2)K
- Normal (3)L
- Nice (4)I
- Very impressive (5)
ESC
- Save and exit
For maximum efficiency, position your hands like this:
Left Hand: A
S
D
F
(ring β index fingers)
Right Hand: H
J
K
L
(index β pinky fingers)
This Vim-inspired layout minimizes hand movement and maximizes learning speed.
ankara.py # Main application script
requirements.txt # Python dependencies
flashcard_data/
βββ words.csv # Main vocabulary database
βββ config.json # Application settings
βββ backups/ # Automatic backup storage
βββ words_backup_20241201_120000.csv
βββ words_backup_20241130_120000.csv
The application collects comprehensive learning metrics:
# Per-word analytics
- study_sessions: int # Times studied
- total_study_time: float # Cumulative study time
- correct_answers: int # Successful recalls
- total_answers: int # Total attempts
- accuracy_rate: float # Success percentage
- class_progression: list # Spaced repetition history
This data structure enables research into:
- Memory retention patterns
- Optimal review scheduling
- Individual learning differences
- Vocabulary acquisition modeling
Edit flashcard_data/config.json
:
{
"auto_backup": true,
"backup_interval_days": 7,
"max_backups": 10,
"last_backup": "20250912_143722",
"pronunciation_language": "en"
}
For large vocabularies (10,000+ words):
- Increase chunk size in data loading
- Adjust backup frequency
- Consider SSD storage for better I/O performance
This tool is designed for academic research in:
- Cognitive Science: Memory and learning pattern analysis
- Educational Technology: Adaptive learning algorithm development
- Natural Language Processing: Vocabulary acquisition modeling
- Human-Computer Interaction: Interface optimization studies
For research collaboration:
- Export anonymized learning data
- Follow ethical guidelines for educational data
- Contribute to open learning research initiatives
We welcome contributions! Here's how to get started:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
- Follow PEP 8 style guidelines
- Add unit tests for new features
- Update documentation for API changes
- Ensure cross-platform compatibility
This project is licensed under the MIT License - see the LICENSE file for details.
- Inspired by proven spaced repetition research
- Built for the open-source learning community
- Designed with accessibility and efficiency in mind
Made with β€οΈ for learners and researchers worldwide