lucianoandClaude Opus 4.7 221b567d45 fix(ui): hydration mismatch su /tracking e /plan (date calcolate client-side)
I React errors #418/#423/#425 segnalati dal browser nel flow di salvataggio check-in: l'HTML server-rendered divergeva dal client-rendered, causando `Text content does not match`. La submit del check-in falliva silenziosamente.

Cause:
- `weight-entry-form.tsx` calcolava `todayISO()` (basato su `new Date()`) dentro `defaultValues` di `useForm`. Il render avviene sia SSR che hydration, e fra i due il valore può differire (anche di pochi ms attraverso la mezzanotte locale, oppure per fuso orario server vs client).
- `plan-week.tsx` con `todayDayOfWeek()` aveva lo stesso problema sul pannello macros.

Fix: il valore viene calcolato server-side nel rispettivo Server Component (`tracking/page.tsx`, `plan/page.tsx`) e passato come prop al Client Component. Stabile attraverso SSR e hydration perché serializzato nell'HTML iniziale.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-07 15:23:56 +02:00
2026-04-29 12:10:08 +02:00
2026-04-29 12:10:08 +02:00
2026-04-29 12:10:08 +02:00
2026-04-29 12:10:08 +02:00
2026-04-29 12:10:08 +02:00
2026-04-29 12:10:08 +02:00

KetoPath

Web app responsive multi-utente per la gestione personalizzata di chetogenica e digiuno intermittente.

Vedi CLAUDE.md per le convenzioni di progetto e docs/PRD_KetoPath.docx per il PRD completo.

Prerequisiti

  • Node.js >=20.11 (vedi .nvmrc)
  • pnpm >=9 (corepack enable && corepack prepare pnpm@latest --activate)

Getting started

pnpm install
pnpm typecheck
pnpm lint
pnpm format:check

Struttura del monorepo

apps/
  web/              # Next.js 14 frontend (da scaffoldare)
  api/              # Fastify backend (da scaffoldare)
packages/
  shared/           # Tipi e utility di dominio
  ui/               # Componenti UI riusabili
  db/               # Prisma client (da scaffoldare)
  tsconfig/         # tsconfig presets condivisi
  eslint-config/    # ESLint config condivisa
docs/
  PRD_KetoPath.docx

Script disponibili

  • pnpm dev — avvia tutte le app in parallelo
  • pnpm dev:web / pnpm dev:api — avvia singola app
  • pnpm build — build di produzione
  • pnpm lint / pnpm lint:fix — ESLint
  • pnpm format / pnpm format:check — Prettier
  • pnpm typecheck — tsc -b su tutto il monorepo
  • pnpm test — Vitest (unit test)
  • pnpm test:e2e — Playwright (E2E)
S
Description
No description provided
Readme
665 KiB
0 Stars 1 Watchers 0 Forks
Languages
TypeScript 97.3%
CSS 1.7%
JavaScript 1%