Enfy · Engenheiro full-stack

Enfy

App PWA para enfermeiros que preenche a avaliação clínica por voz, com IA revisada por humanos, e funciona offline em atendimentos de campo.

Cliente
Enfy
Papel
Engenheiro full-stack
Período
2026 ao presente

O que é

Enfy é um aplicativo para enfermeiros e profissionais de saúde gerenciarem seus atendimentos: cadastro de pacientes, avaliação clínica, cuidado com feridas, agenda e controle financeiro. É um PWA pensado para o trabalho de campo, onde a conexão é ruim e a mão está ocupada, com duas apostas que definem o produto: registrar o atendimento por voz, com ajuda de IA, e funcionar offline.

A IA no atendimento

A ideia central é simples de descrever e difícil de fazer com responsabilidade: o enfermeiro grava um áudio falando o que observou no paciente, e o sistema preenche a avaliação clínica a partir dali. Por baixo, o áudio vai para uma Edge Function que transcreve com o Whisper e extrai dados estruturados com um modelo GPT, devolvendo um JSON com sinais vitais, comorbidades, características da ferida e por aí vai.

O detalhe que separa um brinquedo de uma ferramenta clínica é o que vem depois do modelo. Em saúde, um dado inventado é perigoso, então a extração passa por uma camada de saneamento defensiva antes de chegar perto do formulário. A regra é “omissão é o padrão”: o modelo só pode preencher um campo que foi de fato mencionado, e o servidor confere, termo por termo, se aquilo aparece na transcrição. Valores fora do vocabulário clínico esperado são descartados, campos com alto risco de alucinação só entram com menção explícita, e datas viram formato ISO com validação.

E nada disso é salvo automaticamente. A IA propõe, o humano decide. As mudanças sugeridas aparecem em uma gaveta de revisão, separadas entre o que é novo e o que mudou, e o enfermeiro aceita ou rejeita campo a campo antes de mesclar no formulário. É a mesma postura que levo para qualquer uso de IA: útil onde paga o trabalho que dá, auditada por humanos, nunca uma caixa preta. Em prontuário, isso deixa de ser preferência e vira requisito.

Offline-first de verdade

Enfermeiro atende na casa do paciente, no posto, em lugar sem sinal. Então o app não pode depender da rede para o que importa. Um paciente novo, com toda a avaliação e até as fotos da ferida, é criado e guardado localmente no IndexedDB via Dexie, com status de sincronização. Quando a conexão volta, um sync-manager sobe tudo para o Supabase em ordem: o paciente, as tabelas normalizadas de cada categoria clínica e as fotos para o Storage. Um ouvinte de rede dispara a sincronização sozinho ao reconectar.

O aprendizado de offline-first é que o difícil não é guardar local, é a volta: decidir o que sincroniza, em que ordem, e o que fazer quando a foto subiu mas o registro não. Manter o estado local como fonte da verdade até o sync confirmar foi o que deixou isso confiável.

Cuidado com feridas

A parte clínica mais rica é a de feridas. A localização é marcada em um mapa corporal interativo, com frente e costas e quase trinta regiões anatômicas. A foto é capturada pela câmera do aparelho, com preferência pela traseira e compressão antes de subir. Cada ferida guarda características em vocabulário clínico (perilesão, bordas, leito, exsudato, odor, etiologia e dimensões), e as evoluções seguintes montam uma linha do tempo com galeria de fotos para acompanhar a cicatrização.

Arquitetura

O front é React 19 com Vite e React Router, empacotado como PWA instalável. O back é Supabase: Postgres com RLS, Auth, Storage e Edge Functions em Deno. O isolamento é por usuário, com RLS amarrando cada linha ao dono via profile_id = auth.uid(). A cobrança é assinatura via Stripe, com um conjunto de Edge Functions cuidando de assinatura, métodos de pagamento e webhooks, e um portão que libera o app conforme o status. O deploy é na AWS, com S3 e CloudFront, por GitHub Actions.

Status

Está em fase de testes, com enfermeiros usando o app em atendimentos reais para validar a ideia, e o retorno até aqui tem sido positivo. A cobrança por assinatura já está pronta, mas o foco do momento é ouvir quem usa, ajustando o fluxo de voz e a avaliação clínica ao jeito real de trabalhar de quem atende à beira do leito.

Stack

  • React 19
  • TypeScript
  • Vite 7
  • React Router 7
  • Tailwind 4
  • PWA
  • Zustand
  • TanStack Query
  • React Hook Form
  • Zod
  • Dexie (IndexedDB)
  • Supabase
  • PostgreSQL + RLS
  • Edge Functions (Deno)
  • OpenAI (Whisper + GPT)
  • Stripe