Este repositório contém a documentação que explica a arquitetura e a integração entre os serviços do projeto "Sistema de Chamados".
O sistema foi desenhado com uma arquitetura monorepo, onde o frontend e o backend são aplicações separadas que se comunicam. A integração é feita através de uma API REST e WebSockets, e os dados são gerenciados por um banco de dados na nuvem.
O diagrama abaixo ilustra o fluxo de dados e a comunicação entre os principais serviços da aplicação.
graph TD
A[Frontend: Next.js/React] -- Requisição HTTP --> B[Backend: Node.js/Express]
A -- WebSocket (Tempo Real) --> B
B -- Query SQL --> C(Database: Supabase)
C -- Dados --> B
B -- JSON Response --> A
Frontend (Next.js): A aplicação é hospedada na Vercel. Ela faz requisições HTTP para a API do backend para operações como autenticação e criação de chamados. A URL do backend é configurada como uma variável de ambiente.
Backend (Node.js/Express): A API é hospedada no Railway. Ela se conecta ao banco de dados Supabase e processa todas as requisições do frontend. O token JWT é usado para autenticar as requisições, e o Socket.io gerencia as conexões em tempo real.
Banco de Dados (Supabase): O banco de dados PostgreSQL é a fonte única de verdade. Ele armazena os dados de usuários e tickets. A URL de conexão é uma variável de ambiente no backend.
WebSockets (Socket.io): Quando um novo chamado é criado, o backend usa a conexão WebSocket para enviar um alerta instantâneo para todos os técnicos e administradores conectados, sem que eles precisem atualizar a página.