vyvoj-dash

Tasky

24 tasků

Kanban board tasků — filtr dle priority, labelu nebo runu.

ID Název Status Priorita Vytvořeno
23 Wire HttpApiGroups do http-app + drop Hono mounty Hotovo Střední před 37 min
24 Smoke + typecheck In Progress Střední před 37 min
20 Migrace Spot endpointů na Effect HTTP API Hotovo Střední před 37 min
21 Migrace Photo endpointů na Effect HTTP API Hotovo Střední před 37 min
22 Migrace Vote endpointu na Effect HTTP API Hotovo Střední před 37 min
16 Backend stats endpoint
Profil potřeboval real čísla místo hardcodovaných. Přibyl GET /api/users/me/stats — vrací počet spotů, recenzí, hlasů a datum registrace. 4 paralelní COUNT queries přes Effect.all, jeden D1 roundtrip.
Hotovo Střední před 3 h
17 Mount + OpenAPI metadata
Endpoint potřeboval session ověření a živou dokumentaci. Mount pod /api/users/* za sessionMiddleware, schema UserStatsResponse v api-models a OpenAPI 3.1 metadata pro Scalar UI.
Hotovo Střední před 3 h
18 Profil stránka real counters
Profil ukazoval jen 'X sdíleno' a hardcoded '14 lesů'. Header teď má 3 živá počítadla (sdíleno · recenzí · hlasů) + sekce 'S Hammocknookem od {měsíc rok}' z reálného joinedAt.
Hotovo Střední před 3 h
19 Tabs Oblíbené/Moje spoty
Taby na profilu byly statické. Teď fungují přes ?tab= URL parametr — 'Moje spoty' default ukazuje cards, 'Oblíbené' prázdný state (přijde Sprint 012). 'Výlety'/'Nastavení' zůstávají vizuálně disabled.
Hotovo Střední před 3 h
11 Auth endpointy v dokumentaci
Doposud chybělo 9 auth endpointů v dokumentaci. Doplněn celý better-auth-parity router (sign-up/sign-in email i sociální, OAuth callback, refresh, sign-out, forget+reset password, verify-email). Body shapes jako generic object placeholder s odkazem na better-auth, protože ne Effect Schema.
Hotovo Střední před 3 h
12 Votes endpoint v dokumentaci
Hlasování (upvote/downvote) bylo neviditelné v Scalar UI. Přidán PUT endpoint s VoteInput/VoteResponse schemas — body popsán jako idempotent toggle (1 upvote, -1 downvote, 0 remove) a response counters jako celkový stav po batch update.
Hotovo Střední před 3 h
13 Admin endpointy v dokumentaci
Admin endpointy (role flip + anonymizace) chyběly. Doplněny s tagy ['Admin'], security pro session cookie a description vysvětlující last-admin guard (403 při pokusu sundat posledního ADMINa, 409 při pokusu ho anonymizovat).
Hotovo Střední před 3 h
14 Memo OpenAPI dokumentu pro výkon
Build celého OpenAPI dokumentu (Effect Schema → JSON Schema walk + ref rewrite) běžel při každém GET /openapi.json — zbytečný CPU cost. Přidán module-level cachedDocument; první request build-uje, další serve cached. Cold-start race je idempotent, takže safe.
Hotovo Střední před 3 h
15 Smoke test a uzavření sprintu
Curl /openapi.json: 200 application/json, 31KB validní OpenAPI 3.1, 18 paths / 24 operations / 13 schemas. Sprint 016 hotovo, sprint.md status změněn na 'hotovo (čeká audit)'.
Hotovo Střední před 3 h
6 Vyčištění OpenAPI Number shape přes Schema.annotations
JSON Schema výstup byl ošklivý — Schema.Number povoluje NaN/Infinity přes string encoding (anyOf branche). Swap na Schema.Finite (dedikované schema, ne jen check) tyhle větve odstraní → lat/lng/rating mají v Scalar UI čisté {type:'number'}.
Hotovo Střední před 4 h
7 OpenAPI metadata pro zbývající Spots endpointy
Spots měly hand-tagged jen GET list (R059 PoC). Doplněno POST /api/spots, GET /api/spots/{id}, PATCH /api/spots/{id}, DELETE /api/spots/{id} — security pro auth-protected, response refs na Spot.* schemas, error responses 400/401/403/404 dokumentovány.
Hotovo Střední před 4 h
8 OpenAPI metadata pro Photos endpointy
Tři Photos endpointy chyběly v dokumentaci — POST link userFile ke spotu, GET list (s visitorOnly filtrem co odděluje hero galerii od galerie návštěvníků), DELETE unlink (multi-owner check: file owner / spot owner / ADMIN). Photo.* schemas přidány do components.
Hotovo Střední před 4 h
9 OpenAPI metadata pro Reviews endpointy
Čtyři Reviews endpointy doplněny: POST + GET pod /api/spots/{spotId}/reviews, PATCH + DELETE top-level /api/reviews/{reviewId}. Doc původně zmiňoval že ADMIN nesmí PATCH cizí recenze — code skutečně dovoluje, opraveno v review fází. Review.* schemas v components.
Hotovo Střední před 4 h
10 Smoke OpenAPI spec + automatické checky
Curl /openapi.json vrátil 200 application/json (23KB validní OpenAPI 3.1, 6 paths / 12 operations / 11 named schemas). SpotResponse.lat má teď shape {type:'number'} bez anyOf NaN/Infinity větví. Typecheck/oxlint čistý, 35/35 vitest pass.
Hotovo Střední před 4 h
3 Hand-tagged metadata pro endpoint seznamu spotů
Endpoint pro list spotů (12 query params, response refs na SpotListResponse) je první a vzor pro R060/R061. Tagy, summary, parameters jsou ručně — Effect Schema neumí URL routing, takže path/query metadata se píší per-route.
Hotovo Střední před 4 h
4 Mount Scalar UI a OpenAPI JSON endpointu
Routes /docs (Scalar UI) a /openapi.json (runtime spec) namountovány v app.ts mimo blok session middleware — jsou public, žádný auth pro doc browsing. Pozice mimo chained routes const je záměr (nepatří do Hono RPC AppType, web wrapper je nepotřebuje).
Hotovo Střední před 4 h
5 Manual smoke /docs UI
curl /openapi.json vrátil 200 application/json (16KB validní OpenAPI 3.1: openapi/info/servers/components/paths). curl /docs vrátil 200 text/html (Scalar HTML shell). Typecheck/oxlint čistý, 35/35 vitest pass.
Hotovo Střední před 4 h
1 Cleanup mrtvých OpenAPI zbytků a instalace Scalar
Kořenový openapi.json byl mrtvý NestJS dump z dob před přepisem na Hono. generate-openapi script ukazoval na neexistující soubor a táhl s sebou jiti devDep. Vše smazáno (api + root), místo file dumpu nasazujeme runtime endpoint. @scalar/hono-api-reference instalován jako základ pro UI.
Hotovo Střední před 4 h
2 OpenAPI document builder s validací Effect Schema converter
Effect Schema (single source of truth pro DTO) se převádí na OpenAPI components přes builtin converter. Vlastní openapi.ts builder volá Schema.toJsonSchemaDocument na pojmenované schemas a toMultiDocumentOpenApi3_1 přepíše refy do OpenAPI tvaru. Bez ručního duplikování shape v Zod nebo jiném schema lib.
Hotovo Střední před 4 h