Language learning events flowing through an API into a learning record store

Overview

The Learning Record Store is the backend component of the Japanese Language Lab, an educational game for learning the Japanese language. Its purpose is to receive learning events through a stable API so exercises can share progress data without being tightly coupled to one application.

A record store can capture events such as practicing kana, answering a vocabulary prompt, or completing a lesson. Keeping those events in a common format creates a basis for progress views, recommendations, and learner-model experiments later on.

Current Scope

The repository is in an early active stage. It provides the FastAPI application, SQLAlchemy persistence layer, local development setup, and automated API tests.

This deliberately small foundation establishes:

  • A typed API built with FastAPI
  • Database persistence with SQLAlchemy
  • Reproducible dependency and environment management with uv
  • HTTP-level testing with pytest
  • A source layout that can grow as record types and integrations are introduced

Planned Direction

The intended architecture separates learning activities from analysis. Practice tools submit records; the service validates and stores them; dashboards or learner models consume the resulting history. This allows the Japanese Language Lab to add experiments without giving every client its own incompatible progress model.