https://github.com/ricardoandreh/task-tracker-api
A simple task management API that allows users to create, organize, and track their daily activities powered by Groq Cloud
https://github.com/ricardoandreh/task-tracker-api
docker-compose groq java maven render-deploy spring-boot spring-security
Last synced: 3 months ago
JSON representation
A simple task management API that allows users to create, organize, and track their daily activities powered by Groq Cloud
- Host: GitHub
- URL: https://github.com/ricardoandreh/task-tracker-api
- Owner: ricardoandreh
- License: mit
- Created: 2024-08-01T02:06:14.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2025-01-22T21:38:55.000Z (over 1 year ago)
- Last Synced: 2025-08-11T06:56:10.602Z (9 months ago)
- Topics: docker-compose, groq, java, maven, render-deploy, spring-boot, spring-security
- Language: Java
- Homepage: https://task-tracker-api-randre.onrender.com/docs
- Size: 228 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# Task Tracker




## Descrição
**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.
## 🚀 Funcionalidades
- **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.
## 🛠 Tecnologias Utilizadas
- **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
## 📚 Endpoints
### Autenticação
| 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 |
### Tarefas
| 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 |
### Swagger
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.
## 🔧 Configuração do Ambiente
### 📋 Variáveis de Ambiente
| 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) |
### 📦 Docker e Docker Compose
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.
#### Build e Run com Docker Compose
```sh
docker-compose up --build
```
Este comando irá construir as imagens necessárias e iniciar os containers definidos no `docker-compose.yml`.
## 🏃♂️ Como Rodar a Aplicação
### 🔧 Usando Maven
1. **Clonar o Repositório**
```sh
git clone https://github.com/ricardoandreh/task-tracker-api.git
cd task-tracker-api
```
2. **Instalar Dependências**
```sh
./mvnw install
```
3. **Executar a Aplicação**
Para rodar em modo desenvolvimento:
```sh
./mvnw spring-boot:run -Dspring-boot.run.profiles=dev
```
Para rodar em modo produção:
```sh
./mvnw spring-boot:run -Dspring-boot.run.profiles=prod
```
### 🐳 Usando Docker
1. **Build da Imagem Docker**
```sh
docker build -t task-tracker-api .
```
2. **Executar o Container**
```sh
docker run -d -p 10000:10000 --name task-tracker-api task-tracker-api
```
### 🚀 Deploy no Render
Siga as instruções na plataforma [Render](https://render.com/) para realizar o deploy da aplicação utilizando o `Dockerfile` ou conectando diretamente ao repositório GitHub.
## 🧪 Testes
A aplicação possui uma suite de testes automatizados para garantir a qualidade e a integridade do código.
### Executar Testes
```sh
./mvnw test
```
## 📂 Estrutura do Projeto
Para uma descrição detalhada da estrutura de pastas e a arquitetura MVC adotada, consulte o arquivo [`STRUCTURE.md`](./STRUCTURE.md).
## 📝 Licença
Este projeto está licenciado sob os termos da licença [MIT](https://github.com/ricardoandreh/task-tracker-api/blob/master/LICENSE).