This project aims to blend theoretical knowledge of data structures with practical software development skills by creating a task management system akin to Jira. Students are tasked with designing and implementing their own data structures to handle different aspects of task management efficiently.
- User Management: Functions such as register, login, and manage user profiles.
- Task Management: Includes capabilities to create, update, delete, and search for tasks.
- Project Boards: Organize tasks within customizable projects and boards.
- Role-based Access Control: Implement different permissions based on user roles such as Admin, Manager, and User.
Students are required to implement the following data structures from scratch and integrate them into their application:
- Stack: Used for managing undo operations in task edits.
- Queue: Handle notifications and task processing queues.
- Linked List: Maintain dynamic lists of tasks and projects.
- Binary Tree: Enhance the efficiency of search operations.
- Hash Table: Used for fast mapping of user IDs to user details and task IDs to tasks.
- Backend: Students may choose any programming language (e.g., Python, Java, Node.js).
- Frontend: A graphical user interface (GUI) must be developed. Frameworks like React, Angular, or even simpler ones like Tkinter for Python can be used.
- Database: Students are free to choose any relational or NoSQL database (e.g., MySQL, PostgreSQL, MongoDB, Firebase).
- Install the chosen programming language and setup the selected database on your local machine.
-
Create an organization for your team in github.
-
Create a repository in your organization and add at least one TAs to your repository.
-
Start your project implemention and commit each changes in git. HINT: Your commits will be checked and has a part of your score.
src/: Contains all source files for backend and frontend implementations.db/: Database scripts, schemas, and connection configurations.docs/: Additional documentation and detailed project specifications.tests/: Test scripts for unit and integration testing.
- Effective implementation and use of the specified data with the database, programming language, and GUI choices.
- Functionality and usability of the GUI in task and user management.
- Code quality, documentation, and error handling.
- Additional instructions on data structure applications and GUI development best practices will be provided in supplementary documents.