Skip to content

seb0305/Aenigma

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

25 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Aenigma Verborum

Web-based Latin-German Vocabulary Trainer with Adaptive Quizzes & Collectible Cards

Python Flask SQLite JavaScript

๐ŸŽฏ Features

Feature Description
Personal Vocab Book Add/edit/delete Latin words + German translations with word type (Noun/Verb) & flexion info
Adaptive Quizzes Multiple choice focusing on weak words (<95% accuracy or <100 attempts)
Verb Sorting Game Drag verbs to correct conjugation categories (I, II, III, IV Konjugation)
Performance Tracking Real-time accuracy % per word with answer history
Bronze Card System Unlock collectible cards at 90%+ accuracy (AI-generated descriptions)
AI Wrong Answers OpenAI generates plausible distractors (never true meanings from FragCaesar + DB)

๐Ÿ—๏ธ Tech Stack

Frontend: Vanilla HTML/CSS/JS + Drag & Drop API Backend: Flask + SQLAlchemy + SQLite AI: OpenAI GPT-4.1-mini (wrong answer generation) Scraping: FragCaesar.de (true German meanings for Latin words) Deployment: Ready for Render/Heroku/Vercel

๐Ÿš€ Quick Start

# Clone & install
git clone https://github.com/seb0305/Aenigma-Verborum.git
cd Aenigma-Verborum
pip install -r requirements.txt

# Set OpenAI key
export OPENAI_API_KEY="sk-..."

# Run
flask run
# Visit http://localhost:5000

๐ŸŽฎ How to Play

  1. Build Your Vocab Book

Vocab โ†’ Add "amare" (lieben) โ†’ Verb โ†’ I-Konjugation Vocab โ†’ Add "currere" (laufen) โ†’ Verb โ†’ III-Konjugation 2. Adaptive Quiz Mode Focuses on weak words automatically

4 options: 1 correct + 3 AI-generated wrong answers

Tracks accuracy per word

  1. Verb Sorting Challenge

Drag "amล, amฤs, amat" โ†’ I-Konjugation Drag "currล, curris, currit" โ†’ III-Konjugation Answer all verbs once per round โ†’ Quiz Complete! 4. Earn Bronze Cards text 90%+ accuracy โ†’ "Bronze card for amare unlocked!" View collection in Cards tab

๐Ÿง  Adaptive Algorithm

Weak Word = accuracy < 95% OR total_answers < 100 Quiz prioritizes weakest 10 words True meanings = DB translation + FragCaesar scrapes AI distractors = GPT-4.1-mini (filtered: never true meanings)

๐Ÿ“Š Database Schema

erDiagram User ||--o{ VocabEntry : owns User ||--o{ QuizRound : "starts" QuizRound ||--o{ QuizAnswer : "contains" QuizAnswer }o--|| VocabEntry : "rates" VocabEntry ||--o{ Card : "unlocks" User ||--o{ UserCard : "collects"

๐Ÿ”ฎ Future Roadmap

Silver/Gold cards (95%/99% accuracy)

Noun declension sorting game

Leaderboards & daily challenges

Image generation for cards (DALL-E 3)

Mobile PWA support

Multi-language (Latin-English, Latin-French)

๐Ÿ› Known Issues (Fixed) โœ… Infinite verb sorting โ†’ QuizAnswer tracking per round โœ… Model column mismatches โ†’ quiz_round_id/vocab_entry_id โœ… AI duplicate answers โ†’ Strict filtering + retry logic โœ… Bronze card logic โ†’ 90% threshold + cleanup

๐Ÿ“ Development

# Add dev dependencies
pip install python-dotenv flask-cors

# Debug mode
flask --debug run

# Test endpoints
curl -X POST http://localhost:5000/api/quiz/verbs/start
curl http://localhost:5000/api/quiz/verbs/next

๐Ÿ™Œ Contributing

Fork & clone

Add Latin verbs to VocabEntry (especially with flexion_type)

Test sorting quiz โ†’ Submit PR

Bonus: Improve AI prompts or card designs!

๐Ÿ“„ License

MIT - Free for educational use!

Built with โค๏ธ for Latin students Latin: "Amare et sapere vix deo conceditur" (Even a god can hardly love and be wise at the same time)

About

๐Ÿ›๏ธ Web-based Latin vocabulary game for students | Deployed on Render

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors