Update deps
This commit is contained in:
parent
7ad5b66856
commit
ec29631c44
7 changed files with 58 additions and 19 deletions
17
CLAUDE.md
17
CLAUDE.md
|
|
@ -15,11 +15,14 @@ All commands use [Task](https://taskfile.dev) runner. Python uses `uv run`. Fron
|
|||
```bash
|
||||
# Development servers
|
||||
task dev:server # Rust backend on :8001 (cargo run --release)
|
||||
task dev:frontend # Webpack dev server on :3000 (proxies /api to :8001)
|
||||
task dev:frontend # Webpack dev server on :3001 (proxies /api to :8001)
|
||||
|
||||
# Data pipeline
|
||||
task prepare # Build wide.parquet from all pre-downloaded sources
|
||||
|
||||
# Assets
|
||||
task download:map-assets # Download font glyphs + twemoji PNGs into frontend/public/assets/
|
||||
|
||||
# Quality
|
||||
task lint # Lint all: Python (ruff) + TypeScript (ESLint+Prettier) + Rust (clippy+fmt)
|
||||
task format # Auto-fix formatting for all languages
|
||||
|
|
@ -130,10 +133,10 @@ React 18 + TypeScript. deck.gl `H3HexagonLayer` over MapLibre GL. TailwindCSS. N
|
|||
- `POSTCODE_ZOOM_THRESHOLD = 15`: below 15 shows H3 hexagons, at/above 15 shows postcode polygons
|
||||
- Viewport bounds computed via `getBoundsFromViewState()` in `map-utils.ts` — uses Web Mercator math with **TILE_SIZE=512** (MapLibre/deck.gl convention, NOT 256)
|
||||
- Properties pane uses feature names from API response (human-readable), not hardcoded field names
|
||||
- Proxy: dev server on :3000 proxies `/api` to :8001; also handles VS Code `/proxy/PORT` patterns
|
||||
- Proxy: dev server on :3001 proxies `/api` to :8001; also handles VS Code `/proxy/PORT` patterns
|
||||
|
||||
**Shared UI Components (`frontend/src/components/ui/`):**
|
||||
- `Icons.tsx` — Central icon library (CloseIcon, InfoIcon, EyeIcon, PlusIcon, ChevronIcon, FilterIcon, LightbulbIcon). All icons accept `className` prop for sizing.
|
||||
- `icons/` — One file per icon (CloseIcon, InfoIcon, EyeIcon, PlusIcon, ChevronIcon, FilterIcon, LightbulbIcon, DownloadIcon, MapPinIcon, CheckIcon, ClipboardIcon, SunIcon, MoonIcon, SpinnerIcon). All accept `className` prop. **Never inline SVGs** — always extract to this folder.
|
||||
- `IconButton.tsx` — Reusable icon button wrapper with consistent hover states. Accepts `active` prop for teal highlight.
|
||||
- `SearchInput.tsx` — Styled search input with dark mode support. Used in Filters, POIPane, PropertiesPane.
|
||||
- `PaneHeader.tsx` — Reusable pane header with title, optional subtitle, info button, and close button.
|
||||
|
|
@ -221,9 +224,11 @@ Every UI element must use the correct token from this table. Do not invent new p
|
|||
- Deck.gl postcode labels (RGB arrays): `[220,220,220,220]` text / `[30,30,30,200]` outline in dark; inverse in light.
|
||||
|
||||
**Map basemaps:**
|
||||
- Light: `https://basemaps.cartocdn.com/gl/voyager-gl-style/style.json`
|
||||
- Dark: `https://basemaps.cartocdn.com/gl/dark-matter-gl-style/style.json`
|
||||
- `handleMapLoad` must only apply label/water tweaks in light mode. Dark Matter has good defaults.
|
||||
- Self-hosted Protomaps tiles served from PMTiles via `/api/tiles/{z}/{x}/{y}`
|
||||
- Style built by `@protomaps/basemaps` library with `namedFlavor(theme)` for light/dark
|
||||
- Font glyphs and twemoji PNGs served locally from `frontend/public/assets/` (no external CDN deps at runtime)
|
||||
- `CopyWebpackPlugin` copies `frontend/public/` → `dist/` on build; Rust `ServeDir` fallback serves them in prod
|
||||
- Download assets with `task download:map-assets` (script: `scripts/download_map_assets.py`)
|
||||
|
||||
**HomePage (landing page):**
|
||||
- Page bg: `bg-warm-50 dark:bg-warm-900`
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue