Project Final Report
Project Final Report
TABMARK.COM
Group Members
Saad Usmani
Fujai Shamshir
Tri Ho
Quantitative Feedback
Task Avg. Rating (out of 5)
The data clearly shows that users found all major features highly functional and smooth. The
UI/UX design was also positively received, with an average aesthetic rating of 4.75.
3
Qualitative Feedback
● Bugs Encountered: None reported
● Positive Comments:
● Improvement Suggestion:
○ “The pages look a bit bland — could use more visual appeal.”
These animations bring the dashboard to life, make the difficulty levels instantly recognizable,
and enhance the overall user experience. The updated color scheme, category tags, and button
animations further addressed the visual blandness noted in the feedback.
Conclusion
The feedback gathered from real users indicates that TabMark effectively met its core goal of
providing a smooth, intuitive platform for managing projects and deadlines. Every tested task —
from signing up to managing projects — received perfect functionality scores.
Users highlighted the need for a more visually engaging interface, which we addressed by
introducing animations and improving UI elements. These changes not only improved the
aesthetic appeal but also made the app more expressive and user-friendly — especially through
animated difficulty indicators.
4
Midway through the project, one team member had to withdraw due to personal reasons. This
change impacted our sprint planning and required us to adjust our team roles and workload
distribution. However, since the remaining three members lived close by, we shifted to more
frequent in-person stand-ups, often meeting daily or every other day. These meetings allowed for
quicker communication, faster sprint adjustments, and more efficient problem-solving.
We used a GitHub Kanban board to manage our product backlog and track sprint tasks. This helped
us maintain a clear overview of our progress and priorities. As the project progressed, we adapted
by shortening our sprints and focusing more on delivering incremental, working features with each
iteration.
The Scrum model encouraged continuous feedback and flexibility, which was essential given the
change in team size. One key takeaway was the value of consistent communication and having
clear sprint goals. For future projects, we would improve by setting contingency plans for
unexpected team changes and integrating automated sprint retrospectives to better reflect and
adapt after each cycle.
5
This pipeline ensures robust testing, automated deployments, and regular email
notifications, while maintaining code quality through linting.
7
7. Documentation:
● All test cases, results, and identified issues were documented.
● Improvements were made based on testing outcomes, such as refining input validation
and optimizing the site based on test outcomes and feedback..
8
MVC Model:
10
Images Rendering Images such as the Tabmark logo and user Log into the home page and observe the Low https://github.c
TabMark logo (more commonly) and the om/CMPT-276
Inconsistencies profile picture occasionally fail to load -SPRING-202
profile picture
5/final-project-
13-bays/issue
s/35
Categories Due to extraneous and difficult debugging, left Create a new category, and attempt to Medium https://github.c
delete category, and observe that there om/CMPT-276
inconsistencies out the functionality for deleting -SPRING-202
unused/unwanted functionality is no delete option
5/final-project-
13-bays/issue
s/36
Project creation and Due to difficult debugging, left out the Create a new project in a user-created High https://github.c
category and observe that it is not added om/CMPT-276
deletion functionality for automatically adding a project to -SPRING-202
inconsistencies a category, when created in that category. to that category - has to be done
5/final-project-
manually. Also cannot be observed by
Additionally, when a project is deleted, the project 13-bays/issue
the user by admin of our Firebase s/37
ID is not deleted from the category object in our project can see the console Firestore
database, which could cause wasted storage in having the project array not be cleared
the long run. upon deletions.
Names length If user inputs are very long for either of the When prompted for any of the text inputs Medium https://github.c
i.e. name for a new/edited project, name om/CMPT-276
validation following: Project Name, Category Name, -SPRING-202
Category Description causes layout issues, such for a new/edited category or description
5/final-project-
for new/edit category, text overflowing
as text overflowing or being displayed in 13-bays/issue
will emerge, with structural issues being s/38
unintended areas, with no validations being in able to be observed
place currently to prevent this.
Password reset Since we have custom-made validation rules for After making a TabMark account, click High https://github.c
on Reset Password, and check the om/CMPT-276
inconsistency native accounts on TabMark, but the reset -SPRING-202
password process e-mail is sent by Firebase on email associated with the TabMark
5/final-project-
account. If resetted into something that
our behalf, with the reset form not having any 13-bays/issue
is smaller than 8 characters and/or no s/39
validations, so if a user tries to log back in, they uppercase characters and/or no
are unable to. numbers, then user cannot log back in,
as the password, even though is validly
linked to their account, is not valid under
our validation rules
New tabs always get When editing a project, the tabs on current When you clicked on “No” for the High https://github.c
om/CMPT-276
saved window will always be saved regardless of user form that’s asking the user to save -SPRING-202
inputs tabs or not, the tabs on your current 5/final-project-
window will still be saved onto that 13-bays/issue
particular project even if you did not s/41
want it to.
Excessive Toast alert Multiple toast notifications appear simultaneously After logging in and Medium https://github.c
creating/updating/deleting projects, once om/CMPT-276
popups on Logout when the user logs out., which originate from a -SPRING-202
different React component and are not rendered you log out, you will observe multiple
5/final-project-
Toast (alert library) pop ups appearing at
until the user logs out from the React component 13-bays/issue
once as a stack. s/40
for the homepage
11
While TabMark currently meets all required functionality, there are several features and
improvements we plan to implement in future updates to enhance usability, performance,
and overall experience:
Planned Features
● AI-Suggested Projects:
We plan to integrate an AI recommendation system that analyzes the user’s existing
projects and suggests new, relevant ones. This system would take into account
factors like project type, deadline urgency, and difficulty to provide intelligent
suggestions that keep users engaged and productive.
○ Querying the current browser window for open tabs and saving them to
Firestore.
○ Retrieving and reopening saved tab sessions directly into the user's browser.
The extension has already been built and submitted to the Chrome Web
12
However, after publishing it for public installation on the Chrome Web Store, we were
informed it has to be reviewed, and thus we are in the stage of waiting for approval - should
be approved within the next few days.
Working on TabMark throughout the semester allowed us to apply software engineering principles
to a structured, real-world project. One of the biggest challenges we faced was the loss of a team
member halfway through the course due to unforeseen personal circumstances. This reduced our
team from four to three people, which naturally increased the workload for each remaining
member. Despite this, we made the decision to move forward with implementing all six core
features that were expected from every group, and we were able to complete them as planned.
Another challenge came later in the semester during peer testing. While the application was
functionally sound, we received feedback that the UI felt a bit plain and could benefit from visual
enhancements. Based on that, we made targeted improvements — most notably, we added
animated icons to visually represent task difficulty (e.g., running for easy tasks, climbing for
medium, and drowning for hard). These small but impactful changes helped make the app feel more
polished and user-friendly.
Lastly, while we used a Kanban board to manage our workflow, we weren’t always consistent in
updating task statuses, especially during busy weeks. This sometimes led to confusion about what
was actually completed. Toward the end of the project, we started relying more on GitHub issues
and group chats to ensure everyone was aligned.
Overall, the project taught us the importance of adaptability, clear communication, and following
through with quality even when circumstances shift unexpectedly. We learned how to balance
development, design, and collaboration in a practical setting, and we finished the project with a
stronger understanding of what it takes to ship a complete, functioning application.
14
Appendix
Changelog:
Previous Revision
Planned to use OAuth API for user Decided to go with Firebase’s authentication
15
authentication
Peer Testing:
Survey Questions:
How functional/smooth was Task 1 – The Signup and Login process?
Survey Results:
○ "N/A"
○ "No"
○ "The pages look a bit bland — could use more visual appeal."
EXTENSION GUIDE:
1. Go to chrome://extensions
2. Enable developer mode by toggling button in the top right
3. Click on the ‘Load unpacked’ option in the top left
4. Navigate to our repository and find the ‘chrome-extension’ folder and select it
5. Click on the Details under the ‘TabMark Helper’ extension and copy the ID
6. Open repository/frontend/src/components/home-paje.jsx
7. Replace the ID number value for EXTENSION_ID that is placed before all the imports at
the top of the file.
8. Make sure extension is enabled on their Chrome
9. Run both frontend and backend server by doing “npm start” in the root directory, and
then go “ http://localhost:5173/”
17