35 lines
1.6 KiB
Markdown
35 lines
1.6 KiB
Markdown
# CLAUDE.md
|
|
|
|
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
|
|
|
## Commands
|
|
|
|
```bash
|
|
npm start # Dev server (production mode)
|
|
npm run build # Production build
|
|
npm run build:staging # Staging build
|
|
npm run fmt # Format with Prettier (*.js, style.css, index.html)
|
|
```
|
|
|
|
No test suite exists. Prettier is the only code quality tool.
|
|
|
|
## Architecture
|
|
|
|
This is a static IoT learning portal — a single-page app built with vanilla JS and Vite. No framework.
|
|
|
|
**Module responsibilities:**
|
|
- `main.js` — entry point, calls `initApp()`
|
|
- `app.js` — application lifecycle: reads localStorage, wires event listeners, orchestrates everything
|
|
- `data.js` — registry of external learning platform links (OJ, code runners, books, etc.)
|
|
- `render.js` — generates HTML for site cards and pins from `data.js` entries
|
|
- `i18n.js` — translation system with a `t()` function; supports 11 language variants (Chinese variants, EN, JA, KO, plus joke languages: wenyan, mars, garbled, binary, meow, emoji)
|
|
- `theme.js` — manages 4 design themes (Fluent, Material You, Terminal, Cyberpunk) and dark/light toggle
|
|
|
|
**Data flow:** `app.js` → reads prefs from `localStorage` → calls `render.js` to build the card grid from `data.js` → applies theme via `theme.js` → uses `i18n.js` for all UI strings.
|
|
|
|
**State persistence:** language, design theme, and dark/light preference are all stored in `localStorage`.
|
|
|
|
**Site URLs** are injected at build time via `import.meta.env.VITE_*` environment variables.
|
|
|
|
**Themes:** Terminal and Cyberpunk force dark mode; the light/dark toggle is disabled for those themes.
|