Rocketseat

BarberBoss pt I

BarberBoss pt I

Conheça o projeto

Nesse desafio, você vai construir uma API para gerenciar o faturamento de uma barbearia. A API deve permitir criar, visualizar, editar e excluir registros de faturamento, além de exportar relatórios em PDF e Excel com o total da semana.
Você também vai implementar tratativas de erros e filtros de exceções para garantir que a aplicação seja robusta e confiável. E para fechar com chave de ouro, vai criar testes de unidade para validar as principais funcionalidades da API e assegurar que tudo esteja funcionando corretamente.

Instruções

Estrutura, regras e requisitos do projeto

1. Requisitos

  • Deve ser possível criar um faturamento;
  • Deve ser possível visualizar todos os faturamentos;
  • Deve ser possível visualizar um faturamento pelo ID;
  • Deve ser possível editar um faturamento;
  • Deve ser possível excluir um faturamento;
  • Deve ser possível ver o total do período (somando apenas pagos);
  • Deve ser possível exportar relatório semanal em PDF;
  • Deve ser possível exportar relatório semanal em Excel;
  • Crie tratativas de erros e filtros de exceções para a sua aplicação;
  • Crie testes de unidade para a sua aplicação;
  • A API deve ter documentação no Swagger.

Sugestão de campos

campotipoobrigatóriorestrições / observações
idGUIDSimGerado automaticamente pelo sistema
dateDateOnlySimData do faturamento
barberNamestringSim2–80 caracteres
clientNamestringSim2–120 caracteres
serviceNamestringSim2–120 caracteres; ex.: corte, barba, combo
amountdecimalSimValor ≥ 0; se status = Cancelado, deve ser 0
paymentMethodenumSimCartão, Dinheiro, Pix, Outro
statusenumSimPago, Cancelado
notesstringNãoAté 500 caracteres
createdAtDateTimeSimData/hora da criação
updatedAtDateTimeSimAtualizado quando houver alteração

Endpoints

  • Crie todos os endpoints necessários;
MétodoEndpointDescrição
POST/api/billingsCriar um novo faturamento.
GET/api/billingsListar faturamentos com filtros, paginação e ordenação.
GET/api/billings/{id}Obter um faturamento pelo ID.
PUT/api/billings/{id}Atualizar um faturamento existente.
DELETE/api/billings/{id}Excluir um faturamento pelo ID.
GET/api/reports/pdfGerar relatório de faturamento em PDF.
GET/api/reports/excelGerar relatório de faturamento em Excel.

Status Code

  • Retorne status code apropriados pra cada situação:
StatusQuando usarDescrição
200Consultas e atualizaçãoRequisição bem-sucedida, dados retornados.
201Criação de novo recursoRecurso criado com sucesso.
204Exclusão ou atualizaçãoOperação concluída sem conteúdo para retornar.
400Validações inválidas ou dados incorretosRequisição malformada ou campos inválidos.
404Recurso não encontradoID ou rota não corresponde a nenhum recurso.
409Conflito de dadosConflito com dados já existentes.
500Erro inesperado no servidorExceções não tratadas ou falhas internas.

2. Desenvolvendo o projeto

Para desenvolver esse projeto, recomendamos utilizar as principais tecnologias que utilizamos durante o desenvolvimento do primeiro módulo da formação.

Caso você tenha alguma dificuldade você pode ir no nosso fórum e deixar sua dúvida por lá!

Após terminar o desafio, caso você queira, você pode tentar dar o próximo passo e deixar a aplicação com a sua cara. Tente mudar o layout, cores, ou até adicionar novas funcionalidades para ir além! 🚀


3. Entrega

Após concluir o desafio, você deve enviar a URL do seu código no Github.

Além disso, que tal fazer um post no LinkedIn compartilhando o seu aprendizado e contando como foi a experiência? É uma excelente forma de demonstrar seus conhecimentos e atrair novas oportunidades!

Obs: Se você se sentir à vontade, pode postar um print do resultado final e nos marcar! Vai ser incrível acompanhar a sua evolução! 💜


4. Considerações finais

Lembre-se que o intuito de um desafio é te impulsionar, por isso, dependendo do desafio, pode ser que você precise ir além do que foi discutido em sala de aula. Mas isso não é algo ruim: ter autonomia para buscar informações extras é uma habilidade muito valiosa e vai ser ótimo pra você treinar ela aqui com a gente!

E lembre-se: tenha calma! Enfrentar desafios faz parte do seu processo de aprendizado!

Se precisar de alguma orientação ou suporte, estamos aqui com você! Bons estudos e boa prática! 💜


Feito com 💜 por Rocketseat 👋

Tarefas

Use este checklist para ajudar a organizar a sua entrega

Projetos relacionados