{"id":27132778,"url":"https://github.com/aditya-620/todo-web-application-springboot","last_synced_at":"2026-05-05T15:35:14.892Z","repository":{"id":286501222,"uuid":"929605366","full_name":"aditya-620/Todo-Web-Application-SpringBoot","owner":"aditya-620","description":"📝 A simple Todo Web Application built with Spring Boot, Spring Security, Spring Data JPA, and H2. Features include user authentication, CRUD operations, validation, and a responsive Bootstrap UI.","archived":false,"fork":false,"pushed_at":"2025-04-06T20:36:18.000Z","size":34,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-06T21:30:21.385Z","etag":null,"topics":["bootstrap","h2-database","jpa","jsp","spring-boot","spring-data-jpa","spring-mvc","spring-security"],"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/aditya-620.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}},"created_at":"2025-02-08T23:41:52.000Z","updated_at":"2025-04-06T20:39:34.000Z","dependencies_parsed_at":"2025-04-06T21:40:36.118Z","dependency_job_id":null,"html_url":"https://github.com/aditya-620/Todo-Web-Application-SpringBoot","commit_stats":null,"previous_names":["aditya-620/todo-web-application-springboot"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aditya-620%2FTodo-Web-Application-SpringBoot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aditya-620%2FTodo-Web-Application-SpringBoot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aditya-620%2FTodo-Web-Application-SpringBoot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aditya-620%2FTodo-Web-Application-SpringBoot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aditya-620","download_url":"https://codeload.github.com/aditya-620/Todo-Web-Application-SpringBoot/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247739499,"owners_count":20988031,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["bootstrap","h2-database","jpa","jsp","spring-boot","spring-data-jpa","spring-mvc","spring-security"],"created_at":"2025-04-07T22:26:36.323Z","updated_at":"2026-05-05T15:35:14.840Z","avatar_url":"https://github.com/aditya-620.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 📝 Todo Web Application - Spring Boot\n\nThis is a simple **Todo Web Application** built using **Spring Boot**. It allows users to manage their tasks with features like adding, updating, and deleting todos. The project leverages **Spring MVC**, **Spring Security**, **Spring Data JPA**, and an **H2 in-memory database** for fast and easy development.\n\n---\n\n## 🚀 Features\n\n- 🔐 **User Authentication**: Secured login with in-memory user details via Spring Security.\n- 📋 **CRUD Operations**: Create, Read, Update, and Delete todos.\n- ✅ **Validation**: Form validation for cleaner user input.\n- 📱 **Responsive UI**: Designed with Bootstrap for a modern and responsive layout.\n- 🗃️ **In-Memory Database**: Uses H2 for rapid setup and testing.\n- 📅 **Date Picker**: Bootstrap-integrated date picker for selecting target dates.\n\n---\n\n## 📂 Project Structure\n\n### 📁 Controllers\n- `WelcomeController`: Manages the welcome page and user session.\n- `TodoControllerJpa`: Handles todo-related CRUD operations using JPA.\n- `SayHelloController`: Demonstrates simple Spring MVC functionality.\n\n### ⚙️ Services\n- `TodoService`: Contains business logic for managing todos (non-JPA implementation).\n\n### 🗃️ Repositories\n- `TodoRepository`: Interface for data access using Spring Data JPA.\n\n### 📦 Entities\n- `Todo`: Represents the todo model with fields such as `id`, `username`, `description`, `targetDate`, and `done`.\n\n---\n\n## ✅ Prerequisites\n\n- Java 17 or higher  \n- Maven (or use the Maven Wrapper)\n\n---\n\n## 🛠️ Getting Started\n\n### 1. Clone the Repository\n\n```bash\ngit clone \u003crepository-url\u003e\ncd Todo-Web-Application-SpringBoot\n```\n\n### 2. Build the Project\n```bash\n./mvnw clean install\n```\n\n### 3. Run the Application  \n```bash\n./mvnw spring-boot:run\n```\n\n- Maven (or use the Maven Wrapper)\n\n---\n\n## 🌐 Application Endpoints\n\n### 🔓 Public Endpoints\n\n- `GET /say-hello`  \n  Returns a simple `\"Hello\"` message.\n\n- `GET /say-hello-html`  \n  Returns a basic HTML page.\n\n- `GET /say-hello-jsp`  \n  Renders a JSP page.\n\n---\n\n### 🔐 Secured Endpoints (require login)\n\n\n- `GET /`  \n  Welcome page after login.\n\n- `GET /list-todos`  \n  View the list of todos.\n\n- `GET /add-todo`  \n  Add a new todo item.\n\n- `POST /update-todo?id={id}`  \n  Update an existing todo with the specified ID.\n\n- `POST /delete-todo?id={id}`  \n  Delete a todo with the specified ID.\n\n---\n\n## 💾 Database\n\nThis application uses an **H2 in-memory database** for development and testing.\n\n- **H2 Console:** [http://localhost:8080/h2-console](http://localhost:8080/h2-console)\n\n---\n\n## 🧰 Technologies Used\n\n- **Spring Boot** – Core framework\n- **Spring MVC** – Web layer and controller routing\n- **Spring Security** – Handles authentication and authorization\n- **Spring Data JPA** – ORM and data persistence abstraction\n- **H2 Database** – Lightweight in-memory DB for quick development\n- **Bootstrap** – Frontend styling and responsive design\n- **JSP** – View rendering on the server side\n\n---\n\n## ⚙️ Configuration\n\n### `application.properties`\n\n```properties\n# View resolver settings\nspring.mvc.view.prefix=/WEB-INF/jsp/\nspring.mvc.view.suffix=.jsp\n\n# H2 database configuration\nspring.datasource.url=jdbc:h2:mem:testdb\n\n# Date formatting\nspring.mvc.format.date=yyyy-MM-dd\n---\n## 🧪 Running Tests\n\nTo run all tests, use the following command:\n\n```bash\n./mvnw test\n```\n---\n## 📁 Folder Structure\n```\nTodo-Web-Application-SpringBoot/\n├── src/\n│   ├── main/\n│   │   ├── java/\n│   │   │   └── com.adityarastogi.springboot.Todo_Web_Application_SpringBoot/\n│   │   │       ├── todo/               # Todo-related logic\n│   │   │       ├── login/              # Login and welcome logic\n│   │   │       ├── hello/              # Basic Spring MVC examples\n│   │   │       └── security/           # Spring Security configuration\n│   │   ├── resources/\n│   │   │   ├── META-INF/resources/WEB-INF/jsp/  # JSP views\n│   │   │   ├── application.properties          # App config\n│   │   │   └── data.sql                        # Initial data\n│   └── test/                                   # Unit tests\n├── pom.xml                                     # Maven config\n└── README.md                                   # Project documentation\n```\n---\n## 📬 Contact\n\n- Feel free to open an issue or submit a pull request if you find bugs or want to contribute improvements!\n---","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faditya-620%2Ftodo-web-application-springboot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faditya-620%2Ftodo-web-application-springboot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faditya-620%2Ftodo-web-application-springboot/lists"}