You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CLAUDE.md
+4-8Lines changed: 4 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -30,7 +30,7 @@ Static SPA for AI/ML Korean terminology glossary. No backend; all data is JSON f
30
30
-`/term/:termId` → `TermDetailPage` (accordion per meaning, related terms)
31
31
-`/about` → `AboutPage`
32
32
33
-
**Data flow**: `data/index.json` lists alphabet JSON files (`a.json`..`w.json`). At build time, `prebuild` copies `data/` → `public/data/`. At runtime, `loadTerms.ts` fetches all files in parallel via `Promise.all`, flattens, and sorts. The `useTerms` hook caches this; `useSearch` debounces (200ms) and filters across `term`, `korean`, `domain`, `synonyms`.
33
+
**Data flow**: `data/index.json` lists alphabet JSON files (`a.json`..`w.json`). At build time, `prebuild` copies `data/` → `public/data/`. At runtime, `loadTerms.ts` fetches all files in parallel via `Promise.all`, flattens, and sorts. The `useTerms` hook caches this; `useSearch` debounces (200ms) and filters across `term`, `korean`, `synonyms`.
34
34
35
35
**Homepage**: `SearchPage` embeds `HeroSection` (stats) + `AlphabetNavigation` (A-Z chips) + `TermCard` grid. The `Layout` component wraps non-home pages with AppBar + footer; home page hides AppBar.
examples: (string|TermExample)[] // Union type for backward compat
48
47
synonyms:string[]
@@ -55,8 +54,6 @@ interface Term {
55
54
}
56
55
```
57
56
58
-
Domain colors are mapped in `utils/domainColors.ts` (29 domains). New domains need a color entry there.
59
-
60
57
**Examples format**: Prefer `TermExample` objects (`{en, ko, source?}`) over plain strings. Both are supported. `TermDetailPage` uses `isTermExample()` type guard to render accordingly.
61
58
62
59
**Optional fields**: `issueNumber` links to the GitHub Issue where the term was discussed. `notes` provides editorial context. Both are set automatically by the co-author workflow, or manually when adding terms via PR.
@@ -65,9 +62,8 @@ Domain colors are mapped in `utils/domainColors.ts` (29 domains). New domains ne
65
62
66
63
1. Edit the appropriate `data/{letter}.json` file
67
64
2. If creating a new letter file, add it to `data/index.json`
68
-
3. Required fields per meaning: `korean`, `domain` (no spaces), `definition`
69
-
4. Domain names must have no spaces (e.g., `컴퓨터비전` not `컴퓨터 비전`)
3. Required fields per meaning: `korean`, `definition`
66
+
4. CI validates: JSON syntax, required fields, TermExample `en`/`ko` presence
71
67
72
68
## Co-author Workflow
73
69
@@ -81,7 +77,7 @@ Domain colors are mapped in `utils/domainColors.ts` (29 domains). New domains ne
81
77
82
78
## CI/CD
83
79
84
-
`.github/workflows/deploy.yml`: On push to `poc`, validates term data → builds → deploys to GitHub Pages. The validation step checks all JSON files for required fields, domain spacing, TermExample structure, and optional field types (`issueNumber`, `notes`).
80
+
`.github/workflows/deploy.yml`: On push to `poc`, validates term data → builds → deploys to GitHub Pages. The validation step checks all JSON files for required fields, TermExample structure, and optional field types (`issueNumber`, `notes`).
85
81
86
82
`.github/workflows/term-coauthor.yml`: Co-author workflow (see above).
0 commit comments