A full-stack To-Do List application built with Java Servlets, JSP, JDBC, MySQL, Bootstrap 5, and custom CSS with dark mode support.
- 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
| 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) |
- 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
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
- Open MySQL Workbench or command line
- Run the database script:
mysql -u root -p < sql/database.sql - This creates
todolist_dbwithusersandtaskstables
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 passwordOption A: Using Maven
mvn clean packageOption B: Using IDE
- Import as Maven project in IntelliJ/Eclipse
- Build the project
- Copy
target/TaskMaster.warto Tomcat'swebapps/directory - Start Tomcat:
# Linux/Mac ./bin/startup.sh # Windows bin\startup.bat
Open browser and navigate to:
http://localhost:8080/TaskMaster/
- Click "Create one" on the login page
- Fill in your details and register
- Login with your credentials
| Field | Value |
|---|---|
| john@example.com | |
| Password | password123 |
| Column | Type | Description |
|---|---|---|
| user_id | INT (PK) | Auto-increment ID |
| full_name | VARCHAR(100) | User's full name |
| VARCHAR(150) | Unique email address | |
| password | VARCHAR(255) | SHA-256 hashed password |
| created_at | TIMESTAMP | Account creation time |
| updated_at | TIMESTAMP | Last update time |
| 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 |
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
- 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-themeattribute - Accessibility: WCAG AA contrast, focus rings, ARIA labels, skip links
MIT License - Free to use for personal and commercial projects.