🚀 ProjectHub API
API REST desenvolvida com Spring Boot para gerenciamento de projetos, tarefas e membros. Projetada utilizando princípios de arquitetura limpa, padrão DTO e inspirada em Domain-Driven Design (DDD).
📌 Visão Geral
A ProjectHub API é uma aplicação backend que fornece uma forma estruturada de gerenciar projetos colaborativos, permitindo controle de membros, tarefas e papéis dentro de cada projeto.
O sistema foi desenvolvido com foco em escalabilidade e manutenibilidade, aplicando boas práticas como:
- Arquitetura em camadas
- Uso de DTO para transferência de dados
- Separação de responsabilidades
- Código limpo e de fácil leitura
- Modelagem com entidade intermediária para relacionamentos complexos
🚀 Funcionalidades
📁 Projetos
- Criar um novo projeto
- Buscar projeto por ID
- Listar todos os projetos
- Atualizar informações do projeto
- Deletar um projeto
📝 Tasks
- Criar tarefas vinculadas a um projeto
- Atribuir tarefas a membros
- Atualizar status da tarefa (TODO, IN_PROGRESS, DONE)
- Listar tarefas por projeto
👥 Members
- Criar membros
- Listar membros
- Adicionar membros a projetos
- Definir papéis no projeto (ADMIN, DEVELOPER, VIEWER)
🔗 Project Members (Entidade Intermediária)
- Gerenciar relacionamento entre projetos e membros
- Permitir múltiplos papéis por contexto de projeto
- Garantir regras de negócio (ex: apenas ADMIN adiciona membros)
🛠️ Tecnologias Utilizadas
- Java 17+
- Spring Boot
- Spring Data JPA
- Hibernate
- Lombok
- H2 Database
- Maven
🧱 Arquitetura
A aplicação segue uma arquitetura em camadas:
- Controller → Responsável por lidar com requisições e respostas HTTP
- Service → Contém as regras de negócio
- Repository → Camada de acesso a dados
- DTO → Objetos de transferência de dados
- Entity → Modelos de domínio
🔄 Exemplo de API
➕ Criar Projeto
{
"name": "ProjectHub",
"description": "Sistema para gerenciamento de projetos e tarefas colaborativas"
}
➕ Adicionar Membro ao Projeto
{
"memberId": "uuid-do-membro",
"role": "DEVELOPER"
}
➕ Criar Task
{
"title": "Implementar API",
"description": "Criar endpoints REST",
"status": "TODO",
"projectId": "uuid-do-projeto",
"assignedTo": "uuid-do-membro"
}
▶️ Como Executar a Aplicação
# Clonar o repositório
git clone https://github.com/v-filgueiras/projecthub-api.git
# Acessar a pasta do projeto
cd projecthub-api
# Executar a aplicação
./mvnw spring-boot:run
🧪 Console do Banco H2
Acesse o banco de dados em memória:
http://localhost:8080/h2-console
📈 Melhorias Futuras
- Autenticação e autorização com JWT
- Paginação e filtros avançados
- Upload de arquivos nas tarefas
- Notificações (email ou eventos)
- Testes unitários e de integração
- Documentação da API com Swagger
- Containerização com Docker
- Deploy em nuvem (AWS / Render)
👨💻 Autor
Victor Filgueiras Santana