2.5 KiB
2.5 KiB
Handoff — after refinement-phase-0 (Local end-to-end bring-up)
Date: 2026-07-12 · Track: integration (both projects) · Unlocks: every other refinement phase.
What the frontend can now do
- Actually call the backend cross-origin. The API now has a CORS policy (
BalinyaarWebClient) allowinghttp://localhost:3000(configCors:AllowedOrigins, default in Dev) with the four headers the client sends (Authorization,Content-Type,Accept-Language,Idempotency-Key). A browser at:3000callinghttps://localhost:5002is no longer blocked by same-origin policy. - Stand the stack up in ~5 minutes via
dev/post-phase/refinement/RUNBOOK.md(dev-cert trust → local SQL Server viadocker compose→ connection string viadotnet user-secrets→dotnet run+npm run dev). - Complete a real login end-to-end. Request an OTP, read the 6-digit code from the server console
(
MOCK SMS — OTP code … for phone ending in …) or from the Development-only helperGET /api/v1/dev/last_otp/{phone}, verify → real tokens +/me.
What did NOT change (important)
- No
USE_*_MOCKflag was flipped.authis still the only real client domain; the home/search/bookings are still in-browser mocks until Refinement Phase 4. - No client app code changed — only verified
client/.env.development(alreadyhttps://localhost:5002) and added the runbook. If you run the API elsewhere, override withclient/.env.local. - Auth crypto, the money path, and the
ApiResultenvelope are untouched.
New endpoint (Development only — not a contract)
GET /api/v1/dev/last_otp/{phone}→{ data: { phone, code } }when a code was issued, else 404. 404 in every non-Development environment (the capture isn't even wired there). For manual/e2e login only; superseded by real SMS in Refinement Phase 8. Do not build client features on it.
Gotchas
- The API binds HTTP/2 (
Kestrel:Protocols = Http2, for gRPC). Browsers negotiate h2-over-TLS via ALPN automatically, sofetchworks;curlneeds--http2. - The dev HTTPS cert must be trusted (
dotnet dev-certs https --trust) orfetchto:5002fails with an opaque network error. - Committed
appsettings*.jsonconnection strings are placeholders — the API will not boot until you setConnectionStrings:SqlServervia user-secrets (or theConnectionStrings__SqlServerenv var).