Skip to content

Brun0Nasc/sys-projetos

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Badge em Desenvolvimento

SISTEMA GERENCIADOR DE PROJETOS - BACKEND

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.

Go Postgres Heroku cypress

Backend desenvolvido por Bruno do Nascimento de Brito

Índice

Detalhes

{
  "email": "admin",
  "senha": "admin123"
}

Equipe:

  • 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)

Andamento do projeto

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

ROTAS

EQUIPES

https://sistema-aprendizes-brisanet-go.herokuapp.com/equipes
GET POST PUT DELETE
/equipes /equipes /equipes/:id /equipes/:id
/equipes/:id/
/equipes/:id/projetos

DETALHES

/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"
}

PESSOAS

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!"
}

PROJETOS

https://sistema-aprendizes-brisanet-go.herokuapp.com/projetos
GET POST PUT DELETE
/projetos/ /projetos/ /projetos/:id/ /projetos/:id/
/projetos/:id/ /projetos/:id/status/

DETALHES

/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"
}

TASKS

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"
}