Vetria é um software de gestão para clínicas veterinárias, pronto para operar como SaaS: muitas clínicas em uma única instalação, cada uma isolada na base de dados com Row-Level Security do PostgreSQL. Não é um kit de UI: agenda, prontuário clínico, receitas, cobranças, caixa, inventário, hospitalização, portal do tutor e relatórios funcionam de ponta a ponta, com API REST documentada, dados de demonstração e testes automatizados.
Idioma: interface 100 % em espanhol (México)
A interface, os e-mails, os PDFs e as mensagens de validação estão apenas em espanhol, com formatos do México (es-MX, moeda padrão MXN, IVA 16 %, CFDI). Não inclui um sistema de internacionalização (i18n) nem traduções. Os identificadores do código estão em inglês; os comentários e a documentação, em espanhol. Se você lê este anúncio traduzido, o produto não está.
Para quem é
- Agências e freelancers que vendem software para veterinárias no México e na América Latina.
- Empreendedores que desejam lançar seu próprio SaaS veterinário por assinatura.
- Equipes que buscam uma base multi-tenant em TypeScript para saúde ou serviços.
Funcionalidade
Agenda
- Lista de consultas e calendário com arrastar e soltar; detecção de sobreposições por veterinário.
- Horários disponíveis por veterinário de acordo com a jornada e o fuso horário da clínica.
- Consultas em série (toda semana, a cada 2 semanas ou a cada mês, de 2 a 12): são criadas como consultas individuais e a série é interrompida na primeira sobreposição.
- Lista de espera com sugestões quando um espaço é liberado e confirmação de presença por link.
Prontuário clínico
- Pacientes com foto e vários pacientes por tutor; arquivamento lógico que preserva histórico e pagamentos.
- Anotações clínicas em Markdown com histórico de versões.
- Sinais vitais com gráfico de peso e anexos (imagens com miniatura WebP).
- Vacinas e desparasitizações: próximos reforços, vencimentos e carteira em PDF.
Receitas e documentos
- Receita em PDF com assinatura digitalizada e registro profissional do veterinário.
- Recibos, carteira, fechamento de caixa e folha de hospitalização em PDF.
Cobranças e caixa
- Pagamentos totais ou parciais por consulta, com número sequencial por clínica.
- Caixa com abertura, fechamento e conferência (esperado vs. contado).
- Faturas CFDI simuladas: XML e PDF de teste sem validade fiscal, com a interface pronta para conectar a um PAC real.
Inventário
- Catálogo de serviços e produtos, estoques com mínimo e kardex de movimentos.
- Desconto automático de estoques ao completar ou cobrar a consulta, com devolução se revertido.
Hospitalização
- Gaiolas e áreas, internações, notas de acompanhamento por turno (manhã, tarde, noite) e alta.
Portal do tutor
- Acesso sem senha através de link mágico: consultas, carteira, receitas, recibos e solicitação de consultas.
- Caixa de solicitações para que a equipe aceite ou rejeite.
Lembretes
- Lembretes automáticos de consultas por e-mail, SMS ou WhatsApp (Twilio), com link para confirmar ou cancelar.
- Aviso diário por e-mail de reforços de vacinas e desparasitizações próximos a vencer.
- Registro de cada envio com seu estado.
Relatórios e exportação
- Dashboard e relatórios com gráficos por data, veterinário e método de pagamento.
- Exportação para CSV e Excel (.xlsx); registro de auditoria consultável e exportável.
Multi-clínica e filiais
- Registro de clínicas, convites de equipe e funções: proprietário, administrador, veterinário e recepção.
- Filiais com fuso horário próprio; assinatura por planos com limites (Stripe ou modo simulado).
- Busca global com ⌘K / Ctrl+K, PWA instalável e design escuro por padrão.
Segurança
- RLS no PostgreSQL: a API usa um papel sem bypass, então uma consulta não pode sair de sua clínica.
- JWT com tokens de atualização rotativos em cookies httpOnly, Argon2, verificação de e-mail e recuperação de senha.
- Limitação de taxa por IP e por clínica, CSP e cabeçalhos de segurança, logs com requestId, Sentry opcional.
Pilha técnica
CapaTecnologiaMonorepo npm workspaces + Turborepo, TypeScript estritoWebNext.js 15 (App Router), React 19, Tailwind CSS v4, Radix UI, FullCalendar, RechartsAPINestJS 11 sobre Fastify, Zod, OpenAPI/Swagger (mais de 180 operações)DadosPostgreSQL 16, Drizzle ORM, migrações versionadas, RLSJobsRedis 7 + BullMQ (e-mails, lembretes, backups), worker separávelArquivosArmazenamento S3 compatível (MinIO em local)QualidadeVitest, Playwright, ESLint, GitHub Actions
O que inclui
- Código fonte completo: web, API, worker, esquema de banco de dados, migrações e seed com 2 clínicas demo.
- Docker Compose para desenvolvimento, Dockerfiles multi-stage e workflows de CI e release (imagens para GHCR).
- 45 testes E2E com Playwright e testes unitários com Vitest.
- README e guias em espanhol: início, implantação, segurança, backups e troca de marca.
- THIRD_PARTY_NOTICES.md e CHANGELOG. As dependências npm são instaladas com pnpm (não estão no ZIP).
Requisitos
- Node.js 22 LTS (recomendado; mínimo 20) e pnpm 10.
- Docker com Docker Compose v2 (Docker Desktop, OrbStack, Colima ou Docker Engine).
Instalação
Após pnpm install e copiar .env.example para .env:
- pnpm infra:up: Postgres, Redis, Mailpit e MinIO no Docker.
- pnpm db:migrate: esquema, papel da API e políticas RLS.
- pnpm db:seed: dados de demonstração.
- pnpm dev: web em localhost:3000 e API em localhost:4000.
Implantação
Guias passo a passo para um VPS com Docker Compose e Caddy (HTTPS automático), Fly.io e Google Cloud Run. A imagem da API traz os comandos api, worker e migrate; inclui runbook de backups do Postgres para S3.
O que está simulado ou requer suas contas
- Stripe: a assinatura de clínicas funciona em modo simulado; para cobrar de verdade você precisa da sua conta e preços do Stripe.
- Twilio: sem credenciais, SMS e WhatsApp apenas são registrados no log; para enviar você precisa da sua conta.
- Email: localmente usa-se Mailpit; em produção você precisa do seu provedor SMTP.
- CFDI: não inclui um PAC. Os comprovantes são de teste e não têm validade fiscal; a estrutura está pronta para conectar um PAC real, cuja integração e contrato ficam por sua conta.
- Armazenamento S3, PostgreSQL e Redis de produção são fornecidos por você.
Licença
É vendido com a licença padrão de comprador da Bernuvia: você pode usar e modificar Vetria, implantá-lo como SaaS próprio e construir produtos para seus clientes. Você não pode revender nem redistribuir o código como template. As dependências de código aberto mantêm suas licenças (THIRD_PARTY_NOTICES.md). A compra não inclui direitos sobre a marca “Vetria”: inclui um guia para colocar a sua.
Perguntas frequentes
Está em inglês?
Não. A interface, os e-mails e os PDFs estão apenas em espanhol (México) e não há sistema i18n. Você pode adicionar um (por exemplo, next-intl), mas requer extrair os textos e não está incluído.
As faturas CFDI são válidas perante o SAT?
Não. O gerador interno produz XML e PDF de teste. Para timbrar você deve contratar um PAC e implementar seu conector na interface incluída.
Como os dados são isolados entre clínicas?
Cada tabela tem a clínica como chave e uma política RLS no PostgreSQL. A API se conecta com um papel sem bypass e fixa a clínica em cada transação.
Posso vendê-lo como SaaS para clínicas veterinárias?
Sim, com sua marca. O que você não pode é revender o código como template.
Preciso de Stripe ou Twilio para testá-lo?
Não. Sem credenciais funcionam em modo simulado e tudo é testado localmente com Docker.
Posso usar outro banco de dados?
Não sem reescrever partes importantes: o isolamento depende do RLS do PostgreSQL 16.
Funciona no celular?
É uma aplicação web adaptável que pode ser instalada como PWA. Não inclui apps nativos para iOS nem Android.