BeBetter · Contract-first Foundation
Contract-first live scoring starts here.
Nền FE-BE được khóa từ shared contracts ngay từ đầu để các agent còn lại có thể build vertical slices mà không đoán API, đoán envelope, hay drift version handshake.
Contract gate
- Envelope có đầy đủ request_id, correlation_id, server_time, build_version.
- Version handshake khóa contract_version và min_supported_contract_version.
- Frontend và backend đều import type từ @bebetter/contracts.
Foundation artifacts
- @bebetter/contracts là SSOT cho envelope, versioning, error model, shared IDs.
- Backend NestJS foundation expose GET /api/v1/runtime/handshake theo contract v0.
- Frontend app shell đọc runtime info qua shared API client và mock adapter.
- ADR scaffolding và load-test scaffolding đã được tạo để unblock Agent 2-6.
Active Vertical Slice
Judge lane
Scoring screen touch-first cho giám khảo với duplicate guard, timing rule, và submit receipt.
Active Vertical Slice
Student lane
Scoring screen mobile-first cho học sinh, chung contract với judge nhưng lane tách biệt.
Active Vertical Slice
Identity Desk
Redeem access pass, session/me, support desk revoke-reissue-transfer trên cùng shared contracts.
Active Vertical Slice
Admin Policy
Persist policy explicit, gán item, và điều khiển OPEN/CLOSE theo contract runtime.
Runtime handshake
production
API base: https://bebetter-backend-i5tnjbymva-as.a.run.app
Release freeze: outside-live-window
Current item
Team Alpha
DRAFT · sequence 1774492660510
Event: event-2026-demo
Live panel
connected
admin 3 · judge 24 · student 186 · result 91
pool api 4-20 · worker 2-10