feat: setup Next.js WebGL map baseline and dark-mode frame (#1) #9

Merged
yuris merged 1 commit from feat/issue-1-webgl-baseline into main 2026-10-14 19:48:22 +00:00
Owner

Closes #1

What was built

  • Setup Next.js App Router workspace with TypeScript, Tailwind CSS, and Vite+ (vp) toolchain.
  • Mount full-viewport MapLibre GL JS (v5) canvas centered on Indonesia [118.0149, -2.5489] with bounding box constraints [[94.0, -11.5], [141.5, 6.5]].
  • Add floating monospace coordinates & camera zoom level HUD (JetBrains Mono).
  • Add dark-mode application header (#0e1110).
  • Configure Plus_Jakarta_Sans & JetBrains_Mono fonts via next/font/google.
  • Mobile dynamic viewport stabilization (w-full h-dvh).
  • Reduced motion preference support (motion-safe:animate-pulse).

Verification

  • pnpm exec vp check: 0 errors, 0 warnings across 73 files.
  • pnpm build: Successful static standalone prerender.
  • Map renders with stable WebGL context across re-renders via useRef callback pattern.
Closes #1 ### What was built - Setup Next.js App Router workspace with TypeScript, Tailwind CSS, and Vite+ (`vp`) toolchain. - Mount full-viewport MapLibre GL JS (v5) canvas centered on Indonesia `[118.0149, -2.5489]` with bounding box constraints `[[94.0, -11.5], [141.5, 6.5]]`. - Add floating monospace coordinates & camera zoom level HUD (`JetBrains Mono`). - Add dark-mode application header (`#0e1110`). - Configure `Plus_Jakarta_Sans` & `JetBrains_Mono` fonts via `next/font/google`. - Mobile dynamic viewport stabilization (`w-full h-dvh`). - Reduced motion preference support (`motion-safe:animate-pulse`). ### Verification - `pnpm exec vp check`: 0 errors, 0 warnings across 73 files. - `pnpm build`: Successful static standalone prerender. - Map renders with stable WebGL context across re-renders via `useRef` callback pattern.
yuris-bot approved these changes 2026-10-14 19:46:24 +00:00
yuris-bot left a comment

Review Verdict: APPROVED

All 4 review items verified against Issue #1 specifications:

  1. React Map Lifecycle Stability: ref pattern (cbRef updated every render, initialization useEffect on []) verified. Eliminates WebGL context destruction on parent re-render.
  2. Font & Spec Alignment: Configured Plus_Jakarta_Sans and JetBrains_Mono via next/font/google with CSS variables in src/app/layout.tsx.
  3. Dynamic Viewport: Container updated to w-full h-dvh for mobile browser chrome stability.
  4. Reduced Motion A11y: Status indicator dot uses motion-safe:animate-pulse instead of continuous ping.

Verification Gate

  • pnpm exec vp check: 0 errors, 0 warnings across 73 files.
  • pnpm build: Succeeded with clean standalone production prerender in 7.3s.
  • Home route (/) serves full-viewport MapLibre GL v5 WebGL canvas and coordinates HUD.
### Review Verdict: APPROVED All 4 review items verified against Issue #1 specifications: 1. **React Map Lifecycle Stability**: ref pattern (`cbRef` updated every render, initialization `useEffect` on `[]`) verified. Eliminates WebGL context destruction on parent re-render. 2. **Font & Spec Alignment**: Configured `Plus_Jakarta_Sans` and `JetBrains_Mono` via `next/font/google` with CSS variables in `src/app/layout.tsx`. 3. **Dynamic Viewport**: Container updated to `w-full h-dvh` for mobile browser chrome stability. 4. **Reduced Motion A11y**: Status indicator dot uses `motion-safe:animate-pulse` instead of continuous ping. ### Verification Gate - `pnpm exec vp check`: 0 errors, 0 warnings across 73 files. - `pnpm build`: Succeeded with clean standalone production prerender in 7.3s. - Home route (`/`) serves full-viewport MapLibre GL v5 WebGL canvas and coordinates HUD.
yuris-bot approved these changes 2026-10-14 19:47:44 +00:00
yuris-bot left a comment

Approved.

Approved.
yuris-bot approved these changes 2026-10-14 19:48:10 +00:00
yuris-bot left a comment

Approved. All verification criteria met for Issue #1.

Approved. All verification criteria met for Issue #1.
yuris-bot approved these changes 2026-10-14 19:48:14 +00:00
yuris-bot left a comment

Approved. All verification criteria met for Issue #1.

Approved. All verification criteria met for Issue #1.
yuris merged commit 2b33b234af into main 2026-10-14 19:48:22 +00:00
yuris deleted branch feat/issue-1-webgl-baseline 2026-10-14 19:48:22 +00:00
Sign in to join this conversation.
No reviewers
No labels
backend
frontend
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
yuris/titik-gambut-next!9
No description provided.