# baileysnyder/japanese-conjugation architecture

> Architecture diagram of the GitHub repository baileysnyder/japanese-conjugation, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/baileysnyder/japanese-conjugation
- Repository: https://github.com/baileysnyder/japanese-conjugation

## Overview

Japanese Conjugation Practice is a browser-based practice app for Japanese verb and adjective conjugations, with basic spaced repetition. A learner enters Japanese answers; the app presents a generated conjugation prompt, checks the response, and tracks streaks and scores. Settings let learners choose which word and conjugation categories to practice and control display options. The excerpts show the main app, settings, data, and helper modules, but not the full UI or all runtime wiring; edges are limited to relationships supported by the excerpts, source index, or README.

Main entry points: [`src/main.js`](https://github.com/baileysnyder/japanese-conjugation/blob/master/src/main.js) (Practice app), [`src/settingManagement.js`](https://github.com/baileysnyder/japanese-conjugation/blob/master/src/settingManagement.js) (Practice settings), [`src/constants.js`](https://github.com/baileysnyder/japanese-conjugation/blob/master/src/constants.js) (Practice constants), [`src/utils.js`](https://github.com/baileysnyder/japanese-conjugation/blob/master/src/utils.js) (Display helpers)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_practice["Practice session"]
  node_app["Practice app<br/>[main.js]"]
  node_conjugation["Conjugation generation<br/>[main.js]"]
  node_question["Question selection<br/>[main.js]"]
  node_answer["Answer checking<br/>[main.js]"]
  node_review["Repeat scheduling<br/>[main.js]"]
end

subgraph group_configuration["Settings and scoring"]
  node_settings["Practice settings"]
  node_score["Streak and scores<br/>[main.js]"]
end

subgraph group_content["Learning content"]
  node_words["Verb and adjective data<br/>[wordData.js]"]
end

subgraph group_shared["Shared runtime"]
  node_constants["Practice constants<br/>[constants.js]"]
  node_display["Display helpers<br/>[utils.js]"]
  node_kana["Japanese input support"]
end

node_learner(("Learner"))
node_browser[("Browser storage")]

node_learner -->|"practices with"| node_app
node_app -->|"generates forms"| node_conjugation
node_app -->|"selects prompts"| node_question
node_app -->|"checks input"| node_answer
node_app -->|"updates probabilities"| node_review
node_app -->|"tracks streaks"| node_score
node_app -->|"uses display settings"| node_settings
node_settings -->|"filters practice words"| node_app
node_app -->|"loads vocabulary"| node_words
node_app -->|"uses conjugation types"| node_constants
node_app -->|"toggles display"| node_display
node_settings -->|"uses setting definitions"| node_constants
node_settings -->|"toggles visibility"| node_display
node_settings -->|"converts score records"| node_score
node_score -.->|"stores scores"| node_browser
node_app -->|"binds Japanese input"| node_kana

click node_app "https://github.com/baileysnyder/japanese-conjugation/blob/master/src/main.js"
click node_conjugation "https://github.com/baileysnyder/japanese-conjugation/blob/master/src/main.js"
click node_question "https://github.com/baileysnyder/japanese-conjugation/blob/master/src/main.js"
click node_answer "https://github.com/baileysnyder/japanese-conjugation/blob/master/src/main.js"
click node_review "https://github.com/baileysnyder/japanese-conjugation/blob/master/src/main.js"
click node_settings "https://github.com/baileysnyder/japanese-conjugation/blob/master/src/settingManagement.js"
click node_score "https://github.com/baileysnyder/japanese-conjugation/blob/master/src/main.js"
click node_words "https://github.com/baileysnyder/japanese-conjugation/blob/master/src/wordData.js"
click node_constants "https://github.com/baileysnyder/japanese-conjugation/blob/master/src/constants.js"
click node_display "https://github.com/baileysnyder/japanese-conjugation/blob/master/src/utils.js"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_app,node_conjugation,node_question,node_answer,node_review toneBlue
class node_settings,node_score,node_browser toneAmber
class node_words toneMint
class node_constants,node_display,node_kana toneRose
class node_learner toneIndigo
```

## Components

### Practice session

- [Practice app](https://github.com/baileysnyder/japanese-conjugation/blob/master/src/main.js): `src/main.js`
- [Conjugation generation](https://github.com/baileysnyder/japanese-conjugation/blob/master/src/main.js): `src/main.js`
- [Question selection](https://github.com/baileysnyder/japanese-conjugation/blob/master/src/main.js): `src/main.js`
- [Answer checking](https://github.com/baileysnyder/japanese-conjugation/blob/master/src/main.js): `src/main.js`
- [Repeat scheduling](https://github.com/baileysnyder/japanese-conjugation/blob/master/src/main.js): `src/main.js`

### Settings and scoring

- [Practice settings](https://github.com/baileysnyder/japanese-conjugation/blob/master/src/settingManagement.js): `src/settingManagement.js`
- [Streak and scores](https://github.com/baileysnyder/japanese-conjugation/blob/master/src/main.js): `src/main.js`

### Learning content

- [Verb and adjective data](https://github.com/baileysnyder/japanese-conjugation/blob/master/src/wordData.js): `src/wordData.js`

### Shared runtime

- [Practice constants](https://github.com/baileysnyder/japanese-conjugation/blob/master/src/constants.js): `src/constants.js`
- [Display helpers](https://github.com/baileysnyder/japanese-conjugation/blob/master/src/utils.js): `src/utils.js`
- **Japanese input support**

### Other components

- **Learner**
- **Browser storage**

## Connections

- Learner → Practice app: practices with (evidence: `README.md`)
- Practice app → Conjugation generation: generates forms (evidence: `src/main.js`)
- Practice app → Question selection: selects prompts (evidence: `src/main.js`)
- Practice app → Answer checking: checks input (evidence: `src/main.js`)
- Practice app → Repeat scheduling: updates probabilities (evidence: `src/main.js`)
- Practice app → Streak and scores: tracks streaks (evidence: `src/main.js`)
- Practice app → Practice settings: uses display settings (evidence: `src/main.js`)
- Practice settings → Practice app: filters practice words (evidence: `src/settingManagement.js`)
- Practice app → Verb and adjective data: loads vocabulary (evidence: `src/main.js`)
- Practice app → Practice constants: uses conjugation types (evidence: `src/main.js`)
- Practice app → Display helpers: toggles display (evidence: `src/main.js`)
- Practice settings → Practice constants: uses setting definitions (evidence: `src/settingManagement.js`)
- Practice settings → Display helpers: toggles visibility (evidence: `src/settingManagement.js`)
- Practice settings → Streak and scores: converts score records (evidence: `src/settingManagement.js`)
- Streak and scores → Browser storage: stores scores
- Practice app → Japanese input support: binds Japanese input (evidence: `src/main.js`)
