Build status
What is done, what is left.
Tracks the same list as TASK.md in the repo.
Core exercise
5/5
- Decode / resolve
- Encode / create
- Convert
- Proof: create/convert confirmed live, by curl
- Proof: same round trips captured as screenshots
Deploy
1/3
- Live on the Dokploy VPS
- Re-run the decode/encode/convert proof against the live URL
- Add the live URL to README.md
Flutter
0/6
- Set up the Flutter SDK
- Scaffold a standalone one-screen slip viewer
- Wire it to the same public /api/slip* endpoints
- Build a release APK
- Firebase App Distribution: upload, add testers
- Write the IPA-path note
Documentation and wrap-up
1/5
- Production UI pass
- Refresh the architecture diagram
- Confirm /doc is complete end to end
- Record the 5-minute Loom
- Reply with the live URL, the repo, and a short note
Changelog
Live on Dokploy
Troubleshooting
"Booking code not found"
A clean 404 from Betway's own FindBookABet. The code does not exist, is not currently valid, or was mistyped. Not a bug on this end.
"Betway rejected this request: ..."
Create or convert reached Betway, and Betway itself returned an error. The message after the colon is Betway's own errorMessage, passed through as is, not rewritten or hidden.
A code got created, but it will not resolve
Betway does not check outcome IDs when it mints a code, only when the code gets read back. Fake or expired IDs still return a 200 and a real code. Reading that code back then fails with a specific error, errorCode 6000332, "BookABetSelectionsExpired". Use real IDs, lifted from a decoded slip, and this does not happen.
Where do Event ID / Market ID / Outcome ID come from?
Decode any real Betway code first. Each selection in the result carries all three, ready to copy into the encode form.