🦷 Arquitetura ScoreOdonto CRM (Multi-Tenant)
Este documento dita as regras exclusivas e as portas da arquitetura do ScoreOdonto CRM. Nunca misture essas configurações com as do Clube67.
🚀 Stack Tecnológica e Portas de Rede
- Frontend: React + Vite + TypeScript + Tailwind
- Porta de Produção/Dev:
3013
- Porta de Produção/Dev:
- Backend: Node.js + pg (Nativo)
- Porta de Produção/Dev:
8018 -
Important
NÃO UTILIZE ORM (Prisma/Sequelize). Toda a persistência deve ser feita via driver nativo
pgpara máxima performance e controle de queries.
- Porta de Produção/Dev:
- Banco de Dados (VPS 3): PostgreSQL 18
- Porta Padrão:
5432 - Banco de Dados Isolado:
scoreodonto
- Porta Padrão:
- Cache (VPS 3): DragonflyDB
- Porta Padrão:
6379 - Índice Isolado:
/1(exclusivo para ScoreOdonto)
- Porta Padrão:
- Proxy Reverso (VPS 1): Nginx / Traefik
- Domínio:
scoreodonto.com
- Domínio:
🔄 Fluxo de Deploy Contínuo e Versionamento (+1)
O webhook do ScoreOdonto roda de forma isolada na VPS 4.
- Webhook Listener Port (VPS 4):
9002 - O webhook escuta na porta 9002 e dispara o script de build/deploy exclusivo (
deploy-prod-scoreodonto.sh).
📦 Regra de Incremento de Versão (Host-Side Bump)
Diferente do Clube67, o versionamento do ScoreOdonto ocorre no Host (VPS 4) antes do processo de rsync/build.
- O script
update-version.jsestá localizado em/home/deploy/stack/scoreodonto.com/update-version.js. - Este script é executado pelo pipeline de deploy (
deploy-prod-scoreodonto.sh). - O script incrementa o
version.json, gera odeploys.jsone realiza um commit automático no Git com a tag[version-bump].
Warning
NÃO ADICIONE O UPDATE-VERSION AO PACKAGE.JSON No ScoreOdonto, o arquivo
frontend/package.jsondeve conter apenas"build": "vite build". Adicionarnode ../update-version.js &&ao script de build dentro do Docker fará com que a versão seja incrementada em um ambiente efêmero e não persista no Git, resultando em versões congeladas ou duplicadas na interface.
🐳 Arquitetura de Container (Stateless Build)
Como a versão já vem incrementada e persistida do Host via rsync, o Docker apenas compila o que recebe:
- O Build Context no
docker-compose.ymlaponta para a raiz do projeto (context: .). - O
Dockerfiledo frontend realiza ovite buildde forma limpa.
🤖 Fluxo de Auto-Cura (Self-Healing) com Grafana/Gitea
Para automatizar a geração de Issues no repositório ruicesar/scoreodonto.com quando ocorrerem falhas em produção (VPS 1):
- Grafana (Painel Central): Regras de alerta configuradas com a tag
repo="scoreodonto.com". - Gitea-Bridge (VPS 1): Escuta na porta 9091 e faz o POST na API do Gitea.
Important
Diferenciação de Portas:
- 9002: Webhook de Deploy (VPS 4).
- 9091: Bridge de Auto-Cura (VPS 1).