Frontend Next.js/React — Interface de usuário para ecossistema Aster/UVA
O app-frontend é a interface de usuário principal do ecossistema Aster/UVA, desenvolvida em Next.js 14 com App Router. Sua função é fornecer uma experiência de usuário completa e integrada para gerenciamento de projetos de energia solar, incluindo módulos comerciais, contratos, projetos, produção, obras, financeiro, recursos humanos e administração. O frontend atua como ponto de entrada único para todos os microserviços do sistema, proporcionando uma interface unificada e responsiva para operações complexas de gestão empresarial.
src/app/layout.js com Theme, Settings, Snackbar, Motion, Permissions, i18n, React Query e Firebase Auth.src/app/comercial/layout.js, src/app/financeiro/layout.js, etc.src/components (UI genérica: tabelas, dialogs, formulários, gráficos, mapas)src/sections (telas por domínio: comercial, financeiro, contratos, etc.)src/assets (recursos: ícones, ilustrações, imagens, fontes)src/theme (tema MUI customizado), src/global.css (estilos globais + mapbox-gl.css)src/app/* com page.js, layout.js e loading.jssrc/routes/paths.js e src/routes/paths/* por domínio[id], [billId], [propostaId]src/api/api.js (axios + Authorization: Bearer, x-tenant-id)src/providers/permission-provider.js e guardas em src/auth/guard/*src/auth/context/firebase/* e AuthProvider)src/auth/context/*Não aplicável - Frontend puro sem backend próprio
/login, /register, /forgot-password, /verify, /meu-perfil/comercial/visao-geral, /comercial/visao-geral-2/comercial/orcamento, /comercial/orcamento/novo, /comercial/orcamento/[id], /comercial/orcamento/[id]/editar/comercial/orcamento/[id]/proposta/nova-proposta, /comercial/orcamento/[id]/proposta/[propostaId]/editar/comercial/orcamento/[id]/proposta/[propostaId]/proposta-detalhada/comercial/orcamento/[id]/unidade-consumidora/novo, /comercial/orcamento/[id]/unidade-consumidora/[idUnidade]/editar/comercial/orcamento/workflow, /comercial/orcamento/workflow/finalizados/comercial/funil-de-vendas, /comercial/funil-de-vendas/funil-e-tags/comercial/clientes, /comercial/clientes/novo, /comercial/clientes/[id], /comercial/clientes/[id]/editar/contratos/visao-geral, /contratos/dashboard, /contratos/gestao-contratos/contratos/gestao-contratos/workflow, /contratos/gestao-contratos/workflow/finalizados/contratos/emitir-contrato/[id], /contratos/criar-contrato, /contratos/[id]/projetos/visao-geral, /projetos/gestao-projetos, /projetos/gestao-projetos/workflow/projetos/gestao-projetos/workflow/finalizados, /projetos/vistorias, /projetos/vistorias/[id]/projetos/vistorias/workflow, /projetos/vistorias/workflow/finalizados, /projetos/[id]/producao/visao-geral, /producao/produtos, /producao/produtos/novo, /producao/produtos/[id]/producao/produtos/[id]/editar, /producao/produtos/categorias, /producao/ordem/producao/gestao-producao, /producao/gestao-producao/workflow, /producao/gestao-producao/workflow/finalizados/producao/fornecedores, /producao/fornecedores/novo, /producao/fornecedores/[id], /producao/fornecedores/[id]/editar/producao/fornecedores/list, /producao/[id]/obras/visao-geral, /obras/gestao-obras, /obras/gestao-obras/workflow/obras/gestao-obras/workflow/finalizados, /obras/[id]/financeiro/visao-geral, /financeiro/contas, /financeiro/contas/nova-conta/financeiro/contas/[billId], /financeiro/contas/[billId]/editar, /financeiro/contas/dar-baixa/[billId]/financeiro/movimentacoes, /financeiro/movimentacoes/nova-movimentacao, /financeiro/movimentacoes/[id]/financeiro/categorias, /financeiro/caixas-e-bancos, /financeiro/caixas-e-bancos/nova-conta/financeiro/caixas-e-bancos/[id], /financeiro/caixas-e-bancos/[id]/editar/financeiro/clientes, /financeiro/clientes/novo, /financeiro/clientes/[id], /financeiro/clientes/[id]/editar/financeiro/fornecedores, /financeiro/fornecedores/novo, /financeiro/fornecedores/[id], /financeiro/fornecedores/[id]/editar/suprimentos/visao-geral, /suprimentos/fornecedores, /suprimentos/fornecedores/novo/suprimentos/fornecedores/[id], /suprimentos/fornecedores/[id]/editar/recursos-humanos/visao-geral, /recursos-humanos/colaboradores, /recursos-humanos/colaboradores/novo/recursos-humanos/colaboradores/[id], /recursos-humanos/colaboradores/[id]/editar/administracao/visao-geral, /administracao/modelo-de-proposta, /administracao/modelo-de-contrato/administracao/minha-empresa, /administracao/unidades-de-negocio, /administracao/unidades-de-negocio/nova/administracao/natureza-de-operacao, /administracao/natureza-de-operacao/nova/administracao/usuarios, /administracao/usuario/novo, /administracao/usuarios/[id]/detalhes/administracao/usuario/[id]/editar/backoffice, /backoffice/customers, /backoffice/customers/novo, /backoffice/customers/[id]/backoffice/customers/[id]/editar, /backoffice/plans, /backoffice/subscriptions/backoffice/instances, /backoffice/instances/[id]/ (home), /dashboard, /error/403, /error/404, /error/500Não aplicável - Frontend puro sem persistência própria
NEXT_PUBLIC_HOST_API, NEXT_PUBLIC_ASSETS_API, NEXT_PUBLIC_GATEWAY_BASE_URLNEXT_PUBLIC_MS_PRODUCTS_BASE_URL, NEXT_PUBLIC_ADMIN_BASE_URL, NEXT_PUBLIC_BACKOFFICE_BASE_URLNEXT_PUBLIC_COMERCIAL_BASE_URL, NEXT_PUBLIC_CONTRACT_BASE_URL, NEXT_PUBLIC_FINANCIAL_BASE_URLNEXT_PUBLIC_COMMON_BASE_URL, NEXT_PUBLIC_FACILITIES_BASE_URLNEXT_PUBLIC_S3_BASEURL (armazenamento de arquivos)NEXT_PUBLIC_FIREBASE_API_KEY, NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN, NEXT_PUBLIC_FIREBASE_PROJECT_IDNEXT_PUBLIC_FIREBASE_STORAGE_BUCKET, NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_IDNEXT_PUBLIC_FIREBASE_APPID, NEXT_PUBLIC_FIREBASE_MEASUREMENT_IDNEXT_PUBLIC_AUTH0_CLIENT_ID, NEXT_PUBLIC_AUTH0_DOMAIN, NEXT_PUBLIC_AUTH0_CALLBACK_URLNEXT_PUBLIC_AWS_AMPLIFY_USER_POOL_ID, NEXT_PUBLIC_AWS_AMPLIFY_USER_POOL_WEB_CLIENT_IDNEXT_PUBLIC_AWS_AMPLIFY_REGIONNEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_ANON_KEYNEXT_PUBLIC_MAPBOX_API (integração de mapas)NODE_OPTIONS (configurações do Node.js)NEXT_PUBLIC_BASE_URL (URL base da aplicação)app-frontend/
├── src/
│ ├── app/ # App Router: páginas, layouts, loading, not-found
│ │ ├── administracao/ # Gestão administrativa
│ │ ├── backoffice/ # Painel administrativo
│ │ ├── comercial/ # Módulo comercial
│ │ ├── contratos/ # Gestão de contratos
│ │ ├── dashboard/ # Dashboard principal
│ │ ├── error/ # Páginas de erro (403, 404, 500)
│ │ ├── financeiro/ # Módulo financeiro
│ │ ├── login/, register/ # Autenticação
│ │ ├── obras/ # Gestão de obras
│ │ ├── producao/ # Módulo de produção
│ │ ├── projetos/ # Gestão de projetos
│ │ ├── recursos-humanos/ # RH
│ │ ├── suprimentos/ # Gestão de suprimentos
│ │ └── layout.js # Layout raiz
│ ├── api/ # Serviços por domínio com axios + React Query
│ │ ├── administrator/ # Administração (usuários, unidades, modelos)
│ │ ├── backoffice/ # Customers, plans, subscriptions, instances
│ │ ├── commercial/ # Orçamentos, propostas, funil, clientes
│ │ ├── contract/ # Contratos, estágios, projetos, documentos
│ │ ├── financial/ # Contas, transações, categorias, clientes/fornecedores
│ │ ├── inventory/ # Fornecedores
│ │ ├── facilities/, common/, workflow/ # Arquivos, atividades, status
│ │ └── api.js # axios + interceptors + addTenantIdHeader
│ ├── auth/ # Contextos, guards, hooks; Firebase/Auth0/Amplify
│ ├── components/ # UI genérica, tabelas, mapas, dialogs, etc.
│ ├── sections/ # Telas por domínio + formulários e hooks
│ ├── routes/ # Paths utilitários, hooks de navegação
│ ├── theme/ # MUI ThemeProvider, overrides e tipografia
│ ├── providers/ # React Query, permissões, localização
│ ├── hooks/ # Hooks utilitários e stores pontuais
│ ├── assets/, _mock/, data/ # Recursos, mocks e dados auxiliares
│ ├── config-global.js # Exporta variáveis de ambiente e configs
│ └── global.css # Estilos globais + import Mapbox CSS
├── public/ # Assets estáticos (imagens, ícones, fontes)
├── Dockerfile # Multi-stage build; porta 3032; output standalone
├── next.config.js # SVGR, modularizeImports MUI, trailingSlash
├── jsconfig.json # Aliases como @api/*, @config/*, @sections/*
├── package.json # Dependências e scripts
└── README.md # Documentação do projeto
NEXT_PUBLIC_GATEWAY_BASE_URL (axios; header Authorization via cookie access_token)x-tenant-id/contracts/* (projetos, estágios, documentos, anexos, inspeções)/financial/* (contas, transações, categorias, clientes, fornecedores)/commercial/* (clientes, budgets, proposals, funil, tags, irradiação)/administrator/* (unidades, modelos, empresas, usuários, assinantes)/backoffice/* (customers, plans, subscriptions, instances)/inventory/* (fornecedores)/facilities/*, /common/*, /workflow/* (arquivos, atividades, status, uploads)FIREBASE_API de src/config-global.jssrc/auth/context/supabase/lib.js (chaves em ENV)react-map-gl e estilos importados em global.cssreact-pdf (pdfjs worker), @react-pdf/renderer, docx e docx-previewNEXT_PUBLIC_S3_BASEURLcommon/files)access_token e enviados em Authorization: Bearerx-tenant-id quando aplicávelO app-frontend representa uma solução robusta e escalável para gestão de projetos de energia solar, desenvolvida com tecnologias modernas e seguindo boas práticas de desenvolvimento. A arquitetura modular e orientada a domínios facilita a manutenção e evolução do sistema, enquanto as integrações com múltiplos microserviços proporcionam uma experiência de usuário unificada e completa.