O Closetly é uma API RESTful desenvolvida para gerenciar uma plataforma de aluguel de roupas, focada no consumo sustentável e na moda circular. O sistema automatiza todo o ciclo de vida da locação, desde a escolha das peças e processamento do pagamento até a devolução e avaliação do serviço.
- Gestão de Catálogo e Estoque: Cadastro de produtos (roupas) com controle de status (
AVAILABLE,UNAVAILABLE,DELETED). - Processamento de Pedidos: - Criação de locações com períodos predefinidos (3, 7 ou 14 dias).
- Cancelamento de pedidos (com atualização de status das peças).
- Devolução de pedidos.
- Pagamentos: Registro e validação de pagamentos atrelados aos pedidos.
- Sistema de Avaliações (Rating): Permite aos usuários avaliarem seus pedidos com notas de 1 a 5 estrelas.
- Geração de Relatórios: Exportação do histórico de locações de um usuário em formato CSV estruturado.
- Linguagem: C#
- Framework: .NET (ASP.NET Core Web API)
- ORM: Entity Framework Core
- Padrão de Arquitetura: Controller - Service - Repository (Injeção de Dependências)
- Testes Unitários: NUnit e Moq
- Cobertura de Código: Coverlet & ReportGenerator
Este projeto foi construído focando em código limpo, manutenção e resiliência:
- Separação clara de responsabilidades entre regras de negócio (Services) e acesso a dados (Repositories).
- Uso extensivo de DTOs (Data Transfer Objects) com Data Annotations para blindar a API contra dados inválidos.
- Implementação de
CancellationTokenpara otimizar requisições e evitar processamento desnecessário no banco de dados. - Tratamento global e específico de exceções, retornando mensagens claras via
ProblemDetailse Status Codes HTTP adequados (400, 404, 409, 500).
O banco de dados relacional foi estruturado para garantir a integridade das locações.
- Clone o repositório:
git clone [https://github.com/luisa-spl/Closetly.git](https://github.com/luisa-spl/Closetly.git)
- Navegue até a pasta do projeto:
cd Closetly - Restaure as dependências::
dotnet restore
- Atualize o banco de dados:
dotnet ef database update
- Execute a API:
dotnet run
A documentação interativa completa está disponível via Swagger UI em:
http://localhost:<porta>/swagger
Os campos do tipo string que representam enums aceitam os seguintes valores (verificar a nomenclatura exata no Swagger):
ProductSize — tamanhos disponíveis para produto: ‘S’ | ‘M’ | ‘L’ | ‘XL’ | ‘XXL’ | ‘XXXL’.
ProductType — tipos de peça (ex: vestido, blusa, calça): ‘TSHIRT’ |‘SHIRT’ | ‘DRESS’ | ‘PANTS’ | ‘SKIRT’ | ‘JACKET’ | ‘SUIT’ | ‘COAT’ | ‘SHOES’ | ‘ACCESSORY’.
ProductOccasion — ocasião de uso (ex: casual, festa, trabalho): ‘CASUAL’ | ‘FORMAL’ | ‘WEDDING’ | ‘PARTY’ .
ProductStatus — situação do produto (ex: disponível, alugado, em manutenção): ‘AVAILABLE’ | ‘UNAVAILABLE’ | ‘DELETED’.
OrderStatus — situação do pedido (ex: ativo, cancelado, devolvido): ‘PENDING’ | ‘CANCELLED’ | ‘LEASED’ | ‘CONCLUDED’.
PaymentType — forma de pagamento (ex: Pix, Cartão, Boleto): 'PIX' | 'CREDIT' | 'DEBIT'.
PaymentStatus — situação do pagamento (ex: pendente, pago): 'APPROVED' | 'PENDING'.
Desenvolvido com 💜 por Gessica Azevedo, Marina Bortolucci e Luisa Spinola
