Estruturas de Pastas para Projetos
← Início
É uma base para a criação dos projetos seguindo padrões de documentação e desenvolvimento
1. Java/Spring Boot Web API - DDD Simplificado
src/main/java/com/kairui/api/
├── KairuiApiApplication.java # Ponto de entrada (Main) da aplicação Spring Boot.
├── domain/ # Camada de Domínio: O "coração" do software, contém a lógica de negócio pura.
│ ├── model/ # Representações das entidades de negócio e objetos de valor.
│ │ ├── BaseEntity.java # Abstração JPA para campos comuns (ID, Auditoria) em bancos relacionais.
│ │ ├── BaseDocument.java # Abstração MongoDB para campos comuns em bancos de documentos.
│ │ ├── relational/ # Entidades mapeadas para o banco de dados relacional (Ex: MySQL/PostgreSQL).
│ │ └── document/ # Coleções mapeadas para o banco de dados NoSQL (Ex: MongoDB).
│ ├── repository/ # Interfaces de persistência (Portas de Saída) que definem o contrato de dados.
│ └── service/ # Serviços de Domínio: Regras de negócio que não pertencem a uma única entidade.
├── application/ # Camada de Aplicação: Orquestra o fluxo de dados entre a API e o Domínio.
│ ├── dto/ # Data Transfer Objects: Objetos para transporte de dados entre camadas.
│ │ ├── request/ # Objetos que representam comandos vindos de outras camadas internas.
│ │ └── response/ # Objetos que representam resultados processados pela aplicação.
│ └── mapper/ # Conversores (Ex: MapStruct) entre Entidades de Domínio e DTOs.
├── infrastructure/ # Camada de Infraestrutura: Detalhes técnicos e integrações externas.
│ ├── config/ # Classes de configuração do Spring (Security, Bean definitions, etc).
│ ├── security/ # Implementação da segurança (JWT, filtros, autenticação e autorização).
│ │ ├── JwtTokenProvider.java # Lógica de criação e decodificação de tokens JWT.
│ │ ├── JwtAuthenticationFilter.java # Filtro que intercepta requisições para validar a identidade.
│ │ └── JwtTokenResolver.java # Utilitário para extrair o token das requisições HTTP.
│ └── external/ # Clientes para serviços externos (Gateways de pagamento, APIs de terceiros).
└── api/ # Camada de Interface (Web): Porta de entrada externa do sistema.
├── controller/ # Endpoints REST: Expõe os recursos da API para o mundo exterior.
├── request/ # DTOs específicos de entrada da API (validações de entrada @Valid).
└── response/ # DTOs específicos de saída da API (formatos de resposta JSON).
src/main/resources/
├── application.yml # Configurações globais e definições de perfis ativos.
├── application-dev.yml # Configurações específicas para ambiente de desenvolvimento (Local/Docker).
└── application-prod.yml # Configurações de produção (usando variáveis de ambiente sensíveis).
Descrição das Camadas
| Camada |
Responsabilidade |
| application |
Orquestração de casos de uso, DTOs, mapeadores |
| domain |
Entidades, regras de negócio, interfaces de repositório |
| infrastructure |
Implementações técnicas, configs, segurança |
| api |
Controllers REST, DTOs de entrada/saída |
2. Projeto Frontend Next.js React (App Router)
src/
├── app/ # App Router (Next.js 13+)
│ ├── (auth)/ # Grupo de rotas - páginas de autenticação
│ │ ├── login/
│ │ │ └── page.tsx
│ │ └── register/
│ │ └── page.tsx
│ │
│ ├── (dashboard)/ # Grupo de rotas - páginas protegidas
│ │ ├── layout.tsx
│ │ ├── page.tsx # /dashboard
│ │ └── users/
│ │ └── page.tsx # /dashboard/users
│ │
│ ├── api/ # Rotas de API
│ │ ├── auth/
│ │ │ └── route.ts
│ │ └── users/
│ │ └── route.ts
│ │
│ ├── layout.tsx # Layout raiz
│ ├── page.tsx # Página inicial
│ ├── loading.tsx # UI de carregamento
│ ├── error.tsx # Boundary de erro
│ └── not-found.tsx # Página 404
│
├── components/ # Componentes reutilizáveis
│ ├── ui/ # Componentes base de UI (Button, Input, etc.)
│ ├── forms/ # Componentes de formulário
│ ├── layouts/ # Componentes de layout
│ └── shared/ # Componentes compartilhados
│
├── hooks/ # Hooks React customizados
│ ├── useAuth.ts
│ └── useApi.ts
│
├── lib/ # Utilitários e bibliotecas
│ ├── api.ts # Cliente API
│ ├── auth.ts # Utilitários de autenticação
│ └── utils.ts # Funções auxiliares
│
├── services/ # Camada de serviços API
│ ├── user.service.ts
│ └── auth.service.ts
│
├── types/ # Tipos TypeScript
│ ├── user.types.ts
│ └── api.types.ts
│
├── store/ # Gerenciamento de estado (Zustand/Redux)
│ └── index.ts
│
└── styles/ # Estilos globais
└── globals.css
public/ # Assets estáticos
├── images/
├── fonts/
└── favicon.ico
.env.local # Variáveis de ambiente
next.config.js
tailwind.config.js
tsconfig.json
Descrição dos Diretórios
| Diretório |
Responsabilidade |
| app/ |
Rotas e páginas do App Router |
| components/ |
Componentes React reutilizáveis |
| hooks/ |
Custom hooks |
| lib/ |
Utilitários e configurações |
| services/ |
Camada de comunicação com API |
| types/ |
Tipos TypeScript |
| store/ |
Estado global (Zustand) |
3. Projeto de Machine Learning em Python
project_root/
│
├── data/ # Diretório de dados
│ ├── raw/ # Dados brutos e imutáveis
│ ├── processed/ # Dados limpos/processados
│ ├── external/ # Fontes de dados externas
│ └── interim/ # Transformações intermediárias
│
├── notebooks/ # Jupyter notebooks
│ ├── exploration/ # Exploração de dados
│ │ └── 01_eda.ipynb
│ ├── experiments/ # Experimentos de modelos
│ │ └── 01_baseline.ipynb
│ └── reports/ # Relatórios de análise
│ └── final_report.ipynb
│
├── src/ # Código fonte
│ ├── __init__.py
│ │
│ ├── data/ # Processamento de dados
│ │ ├── __init__.py
│ │ ├── dataset.py # Classes de dataset
│ │ ├── loader.py # Carregamento de dados
│ │ └── preprocessing.py # Pré-processamento de dados
│ │
│ ├── features/ # Engenharia de features
│ │ ├── __init__.py
│ │ └── build_features.py
│ │
│ ├── models/ # Definições de modelos
│ │ ├── __init__.py
│ │ ├── train.py # Scripts de treinamento
│ │ ├── predict.py # Scripts de predição
│ │ └── architecture/ # Arquiteturas de modelos
│ │ ├── __init__.py
│ │ └── model_v1.py
│ │
│ ├── evaluation/ # Métricas de avaliação
│ │ ├── __init__.py
│ │ └── metrics.py
│ │
│ └── utils/ # Utilitários
│ ├── __init__.py
│ ├── config.py # Configuração
│ ├── logging.py # Configuração de logging
│ └── visualization.py # Utilitários de visualização
│
├── configs/ # Arquivos de configuração
│ ├── config.yaml # Configuração principal
│ ├── model_config.yaml # Hiperparâmetros do modelo
│ └── training_config.yaml # Configurações de treinamento
│
├── experiments/ # Rastreamento de experimentos
│ └── experiment_name/
│ ├── config.yaml
│ ├── metrics.json
│ └── checkpoints/
│
├── scripts/ # Scripts independentes
│ ├── train.py # Ponto de entrada de treinamento
│ ├── predict.py # Ponto de entrada de predição
│ └── evaluate.py # Ponto de entrada de avaliação
│
├── tests/ # Testes unitários
│ ├── __init__.py
│ ├── test_data.py
│ ├── test_models.py
│ └── test_features.py
│
├── artifacts/ # Modelos salvos e artefatos
│ ├── models/
│ ├── encoders/
│ └── scalers/
│
├── logs/ # Logs de treinamento
│
├── requirements.txt # Dependências Python
├── setup.py # Configuração do pacote
├── pyproject.toml # Configuração do projeto
├── Makefile # Comandos comuns
└── README.md
Descrição dos Diretórios
| Diretório |
Responsabilidade |
| data/ |
Dados em diferentes estágios |
| notebooks/ |
Exploração e experimentação |
| src/ |
Código fonte modular |
| configs/ |
Configurações YAML |
| experiments/ |
Resultados de experimentos |
| scripts/ |
Scripts executáveis |
| tests/ |
Testes unitários |
| artifacts/ |
Modelos treinados |
← Início