https://github.com/egor924/task-manager
An educational project focused on building a Task Manager application to demonstrate practical development skills
https://github.com/egor924/task-manager
java spring spring-boot spring-data-jpa spring-security
Last synced: about 2 months ago
JSON representation
An educational project focused on building a Task Manager application to demonstrate practical development skills
- Host: GitHub
- URL: https://github.com/egor924/task-manager
- Owner: egor924
- Created: 2025-10-14T22:58:56.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2025-10-14T23:00:21.000Z (8 months ago)
- Last Synced: 2025-10-25T15:28:51.144Z (8 months ago)
- Topics: java, spring, spring-boot, spring-data-jpa, spring-security
- Language: Java
- Homepage:
- Size: 353 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## Task manager
Api for task manager built on Spring Framework for leaning purposes.
## Technologies:
* Java 17
* Spring framework (Spring boot, Spring Security, String Data JPA/Hibernate, Spring Web, Spring boot starter mail)
* Postgresql
* PGAdmin
* Lombok
* JUnit
* JWT
* Testcontainers
* Springdoc OpenApi
### Functionality/features:
* User authentication with JWT generation and storing it in cookies
* User registration with checking existing ones
* Refresh JWT token if refresh-token exists and has not expired
* Logout by retrieving the current authenticated user and removing refresh tokens associated with his ID
* Account verification after registration
* Password reset by mail
* Changing the current user's password
* Dashboard with projects and 50 tasks by deadline and creation date
* Retrieving all projects or a project by query and receiving tasks of all or by request or tag
* All CRUD operations with projects and tasks
* Changing project/task status
* Unit and integration tests
## JWT
Auth was performed using JWT with Refresh and Access tokens and HttpOnly Cookie.
## Swagger Docs
The project has been configured with a Swagger that exposes the APIs with the schema
Accessible at http://localhost:8080/swagger-ui/index.html
## Getting started
Clone the application
```bash
$ git clone https://github.com/AlKl1M/TaskManager.git
$ cd TaskManager
```
Create a Postgres database
```bash
$ create database taskmanager;
$ create user taskmanager with password 'taskmanager';
$ grant all privileges on database taskmanager to taskmanager;
```
Run the app
Now you can run the app locally or deploy it using docker
```bash
$ docker compose up
```
* It deploys locally on port 8080, and in Docker on 8081.
* Every run of the app will reset your state. To not do that, modify spring.jpa.hibernate.ddl-auto: update
* Also don't forget to create gmail account for Spring mail functionality. This account must have two-factor authentication.