1. The GMT+8 planning problem
A fixture published in UTC or a host-country timezone still leaves a regional fan asking which local date applies, whether kickoff crosses midnight and how the match fits sleep or other plans. Match Haus adds local-time interpretation, countdowns, team following, calendar actions and a simple Plan My Night timeline.
This is convenience software focused on selected fixtures. It does not promise every competition, a stream, betting services or official real-time scores.
2. Planning instead of prediction
The regional value is not another generic fixture table. It is turning a supported kickoff into an actionable GMT+8 plan: follow a team, set a reminder, export a calendar event or estimate a late-night viewing timeline. Approximate sleep and match-end timing remains guidance, not a health or schedule guarantee.
3. Validate data before publishing it
- Fetch supported fixture data and normalise identifiers, rounds, UTC kickoffs, teams, scores, winners, venues and source URLs.
- Reject duplicate IDs, invalid timestamps and inconsistent finished or upcoming states.
- Reject winners outside the two teams and unexplained dataset shrinkage.
- Write through a temporary file and replace the generated dataset only after validation succeeds.
- Retain the earlier sync timestamp when the factual match data has not changed.
4. Represent score state without guessing
Scores are shown only when both values exist and the source marks the match finished. Upcoming, finished and unresolved are distinct states. Automated checks support this contract, but they do not turn Match Haus into a competition authority or guarantee that an upstream source never changes.
5. Keep convenience state small
The selected My Team value is stored in the browser as a local preference rather than an account or cross-device profile. Calendar and viewing links hand users to other services with their own privacy terms. Custom analytics should exclude personal data and user-entered values.
6. Known limitations and operational risks
- Not official and no official real-time live-score API.
- Coverage is limited to supported competitions and can change.
- Freshness depends on the upstream source, scheduled workflow and deployment path.
- Kickoffs can move; one-time calendar imports can retain an old time.
- Match-end and sleep-planning estimates are approximate; extra-time details are limited.
- Viewing links appear only when available and do not guarantee a stream.
- Browser-local preferences do not sync across devices.
7. What we learned
Timezone conversion is the easy part; trustworthy state is harder. Imported calendars should be treated as snapshots unless subscription updates are proven. Store UTC as the source truth, convert at presentation and give users the official-source link for the final check.
