Decide how the glossary data grows: file layout, loading and storage #34
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The whole glossary is one hand-edited file,
public/glossary/graph.json. This issue is about deciding, before it hurts, how the glossary's data should grow: as more terms in the same file, as one file per term, or with a different store.Where it stands (2026-10-16)
glossary.js) and the quiz page (quiz.js) fetch it in the browser, the server loads it into memory at startup (internal/glossary,GRAPH_PATH), and CI'scheck-glossary.mjsreads it.What breaks first
Options
glossary/terms/<id>.jsonwith its outgoing edges), plus topics, edge types and abbreviations in their own files. A small script assemblesgraph.json, which CI runs and checks; the source becomes the reviewed part. This removes the merge conflicts and keeps the page and server unchanged. It adds a build step for the glossary, which AGENTS.md currently rules out forpublic/; ROADMAP'sweb/phase is the natural place for it./api/glossary/<id>or per-term files. Worth it only when download size, not editing, is the problem.Proposal
Split the source when the next large batch of terms lands, or after the first real merge conflict, whichever comes first. Revisit loading in parts at about 1,000 terms. Treat a database, graph or relational, as a later decision driven by a feature that needs runtime changes or deep queries, not by term count.
Related: topics outside tech
Business vocabulary (B2B, ERP, SaaS, …) is wanted too. It belongs in the same graph under a new topic, not a separate file, because the links between the two are the value: ERP to Monolith, SaaS to Serverless. Two things to settle first: every card still needs an edge that holds everywhere, and the daily quiz round would include business terms unless it leaves that topic out or #29 lands first.