A comprehensive web-based task management application built using Java Servlets, JSP, and PostgreSQL. This application follows the MVC (Model-View-Controller) architecture pattern and provides a robust platform for managing tasks, projects, and user assignments.
- Features
- Entity Relationship Diagram
- Technologies Used
- Project Structure
- Setup and Installation
- Usage
- API Documentation
- Contributing
- License
- User registration and authentication
- Role-based access control (Admin and Regular users)
- User profile management
- Create, read, update, and delete projects
- Assign users to projects
- Track project progress and deadlines
- Create, read, update, and delete tasks
- Assign tasks to users
- Set task priorities, deadlines, and statuses
- Filter tasks by various criteria (status, assignee, project, etc.)
- Track task history and changes
- Overview of tasks and projects
- Task statistics and progress tracking
- Recent activity feed
- Java 17
- Jakarta Servlet API 6.0
- JDBC for database connectivity
- PostgreSQL database
- JSP (JavaServer Pages)
- JSTL (JavaServer Pages Standard Tag Library)
- Bootstrap 5 for responsive design
- HTML5, CSS3, JavaScript
- Maven for dependency management
- Apache Tomcat 10.1.x
The project follows the MVC (Model-View-Controller) architecture pattern:
Task_Management_System/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── clb/
│ │ │ └── task_management_system/
│ │ │ ├── controller/ # Controllers for business logic
│ │ │ ├── dao/ # Data Access Objects for database operations
│ │ │ ├── filter/ # Servlet filters for authentication and authorization
│ │ │ ├── model/ # Model classes representing data entities
│ │ │ ├── servlet/ # Servlets for handling HTTP requests
│ │ │ └── util/ # Utility classes
│ │ ├── resources/ # Configuration files
│ │ └── webapp/
│ │ ├── WEB-INF/
│ │ │ ├── views/ # JSP view files
│ │ │ │ ├── auth/ # Authentication views
│ │ │ │ ├── common/ # Common components (header, footer)
│ │ │ │ ├── project/ # Project management views
│ │ │ │ └── task/ # Task management views
│ │ │ └── web.xml # Web application configuration
│ │ ├── css/ # CSS stylesheets
│ │ ├── js/ # JavaScript files
│ │ └── index.jsp # Entry point
│ └── test/ # Test classes
├── pom.xml # Maven configuration
└── README.md # Project documentation
- JDK 17 or higher
- Apache Maven 3.8.x or higher
- PostgreSQL 14.x or higher
- Apache Tomcat 10.1.x or higher
-
Create a PostgreSQL database:
CREATE DATABASE task_management_system;
-
Create a database user:
CREATE USER task_user WITH ENCRYPTED PASSWORD 'your_password'; GRANT ALL PRIVILEGES ON DATABASE task_management_system TO task_user;
-
Run the database schema script:
-- Create tables CREATE TABLE USERS ( id SERIAL PRIMARY KEY, first_name VARCHAR(50) NOT NULL, last_name VARCHAR(50) NOT NULL, email VARCHAR(100) UNIQUE NOT NULL, password VARCHAR(255) NOT NULL, role VARCHAR(20) NOT NULL ); CREATE TABLE PROJECTS ( id SERIAL PRIMARY KEY, name VARCHAR(100) NOT NULL, description TEXT, start_date DATE NOT NULL, end_date DATE NOT NULL, created_by INTEGER REFERENCES USERS(id) ); CREATE TABLE TASKS ( id SERIAL PRIMARY KEY, title VARCHAR(100) NOT NULL, description TEXT, status VARCHAR(20) NOT NULL, priority VARCHAR(20) NOT NULL, due_date DATE NOT NULL, created_at TIMESTAMP NOT NULL, updated_at TIMESTAMP NOT NULL, project_id INTEGER REFERENCES PROJECTS(id), assignee_id INTEGER REFERENCES USERS(id), created_by INTEGER REFERENCES USERS(id) ); CREATE TABLE TASK_LOGS ( id SERIAL PRIMARY KEY, task_id INTEGER REFERENCES TASKS(id), user_id INTEGER REFERENCES USERS(id), action VARCHAR(50) NOT NULL, old_value TEXT, new_value TEXT, created_at TIMESTAMP NOT NULL );
-
Insert initial admin user:
INSERT INTO USERS (first_name, last_name, email, password, role) VALUES ('Admin', 'User', 'admin@novatech.com', 'admin123', 'admin');
-
Clone the repository:
git clone https://github.com/yourusername/Task_Management_System.git cd Task_Management_System -
Configure database connection in
src/main/java/com/clb/task_management_system/util/DatabaseUtil.java:private static final String URL = "jdbc:postgresql://localhost:5432/task_management_system"; private static final String USER = "task_user"; private static final String PASSWORD = "your_password";
-
Build the project:
mvn clean package
-
Deploy the WAR file to Tomcat:
- Copy the generated WAR file from
target/Task_Management_System.warto Tomcat'swebappsdirectory - Start Tomcat server
- Copy the generated WAR file from
- Open your web browser and navigate to
http://localhost:8080/Task_Management_System - Login with the default admin credentials:
- Email: admin@novatech.com
- Password: admin123
-
Admin:
- Manage users, projects, and tasks
- Create, edit, and delete projects
- Assign users to tasks
- View all tasks and projects
-
Regular User:
- View assigned tasks and projects
- Create and manage tasks
- Update task status and progress
- View personal dashboard
-
Creating a New Project (Admin only):
- Navigate to Projects
- Click "New Project"
- Fill in project details
- Click "Create Project"
-
Creating a New Task:
- Navigate to Tasks
- Click "New Task"
- Fill in task details
- Assign to a user
- Click "Create Task"
-
Updating Task Status:
- Navigate to Tasks
- Click on a task
- Update the status
- Click "Save Changes"
The application does not expose a public API, but the internal API structure follows RESTful principles:
/auth- Authentication operations/dashboard- Dashboard view/project- Project management/task- Task management/users- User management (admin only)
- Fork the repository
- Create a feature branch:
git checkout -b feature-name - Commit your changes:
git commit -m 'Add some feature' - Push to the branch:
git push origin feature-name - Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
© 2025 NovaTech Solutions. All rights reserved.
