Model
What a record is, what may be true of it, and what the database itself refuses to store.
Every product has a second audience: whoever maintains it after us. That is the constraint that decides the stack, the types, the tests and the migrations — not a preference for any of them. A member’s app and the console your team runs the day from are one system, and both are handed over with the reasoning written down.
حصصك هذا الأسبوع
الاشتراك فعال حتى ١٤ ديسمبر
تدريب لياقة — الثلاثاء ٢٠:٠٠
مؤكد · الملعب الشمالي
مباراة داخلية — الخميس ٢١:٠٠
قائمة انتظار · ترتيبك الأول
تقييم بدني — السبت ١٨:٣٠
مؤكد · مع الكابتن سامي
تدريب حراس — الأربعاء ١٩:٠٠
متاح · مقترح لك
احجز حصة
4 of 24 shown · M-2081 appears on both surfaces
— nothing driven yet
— the week as it stands
— 24 members active
strict · 0 errors
412 passing
37 · all reversible
AA · keyboard pass
runbook · decision log
Both panels are drawn in code in this palette — the same product on a member's phone and in the back office it is operated from. Press Try now and take an action on either side: it lands on both, which is the argument. No client screen is reproduced, no member record is real, and the build facts along the bottom state what a handover contains rather than measure one project.
What a record is, what may be true of it, and what the database itself refuses to store.
Types are written before the screens, so an impossible state is a compile error rather than a support ticket.
Two surfaces from one set of rules: the application a member uses and the console your team works in.
Unit tests on the rules, integration tests on the boundaries, and end-to-end runs through anything that touches money.
Every schema change is a numbered, reversible migration, applied the same way in every environment.
The repository, the runbook, and a decision log that says why each choice was made and what it rules out.
The repository sits in your organisation from the first commit, and the stack is chosen for what the product has to do and for whoever will maintain it — not for what we happen to enjoy writing. The test of a handover is whether a team that has never met us can pick the work up, so that is the standard the documentation is written to.
Owning the code is not the same as never maintaining it. Dependencies age, platforms change their rules, and someone has to be answerable for that — we write down who, and on what terms, before the build starts.
It decides how a product is built, and it is the easiest question to answer too late. Tell us what you are building and who will be running it a year from now, and we will scope it to that.