📌 Desenvolvemos um sistema de controle de habilidades e salários de uma emissora de TV, com as seguintes funcionalidades:
✔️ Cadastro de novo perfil de usuário (ator/atriz);
Login e logout admin (produtor) e de usuário (ator/atriz); (WIP)
✔️ Busca na qual um admin (produtor) pode colocar o número de profissionais que precisa, o gênero de sua obra, a data na qual precisará iniciar as gravações e o orçamento máximo, e receber uma indicação de quais atores e atrizes contratar que se encaixem nos requisitos
✔️ Possibilidade de reservar a data de um ator ou atriz e exibição de status;
✔️ Filtro por status e classificação por relevância e preço;
✔️ Alguns outros filtros úteis;
✔️ Spring boot com a seguintes dependências: Spring Data JPA, Spring Security, Spring Web.
✔️ Banco de dados: H2.
✔️ Ferramenta de gerenciamento de dependência de projeto: Gradle.
✔️ Para os tratamentos de exceções foi decidido usar uma abordagem centralizada. Foi inserido também uma customização para retornar o status https devido para o momento do erro.
🏆 Divisão e priorização de tarefas.
🏆 Durante os dias de desenvolvimento utilizamos ferramentas como Github, Trello, Slack, XMind e Jitsi para para nos auxiliar.
🏆 Encontros todos os dias, onde discutíamos pendências, dificuldades e estratégias para as próximas tarefas. Após o encontro, retornávamos para nossas atividades e quando necessário, fazíamos pair programming.
🏆 Não definimos um scrum master para semana, todos acompanhávamos o desenvolvimento do projeto.
- Mantivemos a main como branch principal.
- Cada tarefa tinha que ser feita em nova branch, após a conclusão, era aberta a pull Request e um outro membro da equipe precisava aprovar, assim podendo "mergear" para a branch principal.
Para iniciar a API será necessário ter em sua máquina instalado a versão JDK11 e configurar as variáveis de ambiente.
Criar atriz:
POST
/actress/create
{
"name": "Nome",
"gender": "Gênero",
"price": 0,
"relevance": 0,
"genre": "Gênero que atua",
"status": true,
"user": {
"login": "login",
"password": "senha"
}
}Listar todas as atrizes:
GET
/actress/list
Consultar dados de uma atriz pelo id:
GET
/actress/{id}
Atualizar dados de uma atriz:
PUT
/actress/update/{id}
{
"name": "Nome",
"gender": "Gênero",
"price": 0,
"relevance": 0,
"genre": "Gênero que atua",
"status": true,
"user": {
"login": "login",
"password": "senha"
}
}Remover atriz:
DELETE
/actress/delete?id=0
Filtros:
GET
/actress/getByStatus?status=true
GET
/actress/getMostRelevant
GET
/actress/getLessRelevant
GET
/actress/getMostExpensive
GET
/actress/getLessExpensive
Criar produtor:
POST
/producer/create
{
"name": "Nome",
"user": {
"login": "login",
"password": "senha"
}
}Consultar dados de um produtor pelo id:
GET
/producer/{id}
Atualizar dados de uma produtor:
PUT
/producer/update/{id}
{
"name": "Nome",
"user": {
"login": "login",
"password": "senha"
}
}Remover produtor:
DELETE
/producer/delete?id=0
Receber indicação de cast:
GET
/producer/getCast?quantity=0&budget=0&genre=genero&date=2020-11-09
Criar reserva:
POST
/reserve/save/{idDaAtriz}
{
"reserveDate": "2020-11-09",
"producer": {
"id": 0
}
}Listar todas as reservas:
GET
/reserve/list
Atualizar reserva:
PUT
/reserve/update/{idDaReserva}
{
"reserveDate": "2020-11-09",
"actress": {
"id": 0
},
"producer": {
"id": 0
}
}Deletar reserva:
DELETE
/reserve/delete?id=0
Filtros:
GET
/reserve/listByActress/{idDaAtriz}
GET
/reserve/listByProducer/{idDoProdutor}
GET
/reserve/countByProducer/{idDoProdutor}
GET
/reserve/getMostReservedDatesByProducer/{idDoProdutor}
GET
/reserve/getMostReservedActressesByProducer/{idDoProdutor}
As maiores dificuldades foram relacionadas à modelagem, divisão de tarefas e ordem de execução das atividades. Precisamos remodelar o projeto e redistribuir as entregas mais de uma vez.
E vimos que nossa maior produtividade e aprendizado foi utilizando pair programming. A troca de experiências, qualidade de código e até velocidade de desenvolvimento foram muito proveitosas com essa técnica.
A equipe foi bastante agradável e unida, proporcionando sempre um ambiente leve e bem humorado, onde cada um supriu a deficiência existente no outro. Não fomos muito independentes, mas bastante colaborativos!