trpc-query-procedure-used-as-mutation-violates-contract

Using a tRPC query procedure to perform writes (e.g., creating notification records inside a reminders.checkDueTomorrow query) violates the query/mutation contract — queries must be idempotent reads. This also means reminder notifications only fire when a user manually hits the endpoint; without a cron job the feature is effectively dead. Always route side-effecting operations through mutation procedures and trigger time-based logic via server-side cron.