-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinstrucoes tecnicas
More file actions
144 lines (114 loc) · 4.99 KB
/
instrucoes tecnicas
File metadata and controls
144 lines (114 loc) · 4.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
Titulo do projeto
Breve texto de descrição do projeto + tecnologias e metodologias utilizadas
status do projeto quanto a numeroDeTestesPassando/numeroDeTestesExistentes (porcentagemDeTestesPassando%) e porcentagem de cobertura de código por eles
Arquitetura
Principios basicos da arquitetura limpa
Principios SOLID
Principios da coesão de componentes
Separação explicita em camadas seguindo uma direção de dependencias clara
essa camada A ---depende---> dessa cadada B
a camada B não tem conhecimento de nada que existe dentro da camada A, nem mesmo sabe que a camada A existe
--
Frameworks e Drivers (Web, UI, DB, Dispositivos, Interfaces EXTERNAS) ---> Adaptadores de Interface (Apresentadores, Controladores, Gateway) ---> Regras de negocio da APLICACAO (Casos de Uso) ---> Regras de negocio da EMPRESA (Entidades)
Estrutura de confirações de projeto
```
LastTechTest/
├── .github/ # GitHub Actions e CI/CD
├── deploy/ # Deploy e Infraestrutura
├── docker/ # Docker e Containerização
├── scripts/ # Scripts de Automação
├── docs/ # Documentação
```
Estrutura de backend
```
LastTechTest/
├── backend/LastTechTest.API/ # Camada de Apresentação
├── backend/LastTechTest.Aplicacao/ # Camada de Aplicação
├── backend/LastTechTest.Dominio/ # Camada de Domínio
├── backend/LastTechTest.Infrastrutura/ # Camada de Infraestrutura
├── backend/LastTechTest.Persistencia/ # Camada de Persistência
└── backend/LastTechTest.Testes/ # Testes
```
Modulos base do backend e suas responsabilidades
LastTechTest.API (Modulo de configuração e porta de entrada)
- Controllers - Endpoints da API REST
- Middlewares - Validação JWT, tratamento de exceções
- Program.cs - Configuração da aplicação
- appsettings.json - Configurações da aplicação
LastTechTest.Applicacao (Modulo de casos de uso)
- **Commands** - Comandos CQRS (Create, Update, Delete)
- **Queries** - Consultas CQRS (Read)
- **Handlers** - Manipuladores de comandos e consultas
- **Validations** - Validações de entrada
- **Responses** - DTOs de resposta
- **Pipeline** - Comportamentos de pipeline (validação)
LastTechTest.Dominio (Modulo de entidades, com regras de negocio)
- **Entidades** - Entidades de negócio
- **Enums** - Enumerações do domínio
- **Interfaces** - Contratos de serviços
- **Utils** - Utilitários do domínio
LastTechTest.Infrastrutura (Modulo de coisas relacionadas ao funcionamento de um sistema)
- MfaService (autenticação de dois fatores)
- TokenService (geração de JWT)
- SmtpEmailService (envio de emails)
- KeyGenerator - Geração de chaves
- Security - Segurança de arquivos
LastTechTest.Persistencia (Modulo de persistência e comunicação com o banco de dados)
- **ApplicacaoDbContext** - Contexto do Entity Framework
- **Migrations** - Migrações do banco de dados
Padrões Arquiteturais
CQRS (Command Query Responsibility Segregation)
```
Commands/ # Modificam o estado
├── CriarSolicitacaoCommand.cs
└── AlterarStatusSolicitacaoCommand.cs
Queries/ # Consultam dados
├── ListarSolicitacoesQuery.cs
└── SimularSolicitacaoQuery.cs
```
Mediator Pattern
- Handlers: implementam o padrão mediator
- Separação clara entre comandos e consultas
- Processamento através de pipelines
Repository Pattern
- Entity Framework como ORM
- DbContext como repositório genérico
- Entidades mapeadas para tabelas
JWT Authentication
- Middleware de validação JWT
- TokenService para geração de tokens
- Refresh tokens implementados
Tecnologias e Frameworks
Backend
- .NET 10 - Framework web
- C# 14 - Linguagem de programação
Banco de Dados
- SQLite - Banco de dados principal
- Entity Framework Core 10 - ORM
Autenticação e Segurança
- JWT Bearer - Autenticação baseada em tokens
- MFA - Autenticação de dois fatores
Padrões Arquiteturais
- CQRS - Command Query Responsibility Segregation
- MediatR - Framework para implementação do padrão Mediator
- Repository Pattern - Padrão de repositório
- Dependency Injection - Padrao para desacoplar a instanciação das classes uma das outras
Validação e Documentação
- FluentValidation - Validação de dados
- Scalar/OpenAPI - Documentação da API (UI Scalar consome spec OpenAPI)
- Swashbuckle.AspNetCore - Geração do documento OpenAPI
Testes
- xUnit - Framework de testes
- Moq - Framework para mocking para testes
- FluentAssertions - Assertions expressivas
- Coverlet - Cobertura de código
Ferramentas de Desenvolvimento
- Docker - Containerização
- ReportGenerator - Relatórios de cobertura
- Cursor - Agente AI
- Entity Framework CLI - Migrações e scaffolding
### **Deploy e Infraestrutura**
- GitHub Actions - CI/CD Pipeline
- Docker Compose - Orquestração de containers
- SQLite - Banco de dados de produção
- Cursor Bugbot - Revisor de PRs