Skip to content

Project Structure - Estrutura do Projeto

Stack Tecnológico

CategoriaTecnologiaVersão
FrameworkVue 3 (Composition API)3.4.15
Build ToolVite5.0.11
LinguagemTypeScript5.3.0
RoteamentoVue Router4.2.5
EstadoPinia2.1.7
UI LibraryNaive UI2.37.3
CSS FrameworkTailwind CSS3.4.1
Pré-processadorSCSS1.70.0
HTTP ClientAxios1.7.2
i18nVue i18n9.x
ÍconesOh Vue Icons1.0.0-rc3

Estrutura de Pastas

src/
├── assets/              # Estilos globais e imagens
│   └── styles/scss/     # Arquivos SCSS modulares
├── components/          # Componentes globais compartilhados
│   ├── ContainerApp/    # Layout wrapper principal
│   ├── Header/          # Navegação superior
│   ├── SideMenu/        # Menu lateral
│   └── Logo.vue
├── config/              # Configurações (API, i18n)
├── locales/             # Arquivos de tradução (en.json, pt-BR.json)
├── domain/              # Tipos e constantes de domínio centralizados
│   ├── common/          # Tipos compartilhados (BaseEntity, Person)
│   ├── contract/        # Tipos do domínio Contract
│   └── template/        # Tipos do domínio Template
├── hooks/               # Stores Pinia e composables globais (sem dono de módulo)
├── models/              # Tipos globais de response
├── modules/             # Módulos de features (arquitetura principal)
│   ├── auth/
│   ├── contracts/
│   ├── dashboard/
│   ├── templates/
│   └── [outros módulos]
├── router/              # Configuração de rotas principal
├── theme/               # Configuração de temas (dark/light)
└── utils/               # Funções utilitárias puras (formatação, strings)

Não existem src/stores/ nem src/types/. Stores globais ficam em src/hooks/; tipos vão para src/domain/<mod>/.


Arquitetura Modular

Cada módulo segue a estrutura:

modules/[nome-modulo]/
├── components/          # Componentes específicos do módulo
├── pages/               # Páginas/Views do módulo
├── router/              # Rotas específicas do módulo
├── services/            # Chamadas de API do módulo
├── hooks/               # Stores Pinia e composables (useXxx.ts, sem sufixo Store)
└── helpers/             # Helpers UI/UX por tópico (kebab-case, ex: contract-flow.ts)

Não existem as pastas stores/, composables/ ou types/ por módulo. Stores e composables ficam todos em hooks/; tipos de domínio vão para src/domain/<mod>/.


Variáveis de Ambiente

env
VITE_API_URL="http://localhost:8011"

Scripts de Desenvolvimento

ScriptDescrição
npm run devServidor de desenvolvimento
npm run buildBuild de produção
npm run test:unitTestes unitários
npm run lintLint e correção automática
npm run formatFormatação com Prettier
npm run start:mockAPI mock com JSON Server