word-match
Word Match is a web application built for Turkish speakers to practise English vocabulary.
- ASP.NET Core
- React
- TypeScript
- EF Core
- PostgreSQL
- Tailwind CSS
Purpose and Scope
A web application for practising English vocabulary by level and category. The current Practice flow offers multiple-choice and written questions in English-to-Turkish, Turkish-to-English and mixed directions. Sessions and word progress are persisted for each user.
Architecture and Repository Structure
WordMatch.API: ASP.NET Core API, with authentication, practice sessions and the word catalogue underFeatures/Auth,Features/PracticeandFeatures/Words.WordMatch.Web: React and TypeScript client with feature-based pages, TanStack Query and a shared API client.Data/WordMatch.csv: the vocabulary source file.WordMatch.API.Testsand frontend test files: service, endpoint and interface behaviour.
EF Core stores data in PostgreSQL. ASP.NET Core Identity cookies maintain browser sessions, with XSRF validation for requests that change data.
Workflow
After signing in, the user selects a level, category and practice direction. The API creates a question plan and saves question and answer snapshots in the session. The client displays questions in sequence; answers update session results and word progress. Users can resume an active session, replay completed material or reset category progress.
Technical Decisions
PracticeQuestionFactory owns question generation. Wrong choices are selected first from session words, then from the same level and finally from the full catalogue when needed. Written answers use Unicode normalisation and culture-aware comparison for Turkish.
Answer recording and progress updates run inside a database transaction. Keeping question snapshots in the session ties the displayed question and answer evaluation to the same stored data.
Limits and Validation
The reviewed version implements category-based Practice. Learn, Review and the four-dimensional mastery model remain planned work in the repository documentation. There is no automatic, repeatable CSV bootstrap command in this revision, so the initial vocabulary import is a separate step.
The repository contains API tests and a Vitest frontend suite. This review inspected source code; it did not run the application services or those test suites.
Sources
Reviewed on 8 September 2026. Reviewed revision (7d5efd9).