Task Tracker é uma API de gerenciamento de tarefas simples que permite aos usuários criar, organizar e acompanhar suas atividades diárias. Desenvolvida com Java Spring Boot, a aplicação oferece funcionalidades robustas de autenticação, autorização, paginação, pesquisa e muito mais, facilitando o gerenciamento eficiente de tarefas em projetos pessoais ou colaborativos.
- Autenticação JWT: Suporte para tokens de acesso e refresh tokens.
- Gerenciamento de Tarefas: Criação, atualização, deleção e busca de tarefas.
- Paginação e Pesquisa: Facilita a navegação e localização de tarefas específicas.
- Segurança com Spring Security: Controle de acesso baseado em funções de usuário.
- Hypermedia HATEOAS: Navegação intuitiva entre recursos da API.
- Suporte a Múltiplos Bancos de Dados: H2 (em memória) para desenvolvimento e PostgreSQL para produção.
- Docker e Docker Compose: Facilita o deploy e a configuração de ambientes.
- Deploy no Render: Implementação simplificada em ambiente de produção.
- Linguagem: Java 17
- Framework: Spring Boot
- Gerenciador de Dependências: Maven
- Segurança: Spring Security
- Ferramentas de Produtividade: Lombok
- Arquitetura de API: HATEOAS
- Autenticação: JWT (Access e Refresh Tokens)
- Banco de Dados: H2 (Desenvolvimento), PostgreSQL (Produção)
- Containerização: Docker, Docker Compose
- Deploy: Render
Método | Endpoint | Descrição |
---|---|---|
POST | /auth/register |
Registro de novos usuários |
POST | /auth/login |
Login e obtenção de tokens JWT |
POST | /auth/refresh |
Renovação de tokens JWT |
Método | Endpoint | Descrição |
---|---|---|
GET | /tasks |
Listar todas as tarefas com paginação |
GET | /tasks/{id} |
Obter detalhes de uma tarefa específica |
GET | /tasks/search |
Buscar tarefas com parâmetros específicos |
POST | /tasks |
Criar uma nova tarefa |
PATCH | /tasks/{id} |
Atualizar uma tarefa existente |
DELETE | /tasks/{id} |
Deletar uma tarefa |
A documentação interativa da API está disponível no endpoint /swagger-ui/index.html
e no redirecionador /docs
após a execução da aplicação.
Nome | Valor Padrão | Descrição |
---|---|---|
RENDER_EXTERNAL_URL |
(sem valor padrão) | URL externa do Render para deploy |
SECRET_KEY |
my-secret-key |
Chave secreta para JWT |
DATABASE_USER |
(definido no Docker Compose) | Usuário do banco de dados |
DATABASE_PASSWORD |
(definido no Docker Compose) | Senha do banco de dados |
DATABASE_HOST |
postgres |
Host do banco de dados |
DATABASE_PORT |
5432 |
Porta do banco de dados |
DATABASE_NAME |
task_tracker |
Nome do banco de dados |
JDK_JAVA_OPTIONS |
-Xms256m -Xmx512m |
Opções de configuração da JVM |
SPRING_PROFILES_ACTIVE |
prod |
Perfil ativo do Spring (dev, prod, test) |
A aplicação utiliza Docker para containerização e Docker Compose para orquestração de múltiplos containers (API e banco de dados). Certifique-se de que o Docker está instalado em sua máquina.
docker-compose up --build
Este comando irá construir as imagens necessárias e iniciar os containers definidos no docker-compose.yml
.
-
Clonar o Repositório
git clone https://github.com/ricardoandreh/task-tracker-api.git cd task-tracker-api
-
Instalar Dependências
./mvnw install
-
Executar a Aplicação
Para rodar em modo desenvolvimento:
./mvnw spring-boot:run -Dspring-boot.run.profiles=dev
Para rodar em modo produção:
./mvnw spring-boot:run -Dspring-boot.run.profiles=prod
-
Build da Imagem Docker
docker build -t task-tracker-api .
-
Executar o Container
docker run -d -p 10000:10000 --name task-tracker-api task-tracker-api
Siga as instruções na plataforma Render para realizar o deploy da aplicação utilizando o Dockerfile
ou conectando diretamente ao repositório GitHub.
A aplicação possui uma suite de testes automatizados para garantir a qualidade e a integridade do código.
./mvnw test
Para uma descrição detalhada da estrutura de pastas e a arquitetura MVC adotada, consulte o arquivo STRUCTURE.md
.
Este projeto está licenciado sob os termos da licença MIT.