|
Download docs/DEV-ONBOARDING.md from HonzaH/Letschat: direct link, hf CLI and curl.
- Browser
- Download file 4.07 kB
-
https://huggingface.co/spaces/HonzaH/Letschat/resolve/main/docs/DEV-ONBOARDING.md
- Command line
-
hf download hf://spaces/HonzaH/Letschat/docs/DEV-ONBOARDING.md
-
curl -L -o DEV-ONBOARDING.md https://huggingface.co/spaces/HonzaH/Letschat/resolve/main/docs/DEV-ONBOARDING.md
4.07 kB
Dev onboarding
Aktualizováno: 2025-12-09T18:28:33.300Z
Cíl: rychlý start pro vývojáře včetně lokálního běhu, testů a synchronizace. Detaily k PR a workflow viz .github/CONTRIBUTING.md (neopakujeme se).
- TypeScript striktní, Zod validace vstupů, důsledný error handling a logging.
- DRY a čistá architektura: sdílené konstanty/utilities/hooks; žádné kopírování kódu ani instrukcí.
- Testovatelnost a výkon: přidej testy před refaktorem; hlídej 80 % statements coverage gate.
- Design/UX: drž se podkladů v
doc/design; komponenty stavěj na stávajícím UI (Tailwind, Zustand, Headless UI). - Design implementation: HTML šablony
doc/design/template/, CSSdoc/design/storage/css/style.css.- Auth:
.page.imageleft(obrázek vlevo, obsah vpravo, bez patičky). - Dashboard/Profil:
.page.full. - Chat:
.page.leftright. - Testovací místnost:
/about?test=1(rychlé UI ověření bez backendu).
- Auth:
- Funkční zadání: ověřuj chování podle
docs/REQUIREMENTS.md(shrnutídoc/lestchat.md).
- Prerequisites
- Node.js 20.
- Nainstaluj závislosti:
npm ci. - Environment:
.env.localsNEXT_PUBLIC_SUPABASE_URL,NEXT_PUBLIC_SUPABASE_ANON_KEY, případněLOCAL_DATABASE_URL,SUPABASE_SERVICE_ROLE_KEY,LOG_LEVEL(all|light|mini|off).ALLOW_IN_MEMORY_FALLBACK=1lze ponechat pro demo/offline běh bez Supabase;LOCAL_FILE_STORE=1+LOCAL_FILE_STORE_PATHumožní file-store místo paměti.ADMIN_API_TOKENchrání/api/admin/logs.NEXT_PUBLIC_SUPABASE_*+SUPABASE_SERVICE_ROLE_KEYjsou nutné pro login/registraci. Secrets patří do GitHub Secrets, ne do repa. Veřejné Supabase klíče se při startu injectují dowindow.__SUPABASE_CONFIG__, takže fungují i když byl build vytvořen bez nich (po změně proměnných vždy rebuildni).
- Lokální databáze (doporučeno)
- Spusť Postgres (např. Docker) a nastav
LOCAL_DATABASE_URL=postgres://dev:pass@localhost:5432/letschat. - Inicializuj schéma:
npm run db:local:init(použijesrc/db/localSQLcreate.sql, vytvoří ilogs).
- Spuštění aplikace
- Dev server:
npm run dev(Next.js App Router, port 3000). - Nové stránky:
/rooms/create(formulář pro založení místnosti) a/transfer(převod anonymního kódu). Dashboard nyní naviguje na tyto samostatné stránky místo inline formulářů a po založení místnosti proběhne přesměrování do/room/{id}?code={CODE}. - Backend i frontend běží v jednom procesu; Supabase klient respektuje lokální/vzdálené URL dle env. Datový přístup je centralizovaný v
lib/persistence(lokální DB preferovaná); Supabase slouží pro auth/sync/log fallback (vizdocs/ARCHITECTURE.md). - Offline zprávy: klient ukládá zprávy do IndexedDB (
lib/offlineStore) při výpadku sítě a po návratu online se fronta odešle přes/api/sync/push(zlib/messages.syncPendingMessages). - Auth routy: jediný
/logina/registervsrc/app/(auth)/*; statické HTML vdoc/design/templatejsou jen reference.
- Testy a kvalita
- Jednorázově:
npm test(Vitest, reporter dot). - Coverage:
npm test -- --coverage(CI očekává ≥80 % statements). - Lint:
npm run lint(ignoruj vendor skripty vdoc/design/vendor/**- nejsou součástí runtime). Build:npm run build.
- Sync do Supabase
- Lokálně pracuj nad Postgres; do Supabase pushni až ověřené změny:
npm run sync:push(vyžadujeSUPABASE_SERVICE_ROLE_KEY, upsertuje rooms/codes/room_messages pomocí service role). - Volitelně pull ze Supabase zpět do lokální DB:
npm run sync:pull(service role + LOCAL_DATABASE_URL) pro dotažení nových zpráv/kódů z cloudu.
- Kde hledat kontext
- Data model:
docs/DATAMODEL.md, SQL vesrc/db/*. - Funkční zadání:
docs/REQUIREMENTS.md(shrnutídoc/lestchat.md). - Architektura a workflow:
.github/CONTRIBUTING.md,docs/ARCHITECTURE.md. - Designové podklady:
doc/design/.
Poznámka: před většími UI/arch změnami otevři issue/PR draft s návrhem a odkazy na design/datamodel.