Lembretes de consulta
App que lê as consultas marcadas no prontuário da clínica e agenda, em lote, lembretes pelo WhatsApp para os pacientes.

O problema
A recepção ligava ou mandava mensagem paciente por paciente para confirmar a consulta do dia seguinte.
O resultado
Com o app, a recepção vê a agenda do prontuário agrupada por paciente e dia, marca quem vai receber e agenda tudo de uma vez. Se a consulta é desmarcada ou remarcada no prontuário, o lembrete é cancelado sozinho.
- Lote em segundo plano: roda no servidor. Se a aba fechar, o progresso aparece de novo quando ela abre.
- Até três lembretes por consulta, cada um num dia. Quando um já passou do prazo, agenda só os que cabem.
- Situação real de cada mensagem (enviada, entregue, lida ou com falha), conferida a cada 15 minutos.
- Modelos com variáveis, mídia e regra de envio. A prévia usa a mesma função do envio, então o que aparece é o que o paciente recebe.
- Várias unidades por clínica, cada uma com o seu número.
- Três sistemas de prontuário atendidos atrás de uma porta comum.
Como foi construído
- Fatia vertical: um diretório por caso de uso, um núcleo puro sem framework nem relógio, e portas para o prontuário e para as mensagens.
- Acesso sem login: a clínica entra pela aba da plataforma de mensagens ou por um link assinado (HMAC). O setup tem sessão própria.
- Banco isolado: esquema próprio no Postgres, com acesso só pelo servidor.
- Contrato do banco conferido no deploy: o app confere as colunas antes de subir.
- Tarefas de horário: conferência de status a cada 15 minutos e de remarcações a cada 30.
Stack por camada
- Telas: Next.js 16, React 19, Tailwind 4, Radix, react-day-picker
- API: Hono, zod, OpenAPI 3.1
- Dados: PostgreSQL (Supabase)
- Qualidade: TypeScript, Vitest, ESLint, CI no GitHub Actions
- Entrega: Docker, nginx, VPS
Telas
Os dados que aparecem nas telas são fictícios.
(abre a imagem inteira em outra aba)A agenda do prontuário, agrupada por paciente e dia. A recepção marca quem vai receber.
(abre a imagem inteira em outra aba)O lote roda no servidor, em segundo plano, e mostra o resultado no fim.
(abre a imagem inteira em outra aba)Modelos: variáveis ligadas aos dados da consulta e a regra de quando a mensagem sai.
(abre a imagem inteira em outra aba)Histórico: cada envio com a situação real (enviada, entregue, lida ou com falha).
(abre a imagem inteira em outra aba)Quando um envio falha, a ficha traduz o motivo em "o que fazer".
(abre a imagem inteira em outra aba)Configurações: até três lembretes por consulta e as agendas que ficam de fora, como a do laboratório.