API para gerenciamento de carteira digital, permitindo transferências entre usuários e consulta de saldo.
- .NET 9
- ASP.NET Core
- Entity Framework Core
- SQL Server
- JWT Authentication
- Swagger/OpenAPI
- Clean Architecture
- Domain-Driven Design (DDD)
Optei pelo SQL Server por ser o banco de dados relacional com o qual tenho maior experiência e familiaridade no ecossistema .NET
DigitalWalletAPI/
├── API/ # Camada de apresentação
├── Application/ # Camada de aplicação
├── Domain/ # Camada de domínio
└── Infrastructure/ # Camada de infraestrutura
- Autenticação de usuários com JWT
- Criação e gerenciamento de carteiras
- Transferências entre carteiras
- Consulta de saldo
- Histórico de transações
- Configurações do sistema
POST /api/users/register- Registra um novo usuário{ "name": "Nome do Usuário", "email": "email@exemplo.com", "password": "Senha@123" }POST /api/users/login- Autentica um usuário{ "email": "email@exemplo.com", "password": "Senha@123" }
GET /api/wallets/user/{userId}- Obtém carteira do usuárioGET /api/wallets/balance/{walletId}- Consulta saldo da carteiraPOST /api/wallets/balance/{walletId}- Adiciona saldo à carteira{ "amount": 100.50 }
POST /api/transactions/wallet/{senderWalletId}- Realiza transferência{ "receiverWalletId": "guid_da_carteira_destino", "amount": 100.50 }GET /api/transactions/wallet/{walletId}- Lista transações da carteiraGET /api/transactions/{id}- Obtém detalhes de uma transação
- .NET 9 SDK
- SQL Server
- Visual Studio 2022 ou VS Code
- Clone o repositório
- Configure a string de conexão no
appsettings.json - Execute as migrações:
dotnet ef database update- Execute o projeto:
dotnet runA documentação da API está disponível via Swagger em:
https://localhost:7001/swagger
A API utiliza um sistema padronizado de tratamento de erros com códigos HTTP apropriados:
- 400: Requisição inválida
- 401: Não autorizado
- 404: Recurso não encontrado
- 422: Erro de validação
- 500: Erro interno do servidor
A API utiliza JWT (JSON Web Token) para autenticação. Para acessar endpoints protegidos:
- Faça login via endpoint
/api/users/login - Use o token retornado no header
Authorization: Bearer {token}
As configurações do sistema são gerenciadas através da tabela SystemConfigurations no banco de dados. As seguintes configurações são necessárias:
value_initial_wallet: Valor inicial da carteira.
jwt_secret_key: Chave secreta para assinatura do token JWTjwt_expiration_minutes: Tempo de expiração do token em minutos (padrão: "60")jwt_issuer: Emissor do token (padrão: "DigitalWalletAPI")jwt_audience: Audiência do token (padrão: "DigitalWalletAPI")