English version 🇺🇸
Service developed as part of the Phase 1 Tech Challenge — FIAP Postgraduate in .NET Software Architecture with Azure.
✨ Key Features • 🧠 Technical Requirements • 🚀 🏗️ Project Structure (DDD) • 🚀 How to Use
- User Management: register with name, email & password (complexity rules)
- Authentication & Authorization: JWT-based; roles
User(library access) andAdmin(manage users/games) - Game Catalog: CRUD operations for digital games (title, description, price)
- User Library: purchase and list acquired games (many-to-many relation)
- Data Persistence: EF Core with migrations (optional MongoDB/Dapper)
- API Documentation: Swagger UI for all endpoints
- Error Handling & Logging: global middleware with structured logs
- Automated Testing: unit tests with xUnit; at least one module with TDD/BDD
- .NET 8
- C# 12
- ASP.NET Core Web API (Minimal API or MVC Controllers)
- Entity Framework Core (or Dapper / MongoDB optional)
- JWT Authentication
- Swagger (Swashbuckle)
- SQL Server or PostgreSQL
- xUnit + FluentAssertions
- (Optional) SpecFlow for BDD scenarios
This project follows Domain-Driven Design (DDD) principles with the following layered structure:
src/
├── Application/
│ └── Services, DTOs, Interfaces
├── Domain/
│ └── Entities, Enums, ValueObjects, Interfaces
├── Infrastructure/
│ └── Repositories, Persistence (EF Core), Context
├── WebAPI/
│ └── Controllers, Middlewares, Authentication, Swagger
Tests/
└── Unit tests using xUnit and FluentAssertions
1. Clone the repository:
git clone https://github.com/Net-Vanguard/fase-01.git
cd fase-01
2. Run the API
3. Access Swagger
4. Create a user at endpoint /api/Users, exemple:
{
"name": "Fulano",
"email": "fulano@email.com",
"password": "SenhaForte123!",
"role": "0"
}
📌 role = 1 means regular user
📌 role = 0 means administrator
5. Log in using your user credentials at /api/Auth.
6. Copy the JWT token and click "Authorize" at the top of Swagger.
Paste the token and authorize.
7. You can now access all protected API routes.
Aplicativo desenvolvido como parte do Tech Challenge da Fase 1 — Pós-graduação FIAP em Arquitetura de Software .NET com Azure.
✨ Principais Características • 🧠 Requisitos Técnicos • 🏗️ Estrutura do Projeto (DDD) • 🚀 Como Usar
- Gerenciamento de Usuários: cadastro com nome, e-mail e senha segura
- Autenticação & Autorização: JWT; papéis
User(acesso à biblioteca) eAdmin(gestão) - Catálogo de Jogos: CRUD de jogos digitais (título, descrição, preço)
- Biblioteca de Usuário: compra e listagem de jogos adquiridos
- Persistência de Dados: EF Core com migrations (opcional MongoDB/Dapper)
- Documentação: Swagger UI para todos os endpoints
- Tratamento de Erros & Logs: middleware global com logs estruturados
- Testes Automatizados: xUnit; ao menos um módulo em TDD/BDD
- .NET 8
- C# 12
- ASP.NET Core Web API (Minimal API ou MVC Controllers)
- Entity Framework Core (ou Dapper / MongoDB opcional)
- Autenticação JWT
- Swagger (Swashbuckle)
- SQL Server ou PostgreSQL
- xUnit + FluentAssertions
- (Opcional) SpecFlow para cenários BDD
Este projeto segue os princípios de Domain-Driven Design (DDD), com a seguinte estrutura:
src/
├── Application/
│ └── Serviços, DTOs, Interfaces
├── Domain/
│ └── Entidades, Enums, ValueObjects, Interfaces
├── Infrastructure/
│ └── Repositórios, Contexto EF Core, Persistência
├── WebAPI/
│ └── Controllers, Middlewares, Autenticação, Swagger
Tests/
└── Testes unitários com xUnit e FluentAssertions
1. Clone o repositório:
git clone https://github.com/Net-Vanguard/fase-01.git
cd fase-01
2. Rode a API
3. Acesse o Swagger
4. Crie um usuário no endpoint /api/Users por exemplo:
{
"name": "Fulano",
"email": "fulano@email.com",
"password": "SenhaForte123!",
"role": "0"
}
📌 role = 1 para Usuário comum
📌 role = 0 para Administrador
5. Faça login com seu usuário no endpoint /api/Auth.
6. Copie o token JWT retornado e clique em "Authorize" no topo do Swagger.
Cole o token e confirme.
7. Agora você pode acessar todas as rotas protegidas da API.
