Task Management System
Task Management System that goes beyond basic CRUD operations
and includes advanced features to manage tasks, projects, and user
roles. The system should be designed to handle complex
relationships between users, tasks, and projects.
User Management:
Implement user authentication and authorization using Spring
Security.
Define roles such as Admin, Project Manager, and Team
Member.
Admins can manage user roles and permissions.
Project Management:
Users can create projects and assign project managers.
Project managers can add team members to projects.
Define project deadlines and milestones.
Task Management:
Tasks can be categorized into different types (e.g., feature, bug,
enhancement).
Each task has a priority level, due date, and status.
Implement a task assignment system, allowing project
managers to assign tasks to team members.
User Table:
user_id (Primary Key)
username
password (hashed and salted)
email
role_id (Foreign Key Referencing Role Table)
Role Table:
role_id (Primary Key)
role_name (e.g., Admin, Project Manager, Team Member)
Project Table:
project_id (Primary Key)
project_name
project_manager_id (Foreign Key referencing User Table)
deadline
milestones
Project Team Table:
project_id (Foreign Key referencing Project Table)
user_id (Foreign Key referencing User Table)
Task Table:
task_id (Primary Key)
task_name
task_type (e.g., feature, bug, enhancement)
priority (e.g., high, medium, low)
due_date
status
project_id (Foreign Key referencing Project Table)
Task Assignment Table:
task_id (Foreign Key referencing Task Table)
assignee_id (Foreign Key referencing User Table)
Relationships are defined as:
A User can have one Role, but a Role can be associated with
multiple Users. (One-to-Many relationship between Role and
User)
A Project can have one Project Manager, but a Project Manager
can manage multiple Projects. (One-to-Many relationship
between User and Project)
A Project can have multiple Team Members, and a Team
Member can be part of multiple Projects. (Many-to-Many
relationship between User and Project using the ProjectTeam
table)
A Task is associated with one Project, but a Project can have
multiple Tasks. (One-to-Many relationship between Project and
Task)
A Task can be assigned to one User, but a User can be assigned
multiple Tasks. (One-to-Many relationship between User and
Task using the TaskAssignment table)