main
Japanese Word Trainer Deck Registry
This repository is the public word-deck data registry for the 0.3 package model. It keeps JSON as the source of truth and publishes zip package artifacts that the app can download and verify.
Layout
registry.jsonis the root registry file read by the app.sources/official/<slug>/contains editable official deck package JSON.sources/custom/<slug>/contains editable published custom deck package JSON.packages/*.zipcontains generated app-installable package artifacts.scripts/build_packages.pybuilds packages and refreshes registry checksums.scripts/validate_registry.pyvalidates source JSON, packages, and checksums.
Each package zip contains exactly:
manifest.json
words.json
refs.json
Build
Run from the repository root:
python3 scripts/build_packages.py
python3 scripts/validate_registry.py
build_packages.py fills each word contentHash, creates deterministic zip
files in packages/, and updates registry.json with wordCount, packageUrl,
and sha256.
By default, generatedAt is left unchanged to avoid noisy rebuild diffs. Use
--update-generated-at when intentionally publishing a freshly generated
registry:
python3 scripts/build_packages.py --update-generated-at
Package Rules
- Stable deck keys use
{registryId}:deck:{slug}. - Stable word keys use
{registryId}:word:{slug-or-id}. versionCodechanges when package content changes.contentHashis computed from a word record excludingcontentHash.refs.jsonowns deck membership and display order. A ref may point to a word supplied by the same package or to an already installed dependency such as an official deck word.- The same package shape is used for official, registry custom, imported, and local-exported decks.
Current Decks
official:deck:jlpt-n5is a tiny official sample based lightly on the app seed vocabulary. It is not the full JLPT N5 set.community:deck:japan-travel-essentialsis a cleaned custom deck generated from the user-provided Japan travel CSV, with example sentences added for app-side import and study testing.
This repository is still intentionally small so app migration, import, and checksum handling can be tested before the full public deck corpus is populated.
Description
Languages
Python
100%