Plataforma web para agendamento e gestao de servicos pet (passeios e banhos). Conecta tutores a equipe operacional por meio de um fluxo completo: pre-cadastro publico, portal do cliente, painel administrativo e dashboard de metricas.
O projeto esta em migracao progressiva para uma arquitetura SaaS multi-tenant (API v2 com NestJS + Prisma), enquanto o frontend legado permanece ativo com uma camada de bridge para alternancia gradual entre os modos.
Formulario publico (index.html)
- Pre-cadastro completo (tutor, pet, saude, comportamento e servicos)
- Calendario com bloqueio de finais de semana, datas passadas e feriados de Sergipe
- Integracao com WhatsApp via
wa.me
Portal do cliente (client.html)
- Autenticacao Google ou e-mail/senha
- Historico de pedidos com numeracao amigavel
- Fluxo visual de etapa (pendente / confirmado / cancelado)
- Edicao e remarquacao quando permitido
- Assistente de duvidas (FAQ + fallback suporte)
Painel administrativo (admin.html)
- Leitura de agendamentos em tempo real
- Confirmacao, cancelamento e liberacao de slots
- Historico de clientes, acoes e erros
- Exportacao em CSV, JSON e Google Agenda
- Webhook de notificacao para automacoes externas (n8n, Make, Zapier)
- Sessao com timeout idle de 15min e limite maximo de 8h
Dashboard de metricas (dashboard.html)
- KPIs operacionais: total, pendentes, confirmados, cancelados, taxa de confirmacao
┌─────────────────┐
Tutor / Cliente │ index.html │
(formulario publico) ──▶│ client.html │──▶ Firebase Auth
│ admin.html │──▶ Firestore
Admin │ dashboard.html │──▶ Cloud Functions
└────────┬─────────┘
│
┌────────▼─────────┐
│ api-v2 (NestJS) │──▶ PostgreSQL
│ JWT + Prisma │ (multi-tenant)
└──────────────────┘
O frontend legado e composto por paginas HTML estaticas com JavaScript vanilla, sem build step. A API v2 (api-v2/) e um backend NestJS com Prisma ORM que suporta PostgreSQL e MySQL, com autenticacao JWT e isolamento por tenant.
A camada de bridge (assets/js/api-v2-migration-bridge.js) permite alternar entre o modo legado (Firebase direto) e o modo v2 (API NestJS) via localStorage ou parametro de URL.
| Camada | Tecnologias |
|---|---|
| Frontend | HTML5, CSS3 (variaveis, responsivo), JavaScript vanilla, PWA (manifest + service worker) |
| Autenticacao | Firebase Auth (Google + e-mail/senha), JWT (API v2) |
| Banco de dados | Cloud Firestore (legado), PostgreSQL via Prisma (v2) |
| Backend | Firebase Cloud Functions (Node.js 20), NestJS 11 (v2) |
| Infraestrutura | Vercel (frontend), Firebase Hosting, Firebase Functions |
git clone https://github.com/fernando-msa/prime-pet.git
cd prime-pet
# Abra index.html no navegador# Linux / macOS
./scripts/qa_smoke.sh
# Windows PowerShell
powershell -ExecutionPolicy Bypass -File .\scripts\qa_smoke.ps1cd api-v2
npm install
cp .env.example .env # Configure DATABASE_URL e JWT_SECRET
npx prisma generate
npx prisma migrate deploy
npm run start:devNo Windows PowerShell, use npm.cmd em vez de npm para evitar bloqueio de politica de execucao.
prime-pet/
├── index.html # Formulario publico + pre-cadastro
├── client.html # Portal do cliente
├── admin.html # Painel administrativo
├── dashboard.html # Dashboard de metricas
├── privacy.html # Politica de privacidade / LGPD
├── demo.html # Landing page de demonstracao
├── maintenance.html # Pagina de manutencao
├── manifest.webmanifest # Manifesto PWA
├── sw.js # Service Worker
├── firestore.rules # Regras de seguranca do Firestore
├── firestore.indexes.json # Indices compostos
├── firebase.json # Configuracao do Firebase
├── scripts/
│ ├── firestore-rtdb-compat.js # Compatibilidade RTDB → Firestore
│ ├── set-admin-claim.js # CLI para definir claim admin
│ ├── check-claims.js # CLI para inspecionar claims
│ └── qa_smoke.* # Scripts de smoke test
├── functions/
│ ├── index.js # Cloud Functions (webhook, vacinas)
│ └── package.json
├── assets/
│ ├── css/ # Layout v2 CSS
│ ├── js/ # Layout v2 JS + migration bridge
│ └── screenshots/ # Screenshots do produto
├── api-v2/ # Backend NestJS + Prisma (v2)
│ ├── src/
│ │ ├── modules/ # Modulos: auth, tenants, clients, pets, appointments, etc.
│ │ ├── common/ # Guards, interceptors, decorators
│ │ └── main.ts # Bootstrap da aplicacao
│ ├── prisma/schema.prisma # Schema do banco de dados
│ └── package.json
├── docs/ # Documentacao organizada
│ ├── legacy/ # Documentacao do legado
│ ├── planning/ # Roadmap e planejamento
│ └── v2/ # Documentacao da API v2
├── reports/ # Relatorios de auditoria
└── LICENSE
- Frontend legado: Firebase Auth com custom claim
admin=truepara acesso administrativo. Verificacao de host autorizado (allowlist de dominios). Timeout idle de 15 minutos e sessao maxima de 8 horas no painel admin. - API v2: JWT com access token (15min) e refresh token (7d). Senhas hasheadas com bcrypt. RBAC via decorator
@Roles('admin')eRolesGuard.
- Firestore rules com controle por proprietario (
ownerUid) e admin (custom claim + fallback emadmin_users/{uid}). - Colecoes sensiveis (
ops_config,metrics_daily) com escrita bloqueada no nivel de regras. - Webhook URLs validadas no backend (HTTPS obrigatorio, bloqueio de IPs privados).
- Helmet habilitado (CSP, X-Frame-Options, X-Content-Type-Options, etc.)
- CORS com origens restritas (whitelist de dominios autorizados)
- Tenant ID validado contra o JWT (prevencao de spoofing cross-tenant)
- JWT secret obrigatorio via variavel de ambiente (sem fallback hardcoded)
Politica de privacidade dedicada em privacy.html.
O frontend e hospedado na Vercel em prime-pet.vercel.app. Deploy automatico via integracao com GitHub.
firebase deploy --only firestore:rules,firestore:indexes
firebase deploy --only functionsA API v2 requer configuracao manual de deploy (Dockerfile ou servico de nuvem). Configure as variaveis de ambiente:
| Variavel | Descricao |
|---|---|
PORT |
Porta do servidor (default: 3001) |
DATABASE_PROVIDER |
postgresql ou mysql |
DATABASE_URL |
String de conexao do banco de dados |
JWT_SECRET |
Chave secreta para assinatura JWT (obrigatoria) |
| Documento | Descricao |
|---|---|
| CHANGELOG.md | Registro de mudancas por release |
| AUDITORIA_MELHORIAS_2026.md | Auditoria e roadmap de evolucao |
| docs/legacy/ | Arquitetura, checklist de release, prints de fluxo |
| docs/planning/ | Roadmap, proximos passos, evidencias de maturidade |
| reports/ | Relatorios de auditoria de seguranca |
| api-v2/README.md | Documentacao da API v2 |
Este projeto esta sob a licenca MIT. Veja LICENSE para detalhes.