Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TaskMaster - To-Do List Web Application

A full-stack To-Do List application built with Java Servlets, JSP, JDBC, MySQL, Bootstrap 5, and custom CSS with dark mode support.

Features

  • User Authentication: Register, login, logout with session management
  • Dashboard: Welcome banner, task statistics, progress bar
  • Task CRUD: Create, read, update, delete tasks
  • Task Details: Title, description, category, priority, due date, status
  • Search & Filter: Search by title, filter by category/priority/status, sort by due date
  • Dark Mode: Toggle between light and dark themes
  • Responsive Design: Works on mobile, tablet, and desktop
  • Pagination: 10 tasks per page
  • Confirmation Dialogs: Before deleting tasks
  • Toast Notifications: Success/error feedback

Tech Stack

Layer Technology
Backend Java Servlets, JSP
Database MySQL 8.x
Connectivity JDBC
Architecture MVC (Model-View-Controller)
Frontend HTML5, CSS3, Bootstrap 5, JavaScript
Icons Font Awesome 6
Fonts Inter (Google Fonts)

Prerequisites

  • Java JDK 11+
  • Apache Tomcat 9+ (or any Servlet 4.0 container)
  • MySQL 8.x
  • Maven 3.6+ (optional, for building)
  • IDE: IntelliJ IDEA, Eclipse, or VS Code

Project Structure

TaskMaster/
├── sql/
│   └── database.sql              # MySQL database script
├── src/main/
│   ├── java/com/todolist/
│   │   ├── controller/
│   │   │   ├── AuthServlet.java       # Login, Register, Logout, Profile
│   │   │   ├── DashboardServlet.java  # Dashboard view
│   │   │   └── TaskServlet.java       # Task CRUD operations
│   │   ├── dao/
│   │   │   ├── UserDAO.java           # User database operations
│   │   │   └── TaskDAO.java           # Task database operations
│   │   ├── model/
│   │   │   ├── User.java              # User JavaBean
│   │   │   └── Task.java              # Task JavaBean
│   │   └── util/
│   │       ├── DatabaseConnection.java # JDBC connection utility
│   │       └── PasswordUtil.java      # Password hashing utility
│   └── webapp/
│       ├── WEB-INF/
│       │   └── web.xml                # Web application config
│       ├── css/
│       │   └── style.css              # Custom CSS with dark mode
│       ├── js/
│       │   └── app.js                 # JavaScript (theme, dialogs, etc.)
│       ├── jsp/
│       │   ├── header.jsp             # Common header with sidebar
│       │   ├── footer.jsp             # Common footer
│       │   ├── login.jsp              # Login page
│       │   ├── register.jsp           # Registration page
│       │   ├── dashboard.jsp          # Dashboard page
│       │   ├── tasks.jsp              # Task list with filters
│       │   ├── add-task.jsp           # Add task form
│       │   ├── edit-task.jsp          # Edit task form
│       │   ├── view-task.jsp          # Task detail view
│       │   ├── profile.jsp            # User profile page
│       │   └── error.jsp              # Error page
│       └── index.jsp                  # Entry point redirect
└── pom.xml                           # Maven build file

Setup Instructions

Step 1: Set Up MySQL Database

  1. Open MySQL Workbench or command line
  2. Run the database script:
    mysql -u root -p < sql/database.sql
  3. This creates todolist_db with users and tasks tables

Step 2: Configure Database Connection

Edit src/main/java/com/todolist/util/DatabaseConnection.java:

private static final String URL = "jdbc:mysql://localhost:3306/todolist_db?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true";
private static final String USERNAME = "root";    // Your MySQL username
private static final String PASSWORD = "";         // Your MySQL password

Step 3: Build the Project

Option A: Using Maven

mvn clean package

Option B: Using IDE

  • Import as Maven project in IntelliJ/Eclipse
  • Build the project

Step 4: Deploy to Tomcat

  1. Copy target/TaskMaster.war to Tomcat's webapps/ directory
  2. Start Tomcat:
    # Linux/Mac
    ./bin/startup.sh
    
    # Windows
    bin\startup.bat

Step 5: Access the Application

Open browser and navigate to:

http://localhost:8080/TaskMaster/

Step 6: Create an Account

  1. Click "Create one" on the login page
  2. Fill in your details and register
  3. Login with your credentials

Default Test Account

Field Value
Email john@example.com
Password password123

Database Schema

Users Table

Column Type Description
user_id INT (PK) Auto-increment ID
full_name VARCHAR(100) User's full name
email VARCHAR(150) Unique email address
password VARCHAR(255) SHA-256 hashed password
created_at TIMESTAMP Account creation time
updated_at TIMESTAMP Last update time

Tasks Table

Column Type Description
task_id INT (PK) Auto-increment ID
user_id INT (FK) References users.user_id
title VARCHAR(200) Task title
description TEXT Task description
category ENUM Work/Study/Personal/Shopping/Other
priority ENUM Low/Medium/High
due_date DATE Task deadline
status ENUM Pending/Completed
created_at TIMESTAMP Task creation time
updated_at TIMESTAMP Last update time

Architecture

This application follows the MVC (Model-View-Controller) pattern:

  • Model: User.java, Task.java (JavaBeans)
  • View: JSP pages with Bootstrap 5 and custom CSS
  • Controller: Servlets (AuthServlet, DashboardServlet, TaskServlet)
  • Data Access: DAO pattern (UserDAO, TaskDAO)
  • Utility: DatabaseConnection, PasswordUtil

Design System

  • Color Palette: Indigo primary (#4F46E5) + Slate neutrals
  • Typography: Inter font family (400, 500, 600, 700)
  • Spacing: 8dp grid system
  • Dark Mode: CSS custom properties with data-theme attribute
  • Accessibility: WCAG AA contrast, focus rings, ARIA labels, skip links

License

MIT License - Free to use for personal and commercial projects.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages