Este repositório contém uma plataforma integrada através de uma arquitetura de Microfrontends (MFEs) federados usando Module Federation 2.0 e consumindo um Design System corporativo centralizado (@rafacdomin/ds-core).
- Host (Shell): Next.js 14 App Router que atua como orquestrador do layout principal, sidebar, rodapé, controle de carregamento dinâmico e tratamento de erros com Error Boundaries.
- Três Remotes independentes:
/(Home): MFE React (React 18 puro com Webpack 5 manual)./page1: MFE Pages Router (Next.js 14 Pages Router)./page2: MFE App Router (Next.js 14 Pages Router estrutural).
- Consumo do Design System: Todos os MFEs utilizam o pacote
@rafacdomin/ds-core(como os componentesCardeTag) de forma integrada e reagem dinamicamente aos tokens globais de estilo.
O diagrama abaixo ilustra como o Shell orquestra a injeção de dependências compartilhadas e consome os módulos remotos:
graph TD
%% Nós de Aplicação
Shell[Shell Host <br> Next.js 14 App Router - Porta 3000]
MfeReact[MFE React <br> Webpack 5 - Porta 3003]
MfePages[MFE Pages Router <br> Next.js 14 - Porta 3002]
MfeApp[MFE App Router <br> Next.js 14 - Porta 3001]
%% Injeção de dependências
DS["@rafacdomin/ds-core <br> (Design System CSS & Componentes)"]
ReactShared["React & React-DOM 18"]
%% Relações de Consumo
Shell -- Injeta React & DS em window --> WS[Share Scope default]
MfeReact -- Consome dependências de --> WS
MfePages -- Consome dependências de --> WS
MfeApp -- Consome dependências de --> WS
%% Fluxo de Renderização
Shell -- Rota / --> MfeReact
Shell -- Rota /page1 --> MfePages
Shell -- Rota /page2 --> MfeApp
A estrutura monorepo do projeto está organizada da seguinte forma:
micro-frontend/
├── mfe-shell/ # Host Orquestrador (Next.js 14 App Router) - Porta 3000
├── mfe-app-router/ # Remote exposto em /page2 (Next.js 14) - Porta 3001
├── mfe-pages-router/ # Remote exposto em /page1 (Next.js 14) - Porta 3002
├── mfe-react/ # Remote exposto na Home / (React 18 + Webpack 5) - Porta 3003
├── references/ # Guias, referências e documentações de apoio
└── SPEC.md # Especificação técnica do ecossistema
A plataforma foi construída sob rígidos critérios de consistência visual utilizando o pacote npm @rafacdomin/ds-core:
- Tokens CSS Nativos:
- As cores, bordas, fontes e elevações utilizam as variáveis CSS nativas expostas pelo Design System (ex:
var(--color-primary),var(--color-bg-base),var(--radius-lg)).
- As cores, bordas, fontes e elevações utilizam as variáveis CSS nativas expostas pelo Design System (ex:
- Componentes Unificados:
- O layout dos remotes utiliza os blocos visuais
<Card>e<Tag>importados diretamente da biblioteca centralizada.
- O layout dos remotes utiliza os blocos visuais
- Herdabilidade de Fontes:
- O Host importa e define as variáveis de fonte Geist. As classes do layout global propagam a tipografia através de
font-family: var(--font-geist-sans), sans-serif, assegurando consistência em todas as renderizações de remotes.
- O Host importa e define as variáveis de fonte Geist. As classes do layout global propagam a tipografia através de
- Fallback e Tratamento de Erros:
- Em caso de indisponibilidade de rede de algum remote, o Shell exibe um fallback de erro amigável, estilizado com o componente
<Card variant="bordered">e alinhado aos tokens de alerta do design system.
- Em caso de indisponibilidade de rede de algum remote, o Shell exibe um fallback de erro amigável, estilizado com o componente
Certifique-se de ter o Node.js (versão 18 ou superior) instalado em sua máquina.
Como o repositório é composto por aplicações isoladas, cada pasta possui suas dependências. Para instalar todas, execute nas respectivas pastas:
# Na raiz, você pode instalar individualmente
cd mfe-shell && npm install
cd ../mfe-app-router && npm install
cd ../mfe-pages-router && npm install
cd ../mfe-react && npm installInicie os servidores de desenvolvimento de cada aplicação simultaneamente (em abas separadas do terminal):
# No diretório de cada aplicação:
npm run dev| Aplicação | Comando | Porta | Rota no Shell |
|---|---|---|---|
| mfe-shell | npm run dev |
3000 |
Host (Casca) |
| mfe-app-router | npm run dev |
3001 |
/page2 |
| mfe-pages-router | npm run dev |
3002 |
/page1 |
| mfe-react | npm run dev |
3003 |
/ (Home) |
Acesse http://localhost:3000 no seu navegador para visualizar o ecossistema integrado.
Os testes unitários e de integração foram configurados utilizando Vitest e React Testing Library. Para executá-los em qualquer aplicação:
npm run test