Home | Escopo e Cronograma | Processo | Design/Mockups | Configuração | Arquitetura | Infra | Código | BD |
---|
Esta seção descreve a arquitetura do projeto, incluindo a organização dos serviços, tecnologias utilizadas e principais decisões técnicas. O objetivo é fornecer uma visão clara de como os componentes do sistema interagem e como cada parte foi estruturada.
Sumário
Visão Geral
O projeto segue uma arquitetura cliente-servidor, onde o frontend se comunica com a API backend, que por sua vez interage com o banco de dados PostgreSQL. A aplicação adota um design modular e desacoplado, garantindo escalabilidade e manutenibilidade.
Frontend
Repositório: https://tools.ages.pucrs.br/saude-bucal-quilombola/front-end
Backend
Repositório: https://tools.ages.pucrs.br/saude-bucal-quilombola/back-end
Banco de Dados
O sistema utiliza um banco PostgreSQL, com modelagem relacional definida no Prisma ORM.
Para mais detalhes sobre estrutura do banco, consulte as documentações:
Fluxo de Dados
O fluxo de dados segue uma abordagem estruturada:
- Usuário acessa o frontend
- Frontend consome a API backend
- Backend processa e interage com o banco de dados
- Os dados são retornados ao frontend para exibição
Tecnologias
React
React é uma biblioteca JavaScript para construção de interfaces de usuário dinâmicas e reativas. Sua arquitetura baseada em componentes permite a criação de elementos reutilizáveis, como formulários de questionário, cards de informações de saúde bucal e seções interativas da cartilha educativa. Com o Virtual DOM, React otimiza o desempenho ao atualizar apenas as partes necessárias da interface, ideal para exibir recomendações personalizadas em tempo real aos usuários. A integração com ferramentas como React Router facilita a navegação entre a área pública e o painel administrativo.
Typescript
TypeScript adiciona tipagem estática ao JavaScript, garantindo maior segurança e prevenção de erros durante o desenvolvimento. No projeto, é crucial para validar dados complexos, como respostas dos questionários sociodemográficos e informações de saúde bucal das comunidades quilombolas. A tipagem também facilita a colaboração entre equipes, especialmente na integração entre o frontend (React) e o backend (Node.js/NestJS), reduzindo inconsistências no processamento de dados clínicos e territoriais.
Tailwind
Tailwind CSS é um framework de estilização utilitário que acelera o desenvolvimento de interfaces responsivas. Sua abordagem modular permite criar designs acessíveis para dispositivos móveis e desktop, essencial para comunidades quilombolas com diferentes níveis de acesso à tecnologia.
NodeJS
Node.js é uma plataforma para execução de JavaScript no lado do servidor, ideal para construir APIs rápidas e escaláveis. No contexto do projeto, será responsável por processar respostas dos questionários, gerar recomendações personalizadas de saúde bucal e integrar dados sociodemográficos com critérios clínicos. Sua natureza não bloqueante permite lidar com múltiplas requisições simultâneas, como o envio de dados e acesso administrativo a relatórios.
NestJS
NestJS é um framework backend em TypeScript que combina padrões de programação orientada a objetos e funcional, ideal para estruturar a lógica complexa do projeto. Sua arquitetura modular permite organizar funcionalidades como autenticação de administradores, processamento de dados e integração segura com o banco de dados Postgre. Além disso, a injeção de dependências nativa simplifica a manutenção do sistema.
PostgreSQL
PostgreSQL é um banco de dados relacional de código aberto, robusto e escalável, ideal para armazenar dados estruturados de forma segura e confiável. Suporte a transações ACID garante integridade em operações como atualizações simultâneas do painel administrativo ou importação de grandes volumes de dados. Com recursos como buscas rápidas via indexação, consultas complexas para cruzamento de variáveis e integração simplificada com ferramentas como o Prisma, facilita a modelagem e o gerenciamento eficiente de dados. Mecanismos de segurança nativos, como criptografia e controle de acesso detalhado, protegem informações sensíveis, enquanto sua escalabilidade suporta desde pequenas implantações até sistemas de alto desempenho.
Prisma
Prisma é uma ferramenta de ORM (Mapeamento Objeto-Relacional) que simplifica a interação com bancos de dados por meio de um esquema declarativo. Ele permite definir modelos de dados de forma intuitiva e gera automaticamente consultas SQL otimizadas, garantindo type safety e prevenindo erros comuns em operações de CRUD. Com suporte nativo a migrações de banco de dados, o Prisma facilita a evolução do esquema sem comprometer a integridade dos dados. Sua integração direta com PostgreSQL assegura desempenho em consultas complexas além de oferecer validação em tempo de compilação para evitar inconsistências.
Docker
Docker é uma ferramenta de containerização que simplifica a implantação e o gerenciamento do ambiente do projeto. Ele isola serviços como o banco de dados PostgreSQL e o backend em NestJS em containers independentes, garantindo compatibilidade entre ambientes de desenvolvimento e produção. Isso é crucial para implantar o sistema em servidores de saúde pública e escalar a aplicação conforme a demanda, especialmente para atender comunidades quilombolas distribuídas em diferentes regiões. A containerização também facilita a configuração de ambientes específicos para processamento estatístico e garante que atualizações futuras não afetem a estabilidade do sistema.