Arquitetura Técnica
1. Resumo Executivo
tupynambalucas.dev é um portal de desenvolvedor pessoal, portfólio, blog e motor de automação. O sistema é construído sobre uma arquitetura Monorepo usando PNPM Workspaces e Turborepo, priorizando alto desempenho, tipagem estrita e isolamento de domínio por meio de uma estratégia de Contexto Delimitado (Bounded Context).
A arquitetura é projetada para hospedar o site central do desenvolvedor (hub) e o compilador automatizado de estatísticas (profile), logicamente desacoplados no nível raiz.
2. Estrutura Monorepo e Contextos Delimitados
A base de código do tupynambalucas.dev é organizada em Contextos de Domínio no nível raiz. Para um detalhamento dos papéis da aplicação, filosofia de contextos e estruturas de diretórios, por favor consulte o guia de Contextos Delimitados:
Contextos Delimitados e Papéis de Workspace
Explicação detalhada sobre Contextos Delimitados, Estrutura Monorepo e Papéis de Workspace.
3. Estratégia de Build e Resolução de Workspace
Empregamos uma Arquitetura Híbrida de Alto Desempenho otimizada pelo Turborepo para gerenciar dependências internas e orquestração de tarefas.
3.1. Orquestração de Tarefas (Turborepo)
O Turborepo é o motor por trás da nossa produtividade no monorepo. Ele lida com:
- Grafo de Dependências: Identificação automática de quais pacotes precisam ser construídos ou verificados com base em alterações locais.
- Acoplamento de Infraestrutura: Orquestração de serviços do Docker Compose como pré-requisitos para o desenvolvimento da aplicação (por exemplo,
pnpm hub:upinicia os bancos de dados antes da API). - Cache: Aceleração de builds, checagem de tipos e linting ao pular módulos não alterados.
- Saídas Unificadas: Padronização de artefatos de build em
dist/(para aplicativos e core) ebuild/(para Docusaurus).
4. Comandos Operacionais
Usamos uma interface CLI unificada definida no package.json raiz para orquestrar e gerenciar o monorepo em todos os ambientes (desenvolvimento, homologação e produção).
Para uma lista de referência completa de scripts de orquestração, comandos de serviços e fluxos de trabalho da pilha de desenvolvimento, por favor consulte a Referência de Comandos:
Referência de Comandos
Referência centralizada para todos os comandos de CLI, scripts e fluxos de trabalho de orquestração.
5. Princípios Arquiteturais
Para garantir manutenibilidade extrema, legibilidade a longo prazo e limites claros entre nossos contextos de domínio, o tupynambalucas.dev segue quatro princípios arquiteturais fundamentais.
Clique em qualquer cartão abaixo para explorar uma análise aprofundada de cada princípio:
Princípios SOLID
Responsabilidade Única, Aberto/Fechado, Substituição de Liskov, Segregação de Interface e Inversão de Dependência.
Fonte Única da Verdade (SSOT)
Garantindo que cada elemento de dados tenha uma representação única, inequívoca e autoritativa.
Configuração Herdada
Cascateamento de configurações hierárquicas entre contextos do workspace para promover reuso e padrões estritos.
DDD & Feature-Sliced Design (FSD)
Aplicando princípios de Domain-Driven Design e Feature-Sliced Design para organização modular e escalável do código-fonte.
6. Pilha de Tecnologia
6.1. Gerenciamento e Orquestração de Pacotes
- Ambiente de Execução (Runtime): Node.js 22+ (LTS).
- Gerenciador de Pacotes: PNPM v11 (Gerenciamento estrito de dependências via symlinks e armazenamento de conteúdo por links físicos/hard-links).
- Gerenciamento de Dependências: Catálogos do PNPM (PNPM Catalogs) (Controle de versão centralizado para dependências compartilhadas no workspace usando o protocolo
catalog:). - Orquestrador de Tarefas: Turborepo (Cache otimizado e execução paralela).
- Ferramental (Tooling): TypeScript 6, ESLint 10 (Configuração Plana/Flat Config), Prettier 3, Vite 8, Zig.
6.2. Backend (Camada de API)
- Framework: Fastify v5 (Otimizado para alta taxa de transferência/throughput).
- ORM/ODM: Mongoose com MongoDB (com Replica Set ativado para transações ACID).
- Validação: Zod (Integrado através de pacotes core específicos de domínio).
- Processamento: BullMQ + Redis para tarefas assíncronas.
6.3. Frontend (Camada de UI)
- Framework: React 19.
- Gerenciamento de Estado: Zustand (Estado atômico e performático usando Slices e Selectors).
- Estilização: TailwindCSS v4 + CSS Modules para estilos com escopo local.
- Animações: GSAP (Feedback interativo de alta fidelidade).
7. Padrões Arquiteturais
7.1. Responsabilidades em Camadas (Backend)
Cada domínio segue uma hierarquia estrita para isolar responsabilidades: Controller -> Service -> Repository -> Model
- Controller: Lida com E/S HTTP (HTTP I/O), definições de rotas e validação de esquemas Zod.
- Service: Orquestra regras de negócio, lógica complexa e transações entre modelos.
- Repository: Abstrai a lógica de persistência de dados (Padrão de Repositório/Repository Pattern) para manter os serviços agnósticos ao banco de dados.
- Model: Define a estrutura do banco de dados Mongoose e as regras de integridade dos dados.
Exemplo de Implementação (Repository Pattern)
Para manter a tipagem estrita e o desacoplamento, os repositórios recebem o modelo do Mongoose por meio de injeção de dependência.
// hub/services/api/src/domains/auth/auth.repository.ts
import type { Model } from 'mongoose';
import type { IUser } from '@tupynambalucas-hub/core';
export class AuthRepository {
constructor(private readonly userModel: Model<IUser>) {}
async findByEmail(email: string): Promise<IUser | null> {
return this.userModel.findOne({ email }).exec();
}
async create(data: Partial<IUser>): Promise<IUser> {
return this.userModel.create(data);
}
}
7.2. Orquestração de Estado no Frontend (Zustand e FSD)
Para evitar stores monolíticas e renderizações desnecessárias no React 19, o frontend adota um Padrão de Seletores Atômicos (Atomic Selectors Pattern) estrito acoplado a Hooks de Domínio:
- Separação de Estado vs. Ações: A store do Zustand separa o
state(estado) dasactions(ações). A lógica pura de domínio (como cálculos) é extraída para fora da store para manter a Fonte Única da Verdade (SSOT) e a testabilidade. - Seletores Atômicos: Exportações monolíticas (
export const useAuthStore = create(...)) são envelopadas em hooks específicos. - Hooks de Domínio (
src/domains/*/hooks): Os seletores são expostos como hooks individuais (por exemplo,useAuthUser(),useProductActions()). Isso garante que um componente seja renderizado novamente apenas quando a fatia exata do estado que ele assina for alterada.
Exemplo de Implementação (Zustand Atomic Selectors)
// hub/services/web/src/domains/cart/hooks/useCart.ts
import { useCartStore } from '../cart.store';
// Atomic Selectors
export const useCartItems = () => useCartStore((state) => state.items);
export const useCartActions = () => useCartStore((state) => state.actions);
// Derived State Selector (Never stored in state)
export const useCartTotal = () =>
useCartStore((state) => state.items.reduce((acc, item) => acc + calculateItemPrice(item), 0));
7.3. Injeção de Dependência
Gerenciamento modular por meio de decoradores do Fastify e um registro centralizado para desacoplar componentes e facilitar testes.
8. Infraestrutura e Implantação
Projetado para Excelência Auto-Hospedada na Hetzner Cloud, nossos padrões de conteinerização, topologias Docker Compose multisserviço, estratégia de variáveis de ambiente e padrões de rede são gerenciados de forma centralizada.
Para um guia completo e aprofundado sobre estruturas de diretórios, modelos de Docker Compose de alto padrão e padrões avançados de multisserviços (incluindo os padrões Gateway e Pilha Distribuída), consulte a documentação dedicada:
Infraestrutura
Para manter a infraestrutura do tupynambalucas.dev, ferramentas de DevOps e ambientes de execução em segundo plano robustos, fáceis de manter e altamente modulares, este documento unifica nossos padrões de infraestrutura auto-hospedada, convenções de diretório e topologias Docker multisserviço.
Implantação
Para garantir alta disponibilidade, segurança e ambientes reproduzíveis, o tupynambalucas.dev utiliza um modelo de implantação moderno e auto-hospedado projetado para máquinas virtuais Hetzner Cloud. Este guia descreve nossa estratégia de implantação, sincronização de ambiente e procedimentos operacionais.
9. Automação de Studio e IA (Arquitetura)
Os workspaces Studio e Cortex fornecem a infraestrutura para alinhamento de design-para-código, pipelines de automação e engenharia assistida por IA.
- Alinhamento de Design e Ativos: Gerenciado no Studio Workspace.
- Ponte Contextual de IA e Entrada: Gerenciado no Cortex Workspace.
10. Padrões de Segurança
O tupynambalucas.dev segue uma estratégia de segurança em múltiplas camadas. Para detalhes detalhados de implementação, consulte o documento de Arquitetura de Segurança.
- Proteção contra Bots: Integração com o Cloudflare Turnstile para todos os pontos de entrada de autenticação.
- Mitigação de Força Bruta: Limitação de taxa baseada em IP e lógica de bloqueio de conta.
- Tipagem Estrita: Modo estrito do TypeScript (TypeScript Strict Mode) ativado em todo o projeto.
- Integridade de Build: Aprovações automatizadas de scripts de build via
pnpm.onlyBuiltDependencies. - Integridade de Dados: Módulo de Replica Set do MongoDB (
rs0) para confiabilidade transacional e conformidade com ACID. - Validação: Validação estrita com Zod em cada ponto de entrada (requisições de API, variáveis de ambiente, contratos internos).