Skip to content

Advanced flashcard learning tool with smart spaced repetition, auto-language detection, and performance tracking. Built with Python/Pygame for efficient vocabulary acquisition

License

Notifications You must be signed in to change notification settings

Andebugulin/ankara

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

30 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Enhanced Flashcard Learning Tool - "Ankara"

Enhanced Flashcard Learning Tool Logo

An intelligent, data-driven vocabulary learning application with spaced repetition and comprehensive analytics

Python Version Platform Support License


πŸš€ Overview

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).

🎯 Key Innovation

While most flashcard tools limit you to two-sided cards, our application provides a unique three-stage learning approach:

  1. Word β†’ See the vocabulary term
  2. Example β†’ Context before definition (optional intermediate step)
  3. 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.

✨ Features

🧠 Advanced Learning System

  • 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

πŸ“Š Data Analytics & AI Integration

  • 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

πŸ›‘οΈ Robust Data Management

  • 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

🎨 User Experience

  • 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

πŸ› οΈ Installation

Prerequisites

Python 3.8+

Quick Setup

  1. Clone the repository

    git clone https://github.com/Andebugulin/ankara.git
    cd ankara
  2. Create virtual environment (recommended)

    python -m venv venv
    source venv/bin/activate  # Linux/macOS
    # or
    venv\Scripts\activate     # Windows
  3. Install dependencies

    pip install -r requirements.txt
  4. Run the application

    python ankara.py

Dependencies

  • pygame - GUI framework
  • pandas - Data manipulation
  • gtts - Text-to-speech functionality
  • pathlib - Modern path handling
  • langdetect - Language detection

πŸ“– Usage Guide

Initial Setup

  1. 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
    
  2. Place the CSV file in the application directory in flashcard_data/words.csv

  3. Launch the application and follow the on-screen instructions

Keyboard Controls

Navigation

  • N - Next card
  • P - Previous card
  • 0 - Skip 10 cards forward
  • < - Switch language for pronunciation manually
  • > - Switch language for pronunciation manually

Card Views

  • F - Show word
  • D - Show meaning
  • S - Show example
  • A - Play pronunciation (auto-detects language)

Evaluation (Spaced Repetition)

  • H - Don't remember (1)
  • J - Hard (2)
  • K - Normal (3)
  • L - Nice (4)
  • I - Very impressive (5)

System

  • ESC - Save and exit

Optimal Hand Positioning

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.

πŸ“ Project Structure

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

πŸ“Š Data Collection & AI Applications

Learning Analytics

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

AI Research Applications

This data structure enables research into:

  • Memory retention patterns
  • Optimal review scheduling
  • Individual learning differences
  • Vocabulary acquisition modeling

βš™οΈ Configuration

Backup Settings

Edit flashcard_data/config.json:

{
  "auto_backup": true,
  "backup_interval_days": 7,
  "max_backups": 10,
  "last_backup": "20250912_143722",
  "pronunciation_language": "en"
}

Performance Tuning

For large vocabularies (10,000+ words):

  • Increase chunk size in data loading
  • Adjust backup frequency
  • Consider SSD storage for better I/O performance

πŸ”¬ Research Applications

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

Data Sharing Protocol

For research collaboration:

  1. Export anonymized learning data
  2. Follow ethical guidelines for educational data
  3. Contribute to open learning research initiatives

🀝 Contributing

We welcome contributions! Here's how to get started:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Development Guidelines

  • Follow PEP 8 style guidelines
  • Add unit tests for new features
  • Update documentation for API changes
  • Ensure cross-platform compatibility

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

  • 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

About

Advanced flashcard learning tool with smart spaced repetition, auto-language detection, and performance tracking. Built with Python/Pygame for efficient vocabulary acquisition

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages