Uma plataforma de venda de jogos digitais e gestão de servidores para partidas online, desenvolvida seguindo os princípios de Domain-Driven Design (DDD) e Clean Architecture.
- Sobre o Projeto
- Funcionalidades
- Arquitetura
- Tecnologias
- Pré-requisitos
- Instalação
- Docker
- Uso
- Estrutura do Projeto
- Licença
A FIAP Cloud Games (FCG) é uma plataforma completa para:
- 🛒 Venda de jogos digitais
- 📚 Gestão de biblioteca pessoal de jogos
- 👥 Gerenciamento de usuários com diferentes perfis
- 🎁 Sistema de promoções e descontos
- 🔐 Autenticação e autorização robustas
Feito como projeto de estudos durante o curso de "Arquitetura de Sistemas .NET com Azure"
- Administrador: Gestão completa da plataforma
- Usuário: Compra e acesso aos jogos da biblioteca pessoal
- ✅ Cadastro e gerenciamento de jogos
- ✅ Administração de usuários
- ✅ Criação de promoções e descontos
- ✅ Gestão de categorias de jogos
- ✅ Autenticação segura
- ✅ Compra de jogos digitais
- ✅ Biblioteca pessoal de jogos
- ✅ Visualização de promoções ativas
O projeto segue os princípios de Clean Architecture e Domain-Driven Design (DDD):
├── 1.API # Camada de Apresentação (Controllers, Middleware)
├── 2.Application # Camada de Aplicação (Use Cases, DTOs)
├── 3.Domain # Camada de Domínio (Entidades, Regras de Negócio)
├── 4.Infrastructure # Camada de Infraestrutura (Repositórios, EF Core)
└── 5.Tests # Testes Unitários e de Integração
- Gestão de Jogos (Core)
- Biblioteca do Usuário (Core)
- Gestão de Promoções (Supporting)
- Autenticação e Autorização (Generic)
- Perfis de Usuário (Supporting)
- Backend: .NET 8, ASP.NET Core Web API
- Banco de Dados: PostgreSQL
- ORM: Entity Framework Core
- Documentação: Swagger/OpenAPI
- Testes: xUnit, Moq
- Logs: Serilog
- Arquitetura: Clean Architecture, DDD
Antes de começar, certifique-se de ter instalado:
git clone https://github.com/hagadashi/FCG.git
cd fcg# Configure a string de conexão no appsettings.json
# Exemplo:
"ConnectionStrings": {
"DefaultConnection": "Host=localhost;Database=fcg_db;Username=your_user;Password=your_password"
}cd 1.API/FCG.API
dotnet ef database updatedotnet restoredotnet runVocê pode executar a aplicação facilmente usando Docker.
docker-compose up --build -ddocker ps- A API estará disponível em http://localhost:8080
- O docker-compose.yml mapeia a porta 80 do container para a porta 8080 do host
- O serviço principal está definido com o nome fcg-api (ou conforme configurado no compose)
Certifique-se de configurar corretamente a string de conexão com o banco de dados PostgreSQL no arquivo
appsettings.jsonou via variáveis de ambiente.
A aplicação estará disponível em:
- API:
https://localhost:7000ouhttp://localhost:5000 - Swagger:
https://localhost:7000/swagger
GET /api/games # Listar jogos
POST /api/games # Criar jogo (Admin)
GET /api/users/library # Biblioteca do usuário
POST /api/auth/login # Autenticação
POST /api/sales # Criar promoção (Admin)
O sistema já vem com dados iniciais configurados:
- Admin:
admin@fcg.com/Admin@123> Pendente criar - Usuário:
user@fcg.com/User123!-> Pendente criar
Para facilitar o monitoramento e teste da aplicação, incluímos um script que gera requisições contínuas simulando o uso real da API, ajudando a alimentar métricas e traces no Datadog.
-
Certifique-se que a aplicação e o Datadog Agent estejam rodando via Docker Compose.
-
O script
traffic-generator.shrealiza:
- Autenticação uma única vez para obter o token JWT.
- Várias chamadas para endpoints principais, utilizando o token obtido.
- Requisições adicionais para endpoints de teste e health check.
- Para rodar o script (em ambiente Linux/WSL):
chmod +x traffic-generator.sh
./traffic-generator.shFCG/
├── 1.API/
│ └── FCG.API/
│ ├── Controllers/ # Controladores da API
│ ├── Middleware/ # Middleware customizado
│ ├── Program.cs # Configuração da aplicação
│ └── appsettings.json # Configurações
├── 2.Application/
│ └── FCG.Application/
│ ├── DTOs/ # Data Transfer Objects
│ ├── Services/ # Serviços de aplicação
│ └── UseCases/ # Casos de uso
├── 3.Domain/
│ └── FCG.Domain/
│ ├── Entities/ # Entidades do domínio
│ ├── Enums/ # Enumerações
│ ├── Events/ # Eventos de domínio
│ ├── Exceptions/ # Exceções personalizadas
│ └── Interfaces/ # Contratos e interfaces
├── 4.Infrastructure/
│ └── FCG.Infrastructure/
│ ├── Data/ # Contexto do EF Core
│ ├── Repositories/ # Implementação dos repositórios
│ └── Migrations/ # Migrations do banco
└── 5.Tests/
└── FCG.Tests/
├── Unit/ # Testes unitários
└── Integration/ # Testes de integração
# Executar todos os testes
dotnet test
# Executar testes com cobertura
dotnet test --collect:"XPlat Code Coverage"- User: Gerencia informações de usuários
- Role: Define níveis de acesso/permissões
- Game: Catálogo de jogos disponíveis
- Library: Biblioteca pessoal de jogos
- Category: Classificação de jogos
- Sale: Gerencia promoções e descontos
- Session: Controla sessões de usuários
# Criar nova migration
dotnet ef migrations add NomeDaMigration
# Aplicar migrations
dotnet ef database update
# Reverter migration
dotnet ef database update PreviousMigrationNameDistribuído sob a licença MIT. Veja LICENSE para mais informações.
⭐ Se este projeto foi útil para você, considere dar uma estrela!