So, the app works well on the happy path, but several failure modes are handled by
disabling a safeguard rather than fixing it. Grouping them here:
- NL parse has a single point of failure — when OpenRouter errors (e.g. 402),
the headline command-bar feature is fully down. Proposed: fall back to a
deterministic parser so it always responds, tagging the source.
- Conflict detection runs only on create; drag/resize can silently
double-book. Proposed: check on update too, excluding the event itself.
- No timezone handling — "besok jam 10" is computed in server time. Proposed:
pass the client offset and store UTC.
- Trailing slash in the API URL causes a 307 that drops CORS and breaks login.
Proposed: normalize the base URL client-side and avoid the redirect.
- DB-down states are swallowed (health reports ok while writes fail).
Proposed: structured 503s + honest health with latency.
So, the app works well on the happy path, but several failure modes are handled by
disabling a safeguard rather than fixing it. Grouping them here:
the headline command-bar feature is fully down. Proposed: fall back to a
deterministic parser so it always responds, tagging the source.
double-book. Proposed: check on update too, excluding the event itself.
pass the client offset and store UTC.
Proposed: normalize the base URL client-side and avoid the redirect.
Proposed: structured 503s + honest health with latency.