LanguageSite is a Spanish learning web app for fast, repeatable practice with timed quizzes, adaptive weighting, and a trouble board.
Built with Codex.
- Numbers: 20 questions split between number -> Spanish and Spanish -> number.
- Numbers (Spanish Written Only): 20 Spanish word prompts, choose the correct number.
- Common Words or Phrases: 20 questions split between Spanish -> English and English -> Spanish.
- Personal Dictionary game:
- Uses user-created translated pairs.
- User selects one or more categories before starting.
- Uses up to 20 entries (or all if fewer than 20).
- Mixed directions (Spanish -> English and English -> Spanish).
- Six options per question, with generated distractors when needed.
- Personal Dictionary builder:
- Create, edit, and archive categories.
- Add, edit, and delete translated pairs within categories.
- Duplicate translated pairs are blocked within the same category.
- Archive category moves its entries to archive.
- Restore category brings it back from archive (auto-renames to generic "Restored Category" names on conflicts).
- Trouble board:
- Adaptive weighting based on incorrect/correct answers.
- Category filter for personal-dictionary items.
- When category filters are applied, only personal-dictionary items for selected categories are shown.
- Audio:
- Spanish prompts are spoken in-browser via Web Speech API when available.
- Personal dictionary actions are shown first:
- Personal Dictionary
- Add to personal dictionary
- Default games are shown in a separate "Default games" section.
- Backend: Java 17, Spring Boot
- Frontend: React + Vite
- Build tooling: Gradle (includes frontend tasks)
.\gradlew.bat bootRunAPI base URL: http://localhost:8080
.\gradlew.bat frontendDevFrontend URL: http://localhost:5173
.\gradlew.bat test.\gradlew.bat frontendBuild- Learner profile:
data/learner-profile.json - Personal dictionary:
data/personal-dictionary.json- Contains active categories, archived categories, active entries, and archived entries.