{"id":25939048,"url":"https://github.com/ianfelps/todo_list","last_synced_at":"2026-04-18T07:32:22.693Z","repository":{"id":277269057,"uuid":"931869667","full_name":"ianfelps/todo_list","owner":"ianfelps","description":"Aplicação REST para gerenciamento de tarefas (To-do List) desenvolvida utilizando Java com o framework Spring.","archived":false,"fork":false,"pushed_at":"2025-02-16T03:59:54.000Z","size":42,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-04T04:05:57.745Z","etag":null,"topics":["api-rest","java","spring","spring-boot","todo-list"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ianfelps.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-02-13T01:41:13.000Z","updated_at":"2025-02-16T03:59:57.000Z","dependencies_parsed_at":"2025-08-04T03:37:49.189Z","dependency_job_id":"406d2ccb-b614-46ce-8521-81aad4f04734","html_url":"https://github.com/ianfelps/todo_list","commit_stats":null,"previous_names":["ianfelps/todo-list","ianfelps/todo_list"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ianfelps/todo_list","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ianfelps%2Ftodo_list","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ianfelps%2Ftodo_list/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ianfelps%2Ftodo_list/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ianfelps%2Ftodo_list/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ianfelps","download_url":"https://codeload.github.com/ianfelps/todo_list/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ianfelps%2Ftodo_list/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31961165,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T00:39:45.007Z","status":"online","status_checked_at":"2026-04-18T02:00:07.018Z","response_time":103,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api-rest","java","spring","spring-boot","todo-list"],"created_at":"2025-03-04T04:15:33.189Z","updated_at":"2026-04-18T07:32:22.674Z","avatar_url":"https://github.com/ianfelps.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# To-Do List em Java com Spring Boot\n\n## Introdução\n\nEste projeto é uma aplicação REST para gerenciamento de tarefas (To-do List) desenvolvida utilizando **Java** com o framework **Spring**. O objetivo é permitir que os usuários possam criar, listar, atualizar e deletar tarefas de forma simples e eficiente. A aplicação segue os princípios de desenvolvimento ágil e boas práticas de programação, utilizando a arquitetura MVC (Model-View-Controller).\n\n## Estrutura do Projeto\n\nA estrutura do projeto é organizada da seguinte forma:\n\n- **src/main/java/com/ianfelps/todo_list**\n    - **controller**: Contém as classes responsáveis por gerenciar as requisições HTTP e interagir com os serviços.\n    - **entity**: Contém as classes que representam as entidades do banco de dados, mapeadas para tabelas.\n    - **repository**: Contém as interfaces que gerenciam a persistência de dados, utilizando Spring Data JPA.\n    - **service**: Contém as classes que implementam a lógica de negócio da aplicação.\n    - **TodoListApplication.java**: Classe principal que inicia a aplicação Spring Boot.\n\n- **src/test/java/com/ianfelps/todo_list**\n    - **TodoListApplicationTests.java**: Contém os testes automatizados da aplicação, utilizando JUnit e Spring Test.\n\n## Estrutura das Classes\n\n### Todo\n\nA classe `Todo` representa a entidade To-do e é mapeada para a tabela `todos` no banco de dados. Possui os seguintes atributos:\n\n- `id`: Identificador único do To-do (chave primária).\n- `nome`: Nome da tarefa (não pode ser vazio).\n- `descricao`: Descrição da tarefa (não pode ser vazia).\n- `realizado`: Indica se a tarefa foi concluída.\n- `prioridade`: Nível de prioridade da tarefa (deve ser maior ou igual a zero).\n\n### TodoController\n\nA classe `TodoController` é responsável por gerenciar as requisições HTTP relacionadas aos To-dos. Os principais métodos incluem:\n\n- `list()`: Retorna a lista de todos os To-dos.\n- `create(Todo todo)`: Cria um novo To-do.\n- `update(Long id, Todo todo)`: Atualiza um To-do existente.\n- `delete(Long id)`: Deleta um To-do existente.\n\n### TodoWebController - Em desenvolvimento...\n\nA classe `TodoWebController` é responsável por processar as requisições HTTP da interface web. Os principais métodos incluem:\n\n- `list()`: Retorna a lista de todos os To-dos.\n\n### TodoService\n\nA classe `TodoService` contém a lógica de negócio para manipulação dos To-dos. Os principais métodos incluem:\n\n- `list()`: Lista todos os To-dos, ordenados por prioridade e ID.\n- `create(Todo todo)`: Salva um novo To-do no repositório.\n- `update(Long id, Todo todo)`: Atualiza um To-do existente.\n- `delete(Long id)`: Remove um To-do do repositório.\n\n### TodoRepository\n\nA interface `TodoRepository` estende `JpaRepository`, fornecendo métodos prontos para operações CRUD (Create, Read, Update, Delete) na entidade To-do.\n\n## Dependências\n\nO projeto utiliza as seguintes dependências principais, definidas no arquivo `pom.xml`:\n\n- **Spring Boot Starter Web**: Para construir aplicações web, incluindo suporte a RESTful APIs.\n- **Spring Boot Starter Data JPA**: Para integração com bancos de dados usando JPA (Java Persistence API).\n- **Spring Boot Starter Validation**: Para validação de dados de entrada.\n- **MySQL Connector**: Para conexão com o banco de dados MySQL.\n- **H2 Database**: Banco de dados em memória para testes e desenvolvimento.\n- **Spring Boot DevTools**: Para facilitar o desenvolvimento com recarregamento automático.\n- **Springdoc OpenAPI**: Para documentação Swagger da API, permitindo a visualização e teste dos endpoints.\n- **Thymeleaf**: Para renderização de templates HTML.\n\n## Interface Web - Em desenvolvimento...\n\nA interface web da aplicação estã disponível no enderço padrão e apresenta a lista de todos os To-dos. Ela permite a criação, atualização e exclusão de tarefas.\n\n## Endpoints da API\n\nA aplicação expõe os seguintes endpoints:\n\n- **GET /api**: Lista todos os To-dos.\n- **POST /api**: Cria um novo To-do.\n- **PUT /api/{id}**: Atualiza um To-do existente.\n- **DELETE /api/{id}**: Deleta um To-do existente.\n\n#### Documentação da API em Swagger: `http://localhost:8080/swagger-ui.html`\n\n### Exemplo de Uso\n\n#### Listar To-dos\n\n```http\nGET /api\n```\n\n#### Criar um To-do\n\n```http\nPOST /api\nContent-Type: application/json\n\n{\n  \"nome\": \"Nome do To-do\",\n  \"descricao\": \"Descrição do To-do.\",\n  \"realizado\": false,\n  \"prioridade\": 1\n}\n```\n\n#### Atualizar um To-do\n\n```http\nPUT /api/{id}\nContent-Type: application/json\n\n{\n  \"nome\": \"Nome do To-do Atualizado\",\n  \"descricao\": \"Descrição do To-do Atualizada.\",\n  \"realizado\": true,\n  \"prioridade\": 0\n}\n```\n\n#### Deletar um To-do\n\n```http\nDELETE /api/{id}\n```\n\n## Testes Automatizados\n\nOs testes automatizados estão implementados na classe `TodoListApplicationTests.java`. Eles garantem que as funcionalidades da aplicação estão funcionando conforme o esperado. Os principais testes incluem:\n\n- `testCreateTodoSuccess()`: Testa a criação de um To-do com sucesso.\n- `testCreateTodoFailure()`: Testa a criação de um To-do com falha.\n- `testUpdateTodoSuccess()`: Testa a atualização de um To-do com sucesso.\n- `testUpdateTodoFailure()`: Testa a atualização de um To-do com falha.\n- `testDeleteTodoSuccess()`: Testa a exclusão de um To-do com sucesso.\n\n## Como Executar o Projeto\n\nPara executar o projeto, siga os passos abaixo:\n\n### Pré-requisitos\n\n- **Java JDK 17**: Certifique-se de que o Java JDK 17 está instalado em sua máquina. Você pode verificar a instalação executando o comando:\n  ```bash\n  java -version\n  ```\n\n- **Maven**: Certifique-se de que o Maven esté instalado em sua máquina. Vocé pode verificar a instalação executando o comando:\n  ```bash\n  mvn -version\n  ```\n\n- **Banco de Dados**: Configure um banco de dados MySQL e crie um banco de dados para a aplicação.\n\n### Passos para Executar\n\n1. **Clone o Repositório**:\n  Clone o repositório do projeto para sua máquina local:\n  ```bash\n  git clone https://github.com/ianfelps/todo_list.git\n  cd todo_list\n  ```\n\n2. **Configurar o Banco de Dados**:\n  Edite o arquivo `src/main/resources/application.properties` para configurar a conexão com o banco de dados MySQL:\n  ```properties\n  spring.datasource.url=jdbc:mysql://localhost:3306/seu_banco\n  spring.datasource.username=seu_usuario\n  spring.datasource.password=sua_senha\n  spring.jpa.hibernate.ddl-auto=update\n  ```\n\n3. **Compilar o Projeto**:\n  Navegue até o diretório do projeto e execute o comando Maven para compilar o projeto:\n  ```bash\n  mvn clean install\n  ```\n\n4. **Executar a Aplicação**:\n  Após a compilação bem-sucedida, você pode executar a aplicação com o seguinte comando:\n  ```bash\n  mvn spring-boot:run\n  ```\n\n5. **Acessar a Interface Web**:\n  A interface web estará disponível em: `http://localhost:8080`. Vocé pode acessar a interface web para criar, editar e excluir To-dos de uma forma interativa e dinâmica.\n\n6. **Acessar a API**:\n  A API estará disponível em: `http://localhost:8080/api`. Você pode acessar os endpoints conforme descrito na seção de **Endpoints da API**.\n\n7. **Documentação da API**:\n  A documentação da API em Swagger pode ser acessada em: `http://localhost:8080/swagger-ui.html`\n\n## Conclusão\n\nEste projeto é uma demonstração de como construir uma API REST simples de gerenciamento de tarefas e foi uma excelente oportunidade de aprendizado permitindo-me aprofundar meus conhecimentos em Java, Spring, APIs REST, testes automatizados e boas práticas de desenvolvimento que tornem a aplicação mais fácil e entender e manter. Futuramente estarei implementando novas funcionalidades e uma integração com front-end para tornar a aplicação completa.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fianfelps%2Ftodo_list","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fianfelps%2Ftodo_list","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fianfelps%2Ftodo_list/lists"}