Pular para conteúdo

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