Sistema que mantém projetos. Cada projeto recebe uma equipe, e cada equipe pode receber um número não delimitado de pessoas. Cada projeto tem tasks,
cada task pode ser atribuída a uma determinada pessoa que está na equipe do projeto.
Backend desenvolvido por Bruno do Nascimento de Brito
- Utilizando linguagem
Go
comGin
para desenvolvimento, e o softwareInsomnia
para testes; - Disponível no
Heroku
: https://sistema-aprendizes-brisanet-go.herokuapp.com/ - Front-End em
React
(Em desenvolvimento) - Detalhes para login:
{
"email": "admin",
"senha": "admin123"
}
- Bruno do Nascimento:
Reestruturação da API
Implementação do Banco de Dados
Revisão e Reestruturação de Rotas e Funções
Criação do BD
Definição das Consultas do BD.
- Lucas Martins:
Criação do Front-End (em desenvolvimento)
- Iara Ferreira:
Criação do Front-End (em desenvolvimento)
Funcionalidade | Estado |
---|---|
Manter equipe | ✔️ |
Manter projeto | ✔️ |
Associar equipe a projeto | ✔️ |
Criar tarefa no projeto | ✔️ |
Atribuir tarefa | ✔️ |
Manter dados no Banco de Dados | ✔️ |
Front-End | ⌛ |
Testes e2e com Cypress | ❌ |
https://sistema-aprendizes-brisanet-go.herokuapp.com/equipes
GET | POST | PUT | DELETE |
---|---|---|---|
/equipes | /equipes | /equipes/:id | /equipes/:id |
/equipes/:id/ | |||
/equipes/:id/projetos |
/equipes/
A função de GET geral retorna os dados básicos de equipe:
{
"id_equipe": 1,
"nome_equipe": "Os Vingadores",
"created_at": "2022-09-06T17:15:42.71278Z",
"updated_at": "2022-09-06T17:15:42.71278Z"
}
/equipes/1/
A função específica de GET retorna junto aos dados de equipe, os membros dela:
{
"id_equipe": 1,
"nome_equipe": "Os Vingadores",
"pessoas": [
{
"id_pessoa": 4,
"nome_pessoa": "Wanda Maximoff",
"funcao_pessoa": "Feiticeira Escarlate",
"equipe_id": 1,
"favoritar": 0,
"data_contratacao": "2022-09-06T17:16:14.553395Z",
"updated_at": "2022-09-06T17:16:14.553395Z"
},
{
"id_pessoa": 3,
"nome_pessoa": "Natasha Romanoff",
"funcao_pessoa": "Viúva Negra",
"equipe_id": 1,
"favoritar": 0,
"data_contratacao": "2022-09-06T17:16:14.553395Z",
"updated_at": "2022-09-06T17:16:14.553395Z"
},
{
"id_pessoa": 2,
"nome_pessoa": "Steve Rogers",
"funcao_pessoa": "Capitão América",
"equipe_id": 1,
"favoritar": 0,
"data_contratacao": "2022-09-06T17:16:14.553395Z",
"updated_at": "2022-09-06T17:16:14.553395Z"
},
{
"id_pessoa": 1,
"nome_pessoa": "Tony Stark",
"funcao_pessoa": "Homem de Ferro",
"equipe_id": 1,
"favoritar": 0,
"data_contratacao": "2022-09-06T17:16:14.553395Z",
"updated_at": "2022-09-06T17:16:14.553395Z"
}
],
"created_at": "2022-09-06T17:15:42.71278Z",
"updated_at": "2022-09-06T17:15:42.71278Z"
}
/equipes/1/projetos/
Retorna um GET dos projetos da equipe especificada:
[
{
"id_projeto": 1,
"nome_projeto": "Guerra Infinita",
"descricao_projeto": "Salvar universo da extinção",
"equipe_id": 1,
"status": "Em planejamento",
"data_inicio": "2022-09-06T17:20:17.605881Z",
"updated_at": "2022-09-06T17:20:17.605881Z",
"data_conclusao": null
}
]
/equipes/
Para dar POST em uma nova equipe, a estrutura será a seguinte:
{
"nome_equipe": "Equipe 1"
}
/equipes/1/
Para atualizar equipes através do PUT, o único dado mutável será o nome da equipe:
{
"nome_equipe": "Equipe 1"
}
equipes/1/
Para excluir uma equipe através do DELETE só será necessário passar o id da equipe na rota, a resposta será a seguinte:
{
"message": "Cadastro deletado com sucesso"
}
GET | POST | PUT | DELETE |
---|---|---|---|
/pessoas/ | /pessoas/ | /pessoas/:id/ | /pessoas/:id/ |
/pessoas/:id/ | /pessoas/:id/favoritar/ |
/pessoas/
A função de GET geral retorna os dados básicos de pessoas:
{
"id_pessoa": 1,
"nome_pessoa": "Tony Stark",
"funcao_pessoa": "Homem de Ferro",
"equipe_id": 1,
"favoritar": 0,
"data_contratacao": "2022-09-06T17:16:14.553395Z",
"updated_at": "2022-09-06T17:16:14.553395Z"
}
/pessoas/5/
O GET específico retorna, além dos dados básicos de pessoas, as tasks da pessoa especificada:
{
"id_pessoa": 5,
"nome_pessoa": "Reed Richards",
"funcao_pessoa": "Homem Elástico",
"equipe_id": 2,
"tasks": [
{
"id_task": 1,
"descricao_task": "Precisamos de bravos heróis, para auxiliar na luta contra o mal.",
"comentario": "",
"nivel": "dificil",
"pessoa_id": 5,
"projeto_id": 2,
"status": "Em desenvolvimento",
"created_at": "2022-09-08T10:52:10.952152Z",
"updated_at": "2022-09-08T11:00:49.724382Z"
},
{
"id_task": 2,
"descricao_task": "encontrar heróis ",
"comentario": "",
"nivel": "dificil",
"pessoa_id": 5,
"projeto_id": 2,
"status": "Concluído",
"created_at": "2022-09-08T10:53:35.741875Z",
"updated_at": "2022-09-08T11:00:33.07067Z"
},
{
"id_task": 3,
"descricao_task": "matar o inimigo",
"comentario": "",
"nivel": "dificil",
"pessoa_id": 5,
"projeto_id": 2,
"status": "Em planejamento",
"created_at": "2022-09-08T10:56:44.057123Z",
"updated_at": "2022-09-08T10:56:44.057123Z"
}
],
"favoritar": 0,
"data_contratacao": "2022-09-06T17:16:14.553395Z",
"updated_at": "2022-09-06T17:16:14.553395Z"
}
pessoas/
Para dar POST e adicionar uma nova pessoa, a seguinte estrutura é necessária:
{
"nome_pessoa": "Bruce Banner",
"funcao_pessoa": "Hulk",
"equipe_id": 1
}
pessoas/21/
Para atualizar uma pessoa através do PUT, os dados serão os mesmos que o POST:
{
"nome_pessoa": "Bruce Banner",
"funcao_pessoa": "Professor Hulk",
"equipe_id": 1
}
pessoas/1/favoritar/
Para favoritar uma pessoa, nenhum dado precisará ser passado, apenas a rota deve ser acessada com o método PUT, se a pessoa estiver favoritada, o câmbio entre favoritado e desfavoritado é automático.
{
"message": "Pessoa favoritada!"
}
pessoas/1/
Para deletar uma pessoa através do método DELETE, apenas o id será necessário na rota, a resposta, caso dê certo, é a seguinte:
{
"message": "Cadastro deletado com sucesso!"
}
https://sistema-aprendizes-brisanet-go.herokuapp.com/projetos
GET | POST | PUT | DELETE |
---|---|---|---|
/projetos/ | /projetos/ | /projetos/:id/ | /projetos/:id/ |
/projetos/:id/ | /projetos/:id/status/ |
/projetos/
/projetos/1/
As funções GET retornam os seguintes dados:
{
"id_projeto": 1,
"nome_projeto": "Guerra Infinita",
"descricao_projeto": "Salvar universo da extinção",
"equipe_id": 1,
"status": "Em planejamento",
"data_inicio": "2022-09-06T17:20:17.605881Z",
"updated_at": "2022-09-06T17:20:17.605881Z",
"data_conclusao": null
}
/projetos/
Para dar POST em um novo projeto, a estrutura será a seguinte:
{
"nome_projeto": "Guerra Infinita",
"descricao_projeto": "Salvar universo da extinção",
"equipe_id": 1
}
/projetos/1/
Para dar PUT nas informações gerais de um projeto, a estrutura será a mesma que a de POST:
{
"nome_projeto": "Guerra Infinita",
"descricao_projeto": "Salvar universo da extinção",
"equipe_id": 1
}
/projetos/1/status/
Para dar PUT atualizando o status do projeto, a única informação necessária será a de status:
{
"status": "Concluído"
}
/projetos/1/
Para deletar através do DELETE, apenas o id do projeto que será deletado precisa ser passado, se for deletado corretamente, a resposta será a seguinte:
{
"message": "Cadastro deletado com sucesso"
}
https://sistema-aprendizes-brisanet-go.herokuapp.com/tasks
A parte de tasks funciona com alguns detalhes adicionais:
- Se uma task for cadastrada em um projeto que ja está com status "Concluído", o status do projeto volta automáticamente para "Em desenvolvimento";
- Se uma task já concluída for atualizada para status de "Fazendo" ou "A fazer" em um projeto já Concluído, o projeto muda automáticamente para "Em desenvolvimento"
- Uma task só pode ser atribuída a uma pessoa que está na equipe responsável pelo projeto que a task está sendo cadastrada.
- As rotas de Tasks incluem as rotas de comentários, então as tasks poderão receber comentários.
GET | POST | PUT | DELETE |
---|---|---|---|
/tasks/ | /tasks/ | /tasks/:id/ | /tasks/:id/ |
/tasks/:id/ | /tasks/:id/status/ | ||
/tasks/:id/comentarios/ | /tasks/:id/comentarios/ | /tasks/:id/comentarios/:idcomentario/ | /tasks/:id/comentarios/:idcomentario/ |
/tasks/
/tasks/1/
As funções GET retornam as seguintes informações de tasks:
{
"id_task": 1,
"descricao_task": "Precisamos de bravos heróis, para auxiliar na luta contra o mal.",
"nivel": "dificil",
"pessoa_id": 5,
"projeto_id": 2,
"status": "Em desenvolvimento",
"created_at": "2022-09-08T10:52:10.952152Z",
"updated_at": "2022-09-08T11:00:49.724382Z"
}
/tasks/2/comentarios/
A rota GET de comentários lista os comentários por Task:
[
{
"id_comentario": 1,
"task_id": 2,
"comentario": "Esse é o comentário na task 2",
"created_at": "2022-09-12T12:48:10.277542Z",
"updated_at": "2022-09-12T12:48:10.277542Z"
}
]
/tasks/
/tasks/:id/
Para dar POST ou PUT em tasks, os seguintes dados serão necessários:
{
"descricao_task": "Task teste",
"nivel": "facil",
"pessoa_id": 2,
"projeto_id": 1
}
/tasks/1/comentarios/
/tasks/1/comentarios/1
Para o POST de um novo comentário ou o PUT de um comentário existente, a estrutura é a seguinte:
{
"comentario": "Esse comentário é muito legal."
}
/tasks/5/status/
Para atualizar o status da task, através do PUT deverá ser passado o seguinte JSON:
{
"status": "Fazendo"
}
/tasks/5/
Para deletar uma task, através do DELETE só será necessário acessar a rota com o id da task que deverá ser excluída:
{
"message": "Cadastro deletado com sucesso"
}
/tasks/1/comentarios/1
Para deleter um comentário na função DELETE, o id do comentário que será deletado deverá ser passado na rota:
{
"message": "Cadastro deletado com sucesso"
}