The last path from the web into Supabase has a replacement
The reminder scheduler was the last place the web reached Supabase directly; how it should run was settled, and the schema meanwhile got indexes under its foreign keys.
What I did
Settled how reminders will run: a cron runs SQL that only checks whether waking the backend is worth it, and the backend does the sending.
Had production deploy once a day at 16:00.
Dropped the “add as a flow moment” action; the Flow lístek no longer takes anything over from a todo.
Settled that emptying the text in the diary leaves an empty record — the diary has no delete.
Turned down the proposed fix for the false “Úkol se mezitím změnil” warning: the guard would skip a write that changes nothing, but the application makes exactly that write on purpose, so that a save with no change still passes the concurrent-edit check.
What the factory did
Opened the move of the reminder scheduler onto the API, the last place the web reached Supabase directly; a cron in the database now wakes it only when there may be something to send.
Moved Historie plánů and the Dnes dashboard behind the API, and thinned Uzavření dne down to one read.
Gave every foreign key an index on its own side; Postgres indexes only the target, so deleting a parent scanned the whole child table.
Named the columns on on delete set null across seven composite keys; without the list it also cleared user_id, which may not be empty.
Readiness now refuses a replica that does not hold the issuer’s signing keys and so could not verify a sign-in token.
Made the build fail and name the method when an adapter does not wrap its database work so a technical failure arrives above as one known type; nothing watched for the omission before.
Tested for the first time what happens when saving a form fails — until now the tests only knew success: an expired session sends you to the login, a server outage is not passed off as a mistake in what you typed, and a refused form does not wipe what you wrote.
Bound the colours in the seven Detail dne CSS modules and in the shared components to tokens, and added a detector for every syntax that can write a colour.