trpc-query-that-writes-is-broken-notification-pattern

Using a tRPC query procedure (maps to HTTP GET) to both check due dates and write notification records violates idempotency contracts — queries must be side-effect-free reads. More critically, reminder checks implemented as query endpoints only fire when a client actively calls them; without a background cron, reminders are silent if no user opens the app on the trigger day. Notification delivery requires a server-side cron (pg_cron, BullMQ, or system cron) calling a mutation, not a client-triggered query.