Gestão de Projetos - README

Este projeto consiste em um sistema de gestão de projetos, com frontend desenvolvido em Vue.js e backend em Spring Boot. Abaixo, você encontrará detalhes sobre a estrutura do projeto, suas funcionalidades, configuração e como executar localmente.

Estrutura do Projeto
  • Frontend
    • public
    • src
    • components
      • AlterarDados.vue
      • AtividadeForm.vue
      • AtividadeList.vue
      • AtualizacaoModal.vue
      • ClienteForm.vue
      • ClienteList.vue
      • ProjetoForm.vue
      • ProjetoList.vue
    • router
    • services
    • views
    • App.vue
    • main.js
  • Backend
    • controllers
      • AtividadeController.java
      • ClienteController.java
      • ProjetoController.java
    • DTO
      • AtividadeDTO.java
      • ClienteDTO.java
      • ProjetoDTO.java
    • enumeration
      • StatusAtividade.java
      • StatusProjeto.java
    • exceptions
      • GlobalExceptionHandler.java
      • ResourceNotFoundException.java
    • models
      • Atividade.java
      • Cliente.java
      • Projeto.java
    • repositories
      • AtividadeRepository.java
      • ClienteRepository.java
      • ProjetoRepository.java
    • service
      • AtividadeService.java
      • ClienteService.java
      • ProjetoService.java
    • GestaoProjetosApplication.java
  • .idea
  • .mvn
  • Interface
  • node_modules
  • test
  • target
  • .gitignore
  • HELP.md
  • mvnw
  • mvnw.cmd
  • package.json
  • package-lock.json
  • pom.xml
  • vue.config.js

Funcionalidades

O sistema oferece diversas funcionalidades tanto no frontend quanto no backend. Abaixo estão as principais:

Frontend (Vue.js)

  1. Cadastro e Edição de Atividades e Projetos O frontend permite cadastrar e editar informações sobre atividades e projetos, incluindo título, descrição, status e datas de início e fim.

  2. Listagem de Atividades e Projetos Exibe uma lista de atividades e projetos cadastrados no sistema, com opções de filtragem e ordenação.

  3. Visualização Detalhada Permite visualizar detalhes completos de uma atividade ou projeto específico.

Backend (Spring Boot)

O backend fornece endpoints RESTful para interação com o banco de dados e outras funcionalidades.

Configurações

Requisitos do Ambiente Java 17 instalado. Node.js e npm instalados para o ambiente de frontend. PostgreSQL instalado e configurado. Maven instalado para o ambiente de backend. Configuração do Ambiente de Desenvolvimento Clone o repositório do projeto do GitHub:

git clone https://github.com/pablohsk/gestao_projetos

Configuração do frontend:

cd gestao_projetos cd Interface npm install

Configuração do backend:

cd gestao_projetos mvn clean install

Configure o banco de dados PostgreSQL:

Abra o arquivo application.properties em src/main/resources. Verifique as configurações em spring.datasource e ajuste conforme necessário, incluindo o nome do banco de dados, usuário e senha.

Certifique-se de que o PostgreSQL esteja em execução e acessível.

Execução do Servidor

Para iniciar o servidor Spring Boot, execute:

cd gestao_projetos mvn spring-boot:run

Para iniciar o servidor de desenvolvimento do Vue.js, execute:

cd seu-projeto/Interface npm run serve

Endpoints

A seguir estão os endpoints disponíveis neste projeto:

Listar todas as atividades

Método: GET URL: /atividade Descrição: Retorna uma lista de todas as atividades cadastradas. Buscar atividade por ID

Método: GET URL: /atividade/{id} Descrição: Retorna os detalhes de uma atividade com base no ID fornecido. Incluir atividade

Método: POST URL: /atividade Descrição: Adiciona uma nova atividade ao banco de dados. Atualizar atividade por ID

Método: PUT URL: /atividade/{id} Descrição: Atualiza os dados de uma atividade com base no ID fornecido. Excluir atividade por ID

Método: DELETE URL: /atividade/{id} Descrição: Remove uma atividade do banco de dados com o ID fornecido. Listar todos os projetos

Método: GET URL: /projeto Descrição: Retorna uma lista de todos os projetos cadastrados. Buscar projeto por ID

Método: GET URL: /projeto/{id} Descrição: Retorna os detalhes de um projeto com base no ID fornecido. Incluir projeto

Método: POST URL: /projeto Descrição: Adiciona um novo projeto ao banco de dados. Atualizar projeto por ID

Método: PUT URL: /projeto/{id} Descrição: Atualiza os dados de um projeto com base no ID fornecido. Excluir projeto por ID

Método: DELETE URL: /projeto/{id} Descrição: Remove um projeto do banco de dados com o ID fornecido.

Diagrama de Classes

class Projeto {
    +Long id
    +String nome
    +String descricao
    +StatusProjeto status
    +LocalDate dataInicio
    +LocalDate dataFim
}

class Atividade {
    +Long id
    +String nome
    +String descricao
    +StatusAtividade status
    +LocalDate dataInicio
    +LocalDate dataFim
    +Projeto projeto
}

class Cliente {
    +Long id
    +String nome
    +String email
}

class ProjetoDTO {
    +Long id
    +String nome
    +String descricao
    +StatusProjeto status
    +LocalDate dataInicio
    +LocalDate dataFim
}

class AtividadeDTO {
    +Long id
    +String nome
    +String descricao
    +StatusAtividade status
    +LocalDate dataInicio
    +LocalDate dataFim
    +Long projetoId
}

class ClienteDTO {
    +Long id
    +String nome
    +String email
}

class ProjetoController {
    +List~ProjetoDTO~ getAllProjetos()
    +ProjetoDTO getProjeto(Long id)
    +ProjetoDTO createProjeto(ProjetoDTO projetoDTO)
    +ProjetoDTO updateProjeto(Long id, ProjetoDTO projetoDTO)
    +void deleteProjeto(Long id)
    +List~Projeto~ getProjetosAtivos()
}

class AtividadeController {
    +List~AtividadeDTO~ getAllAtividades()
    +AtividadeDTO getAtividade(Long id)
    +AtividadeDTO createAtividade(AtividadeDTO atividadeDTO)
    +AtividadeDTO updateAtividade(Long id, AtividadeDTO atividadeDTO)
    +void deleteAtividade(Long id)
}

class ClienteController {
    +List~ClienteDTO~ getAllClientes()
    +ClienteDTO getCliente(Long id)
    +ClienteDTO createCliente(ClienteDTO clienteDTO)
    +ClienteDTO updateCliente(Long id, ClienteDTO clienteDTO)
    +void deleteCliente(Long id)
}

class ProjetoService {
    +List~Projeto~ findAll()
    +Projeto findById(Long id)
    +Projeto save(Projeto projeto)
    +void deleteById(Long id)
    +List~Projeto~ findByStatusNotConcluida()
}

class AtividadeService {
    +List~Atividade~ findAll()
    +Atividade findById(Long id)
    +Atividade save(Atividade atividade)
    +void deleteById(Long id)
}

class ClienteService {
    +List~Cliente~ findAll()
    +Cliente findById(Long id)
    +Cliente save(Cliente cliente)
    +void deleteById(Long id)
}

class ProjetoRepository {
    +List~Projeto~ findAll()
    +Optional~Projeto~ findById(Long id)
    +Projeto save(Projeto projeto)
    +void deleteById(Long id)
    +List~Projeto~ findByStatusNot(StatusProjeto status)
}

class AtividadeRepository {
    +List~Atividade~ findAll()
    +Optional~Atividade~ findById(Long id)
    +Atividade save(Atividade atividade)
    +void deleteById(Long id)
}

class ClienteRepository {
    +List~Cliente~ findAll()
    +Optional~Cliente~ findById(Long id)
    +Cliente save(Cliente cliente)
    +void deleteById(Long id)
}

Projeto --> ProjetoDTO
Projeto --> Atividade : contém
Atividade --> AtividadeDTO
Cliente --> ClienteDTO

ProjetoController --> ProjetoService
AtividadeController --> AtividadeService
ClienteController --> ClienteService

ProjetoService --> ProjetoRepository
AtividadeService --> AtividadeRepository
ClienteService --> ClienteRepository

StatusProjeto : +CONCLUIDA
StatusProjeto : +EM_PROGRESSO
StatusProjeto : +PENDENTE

StatusAtividade : +CONCLUIDA
StatusAtividade : +EM_PROGRESSO
StatusAtividade : +PENDENTE

Desenvolvedor

Este projeto foi desenvolvido por Pablo Fidelis Dias. Para mais detalhes, consulte o link: [link do repositório no GitHub].

Qualquer dúvida ou sugestão, sinta-se à vontade para entrar em contato. Obrigado por utilizar o Gestão de Projetos!

/ Me Contrata /