Ir para o conteúdo

Documentação técnica

A base técnica da proteção animal.

Referência para integrar, operar e auditar a plataforma Projeto MEL.

Documentação técnica

Arquitetura

A web usa Next.js 15 com App Router. A API é um monólito modular NestJS. Prisma persiste os dados em PostgreSQL, Redis atende cache, filas e limitações, e o storage guarda fotos, comprovantes, evidências e documentos.

Web e mobileSite público, áreas autenticadas e app mobile Expo.

API e dadosREST, regras de domínio, PostgreSQL e Redis no mesmo fluxo transacional.

Documentação técnica

Tenants e perfis

Uma ONG é o tenant da operação. O slug da organização chega no contexto autenticado ou no cabeçalho X-Tenant-Slug; as consultas protegidas aplicam esse escopo. Assim, animais, casos, doações, prontuários e dados de uma ONG não se misturam aos de outra.

Os perfis cobrem tutor, doador, voluntário, veterinário, ONG, governo, polícia, Ministério Público e conselho. O RBAC limita cada ação ao papel e ao tenant autorizados. Administração e governo têm leituras institucionais próprias.

Documentação técnica

Contas de demonstração

Ambiente de demonstração, dados fictícios.

Use estas contas na página de login.

PerfilE-mailSenhaApós o login
Administradoradmin@projetomel.com.brMel2026!admin/admin (auditoria, tenants)
Gestora de ONGgestora@patinhas.org.brMel2026!demo/patinhas-cerrado/dashboard
Voluntáriovoluntario@gmail.comMel2026!demo/patinhas-cerrado/dashboard
Veterináriovet@clinica.com.brMel2026!demo/patinhas-cerrado/vacinas (Portal Clínico)
Doador / tutordoador@gmail.comMel2026!demo/minha-conta
Governo (SEMA)governo@gdf.gov.brMel2026!demo/dashboard governo
Polícia Civilpolicia@pmdf.gov.brMel2026!demo/casos-criticos e /denuncias
Promotor (MPDFT)promotor@mpdft.mp.brMel2026!demo/dossies e casos críticos
Conselhoconselho@gdf.gov.brMel2026!demo/relatorios e indicadores

Documentação técnica

Cadeia de integridade

Cada bloco usa SHA-256 sobre seis partes ordenadas: sequência, tipo da entidade, identificador, payload com chaves ordenadas recursivamente, hash anterior e data ISO. Os valores são unidos por um separador antes do cálculo. Se um payload, a ordem ou um elo anterior mudar, o hash deixa de coincidir.

SHA-256(sequence | entityType | entityId | payloadOrdenado | prevHash | timestampISO)

A API também mantém o formato anterior para registros jurídicos: o hash é calculado sobre o JSON do payload seguido do hash anterior. O verificador público consulta a cadeia sem expor o conteúdo protegido.

Documentação técnica

API pública

A base versionada é /api/v1. Esta lista foi regenerada a partir de grep -rn "@Public" apps/api/src e inclui os endpoints públicos de denúncias e eventos. Eles não exigem token, mas ainda aplicam as validações, limites e guardas específicos de cada recurso.

POST /public/abuse-reportsPOST /public/abuse-reports/:protocol/verify-contactPOST /public/abuse-reports/:protocol/statusGET /public/abuse-reports/channelsGET /animals/availableGET /animals/public/:idGET /animals/chip/:chipNumberPOST /animals/:id/likePOST /auth/registerPOST /auth/register-ongPOST /auth/loginPOST /auth/refreshPOST /auth/forgot-passwordPOST /auth/reset-passwordPOST /auth/logoutGET /donation-categoriesGET /donations/publicPOST /donationsPOST /donations/webhookGET /verify/:hashGET /eventsGET /events/:slugGET /healthPOST /integration/mercadopago/create-preferenceGET /integration/healthGET /lost-foundGET /lost-found/:idGET /lost-found/:id/candidatesGET /storage/*pathGET /tenantsGET /tenants/:slugPOST /tenants/:slug/join-requestGET /transparency/integrity/summaryGET /transparency/integrity/verifyGET /transparency/statsGET /transparency/mapGET /transparency/timelineGET /transparency/donationsGET /transparency/tenantsGET /transparency/tenants/:slugGET /transparency/tenants/:slug/donationsGET /transparency/tenants/:slug/atividades
curl https://api.projetomel.com.br/api/v1/transparency/stats
curl https://api.projetomel.com.br/api/v1/animals/available

Documentação técnica

LGPD

Denúncias podem ser anônimas com frase-senha ou identificadas com confirmação por código. O acompanhamento público exige o segredo escolhido pela pessoa denunciante. Fotografias enviadas para denúncia têm os metadados EXIF removidos antes do armazenamento.

Para limitar abuso sem conservar um identificador direto, a plataforma usa hash diário do IP. O identificador é removido após 90 dias. Dados públicos são agregados ou anonimizados conforme o contexto; endereços, nomes e evidências não são publicados no acompanhamento da denúncia.

Documentação técnica

Integrações

Mercado Pago cria a preferência de pagamento e confirma eventos por webhook. O recibo de doação é gerado em PDF com hash verificável. E-mail usa Resend ou SMTP conforme a configuração de ambiente. Notificações in-app e WhatsApp usam as preferências da pessoa e os canais conectados pela operação.

Documentação técnica

Deploy

O fluxo segue GitOps: uma alteração validada entra no repositório, a automação prepara os artefatos e o Dokploy aplica os serviços configurados. PostgreSQL, Redis, API, web, Metro e storage permanecem separados no ambiente. Segredos ficam no provedor de deploy, não no código ou nos exemplos desta página.

A plataforma é mantida pela HoldNexus. Healthchecks da API e das integrações ajudam a operação a identificar disponibilidade antes de uma investigação manual.

Faça parte da rede

Você tem uma ONG de proteção animal?

Cadastro gratuito, aprovação sob revisão e um portal próprio com transparência para a sua organização.

  • Cadastro gratuito
  • Aprovação sob revisão
  • Portal próprio com transparência