Topsite Task Management (TTM) System is a web-based application built with Spring Boot that helps users organize and track their personal and professional tasks. The system supports task creation, status tracking, priority management, and maintains a history of completed and deleted tasks.
-
User Authentication
- Email/Password registration and login
- Google OAuth2 integration for single sign-on
- Secure session management
-
Task Management
- Create, read, update, and delete tasks
- Set task priorities (HIGH, MEDIUM, LOW)
- Track task status (TODO, IN_PROGRESS, COMPLETED)
- Set due dates for tasks
- Task history tracking
- Real-time task status updates
-
Task Organization
- Kanban board style interface
- Tasks organized by status
- Visual priority indicators
- Due date tracking
- Task completion tracking
-
History Tracking
- Track completed tasks
- Track deleted tasks
- Maintain audit trail of task changes
- Filter history by action type
-
Backend
- Java 17
- Spring Boot 3.2.0
- Spring Security
- Spring Data JPA
- PostgreSQL Database
- Maven
-
Frontend
- Thymeleaf template engine
- Bootstrap 5.1.3
- Font Awesome 5.15.4
- HTML5/CSS3
- JavaScript
-
Security
- Spring Security
- OAuth2 Client
- CSRF Protection
- Password Encryption
- JDK 17 or later
- Maven 3.6 or later
- PostgreSQL 12 or later
- Git
git clone https://github.com/Topebhh500/Task-Management-System.git task-management
cd task-managementCreate a PostgreSQL database and update application.properties:
spring.datasource.url=jdbc:postgresql://localhost:5432/taskmanagement
spring.datasource.username=your_username
spring.datasource.password=your_passwordUpdate application.properties with your Google OAuth2 credentials:
spring.security.oauth2.client.registration.google.client-id=your_client_id
spring.security.oauth2.client.registration.google.client-secret=your_client_secretmvn clean install
mvn spring-boot:runThe application will be available at http://localhost:8074
CREATE TABLE users (
id BIGSERIAL PRIMARY KEY,
email VARCHAR(255) NOT NULL UNIQUE,
password VARCHAR(255),
full_name VARCHAR(255),
google_id VARCHAR(255),
enabled BOOLEAN DEFAULT true
);CREATE TABLE tasks (
id BIGSERIAL PRIMARY KEY,
title VARCHAR(255) NOT NULL,
description TEXT,
priority VARCHAR(20),
status VARCHAR(20),
due_date TIMESTAMP,
created_at TIMESTAMP NOT NULL,
updated_at TIMESTAMP NOT NULL,
completion_date TIMESTAMP,
user_id BIGINT REFERENCES users(id)
);CREATE TABLE task_history (
id BIGSERIAL PRIMARY KEY,
original_task_id BIGINT NOT NULL,
title VARCHAR(255) NOT NULL,
description TEXT,
priority VARCHAR(20),
status VARCHAR(20),
due_date TIMESTAMP,
action_type VARCHAR(20) NOT NULL,
action_date TIMESTAMP NOT NULL,
action_by VARCHAR(255) NOT NULL,
completion_date TIMESTAMP
);GET /login- Login pagePOST /login- Process loginGET /register- Registration pagePOST /register- Process registrationPOST /logout- Logout
GET /tasks- List all tasksGET /tasks/new- New task formPOST /tasks- Create new taskGET /tasks/{id}/edit- Edit task formPOST /tasks/{id}- Update taskDELETE /tasks/{id}- Delete taskPOST /tasks/{id}/complete- Complete taskPOST /tasks/{id}/start- Start task
GET /task-history- View task historyGET /task-history?filter=completed- View completed tasksGET /task-history?filter=deleted- View deleted tasks
- CSRF protection enabled
- Password encryption using BCrypt
- OAuth2 authentication
- Session management
- Secured endpoints
- User-specific data isolation
The application can be deployed to various platforms:
- Railway.app (Recommended)
- Render.com
- DigitalOcean
- Heroku
- AWS
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE.md file for details
Temitope Ajayi - topsitech@gmail.com Project Link: https://github.com/Topebhh500/Task-Management-System
- Spring Boot Documentation
- Bootstrap Documentation
- Font Awesome Icons
- Google OAuth2 Documentation