Sistema Integrado de Gestão

Documentação geral da arquitetura e diretrizes do projeto

Introdução

Este documento tem como objetivo apresentar de forma clara e acessível a base tecnológica e os princípios que guiarão o desenvolvimento do sistema integrado de gestão da nossa empresa. Ele foi elaborado para que todas as partes interessadas – mesmo sem conhecimento técnico profundo – possam compreender as decisões tomadas e o caminho que seguiremos.

O sistema está sendo desenvolvido por um único desenvolvedor full stack, mas foi planejado desde o início para suportar crescimento acelerado e organizado, permitindo a adição de novos módulos, integrações e membros à equipe no futuro sem grandes reestruturações.

Idioma oficial da interface: Português (Brasil)
Idioma do código e documentação técnica: Inglês

🎯 Objetivo Principal

Criar o "cérebro" da startup: uma base de dados centralizada e uma arquitetura de software robusta que permita armazenar e processar todas as informações dos processos internos, servindo como fundação para o crescimento da empresa.

Stack Tecnológico Aprovado

A seleção das tecnologias priorizou escalabilidade, manutenibilidade e a familiaridade do desenvolvedor com as ferramentas, garantindo produtividade e qualidade desde o início.

🖥️ Frontend

  • Next.js + TypeScript
  • React 18+ (com App Router)
  • Tailwind CSS para estilização
  • TanStack Query (gerenciamento de estado do servidor)
  • Zustand (estado global de UI)
  • i18next (internacionalização pt-BR)

⚙️ Backend

  • NestJS + TypeScript
  • Prisma ORM
  • MySQL 8
  • JWT + Refresh Tokens
  • Zod para validação
  • Swagger/OpenAPI (documentação automática)
📦 Por que Next.js? +

Next.js foi escolhido porque oferece renderização híbrida (SSR, SSG, ISR), melhor performance e SEO, além de uma estrutura de pastas moderna e escalável. Ele também permite criar API Routes para tarefas leves sem misturar com o backend principal.

📦 Por que NestJS? +

NestJS impõe uma arquitetura modular baseada em conceitos como injeção de dependências e decorators, o que facilita a organização, testes e manutenção à medida que o sistema cresce. É ideal para projetos que precisam escalar de forma ordenada.

📦 Prisma + MySQL +

O Prisma oferece um ORM moderno, com tipagem forte e migrações simples. Combinado com MySQL (banco relacional maduro e amplamente utilizado), garante integridade dos dados e facilidade de consulta.

Arquitetura Geral

O sistema será organizado em um monorepo (um único repositório com múltiplas aplicações), separando claramente o frontend e o backend. Isso facilita o desenvolvimento, testes e deploy independentes.

🗂️ Estrutura do Monorepo (prevista)

PastaDescrição
apps/webAplicação Next.js (frontend)
apps/apiAplicação NestJS (backend)
packages/Código compartilhado (tipos, utilitários)

A comunicação entre frontend e backend será feita via API REST, utilizando JSON e autenticação baseada em JWT (com refresh tokens). Toda a documentação da API será gerada automaticamente com Swagger.

🔐 Segurança e Autenticação

A autenticação será stateless com JWT, garantindo escalabilidade horizontal. Refresh tokens serão utilizados para manter sessões seguras e permitir revogação quando necessário.

Princípios de Desenvolvimento

🌐 Idioma

Interface do usuário: 100% em português (Brasil).
Código, comentários e documentação técnica: inglês, seguindo convenções internacionais.

📐 Padrões e Qualidade

  • Utilizar TypeScript em todo o projeto para segurança de tipos.
  • Seguir boas práticas de clean code e SOLID.
  • Testes unitários e de integração desde o início (Jest, Testing Library).
  • Linting e formatação automática (ESLint + Prettier).

🚀 Escalabilidade como Pilar

Cada decisão arquitetural considera o crescimento futuro: desacoplamento entre módulos, APIs versionadas, banco de dados preparado para índices e particionamento, e infraestrutura containerizada (Docker) para facilitar deploy e escalonamento.

Estratégia de Escalabilidade

Desde o primeiro dia, o sistema foi pensado para suportar aumento de carga e de funcionalidades sem reescritas traumáticas. As principais medidas são:

  • Backend stateless: autenticação via JWT, sem sessões no servidor.
  • Separação de responsabilidades: frontend e backend independentes, podendo escalar horizontalmente.
  • Banco de dados relacional com ORM: fácil migração para réplicas ou clusters no futuro.
  • Monorepo com Turborepo: builds otimizados e reutilização de código.
  • Containerização: Docker para ambientes consistentes e orquestração futura (Kubernetes).

Essas escolhas permitem que, quando a equipe crescer, novos desenvolvedores possam se integrar rapidamente e o sistema possa ser distribuído sem grandes mudanças.

Roadmap Inicial

Os próximos passos do projeto serão executados em blocos de no máximo 10 etapas cada, sempre com aprovação prévia. A sequência planejada é:

  1. Configuração do monorepo (pnpm + Turborepo)
  2. Criação do app Next.js com Tailwind e estrutura base
  3. Criação do app NestJS com Prisma e conexão MySQL
  4. Implementação da autenticação JWT
  5. Definição dos primeiros módulos de negócio

Este roadmap será detalhado e atualizado conforme avançamos.

Atualização deste Documento

Esta documentação é viva e deve ser atualizada sempre que houver mudanças significativas na arquitetura, stack ou diretrizes. Para facilitar, recomenda-se manter o controle de versão no repositório e registrar as alterações em um changelog.

Última atualização: