This is a final year university project. Some features are still worked on.
Link to the video on YouTube: https://youtu.be/kugDbRqt2J4
Greetings and welcome to my project! I am pleased to introduce a Todo List Application developed using Java and the Spring Boot 3 framework. This application is designed to provide users with a seamless experience in efficiently managing tasks. Users can work in coperation on a different projects. Features include: add, delete, update tasks and new cards. Users can be assigned to tasks and each user can see to how many tasks they are assigned to.
There is a task search by name, if there are many tasks it can be helpful to find a specific one.
Each task can be commented. Comments can include text and images.
Users passwords are protected with BCrypt algorithm.
Prerequisites
- Java 20 or at least Java 11 installed on your device
- MySQL installed on your device
- A modern web browser
Dependencies used
- Spring Framework
- Spring Boot DevTools
- MySQL Connector/J
- Thymeleaf
- Spring Security
- Spring Websockets and related dependencies
- Lombok
Installation
- Download zip file of the master branch
Running the Application
- Import the project into your preferred IDE (IntelliJ, Eclipse, etc.)
- My program uses MySQL database to store info, the exact copy of my database is included below. It will be neccessary to run the app.
- Locate and run the main application class.
- Access website through: http://localhost:8080/login
Users can:
- Register and Login
- Add description to each task
- Assign users to tasks
- Move tasks and bars
- Prioritise tasks based on the number assign
- Update names
- Search tasks by name
- See all tasks assigned to me
- Java 20
- JavaScript - jQuery
- JUnit 5
- Postman
- HTML & CSS
- Sprint Boot 3
- JDBC
- Hibernate
- Thymeleaf
- MySQL - Workbench 8.0
- WebSocket
CREATE TABLE Users ( first_name varchar(45) DEFAULT NULL, last_name varchar(45) DEFAULT NULL, email_address varchar(100) PRIMARY KEY, password varchar(68) default NULL );
CREATE TABLE Homepages ( id BIGINT AUTO_INCREMENT PRIMARY KEY, user_id VARCHAR(100), data TEXT, FOREIGN KEY (user_id) REFERENCES users(email_address) );
create table Projects( id BIGINT AUTO_INCREMENT PRIMARY KEY, name varchar(25) NOT NULL, deadline DATE, creator_id VARCHAR(100), FOREIGN KEY (creator_id) REFERENCES users(email_address) );
CREATE TABLE Project_members ( project_id BIGINT, user_id VARCHAR(100), PRIMARY KEY (project_id, user_id), FOREIGN KEY (project_id) REFERENCES projects(id), FOREIGN KEY (user_id) REFERENCES users(email_address) );
CREATE TABLE Bars ( id BIGINT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(70) NOT NULL, position BIGINT, project_id BIGINT, FOREIGN KEY (project_id) REFERENCES Projects(id) );
CREATE TABLE Tasks( id BIGINT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, state VARCHAR(255), project_id BIGINT, bar_id BIGINT, FOREIGN KEY (bar_id) REFERENCES Bars(id), FOREIGN KEY (project_id) REFERENCES projects(id), priority INT, position BIGINT, description varchar(10000), assigned_user_email VARCHAR(100), FOREIGN KEY (assigned_user_email) REFERENCES users(email_address) );