Skip to content

jongreenall/languagesite

Repository files navigation

LanguageSite

LanguageSite is a Spanish learning web app for fast, repeatable practice with timed quizzes, adaptive weighting, and a trouble board.

Built with Codex.

Current functionality

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

Home screen layout

  • Personal dictionary actions are shown first:
    • Personal Dictionary
    • Add to personal dictionary
  • Default games are shown in a separate "Default games" section.

Tech stack

  • Backend: Java 17, Spring Boot
  • Frontend: React + Vite
  • Build tooling: Gradle (includes frontend tasks)

Run locally

Backend

.\gradlew.bat bootRun

API base URL: http://localhost:8080

Frontend

.\gradlew.bat frontendDev

Frontend URL: http://localhost:5173

Tests

.\gradlew.bat test

Production frontend build

.\gradlew.bat frontendBuild

Data persistence

  • Learner profile: data/learner-profile.json
  • Personal dictionary: data/personal-dictionary.json
    • Contains active categories, archived categories, active entries, and archived entries.

About

Flashcard tool for language learning

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors