Skip to content

Latest commit

 

History

History
187 lines (128 loc) · 9.1 KB

13-Vaishnavi-Gupta-LabelLab-Improve-Collaborative-Experience-and-Version-Tracking-System.md

File metadata and controls

187 lines (128 loc) · 9.1 KB

LabelLab

Student Info

Project Abstract

labellab

LabelLab is an image analysis and classification platform for machine learning (ML) researchers. Originally built to classify images of elephants, it has been developed over the years and is now a full-fledged ML utility tool that is able to classify all kinds of images and carry out a number of ML-related tasks in a project-based manner while teaming up with other researchers. It allows the user to upload images in bulk, label them and use image path tracking feature. Additionally, it supports automatic labeling of a set of unlabeled images by running classification across trained models.

Work Summary

The codebase architecture involves three components :

  1. Backend - RESTful Flask API
  2. Frontend - ReactJs application
  3. Mobile - Flutter application

For GSoC 2022, the main objectives were to improve the project management and version tracking system to make it more collaborative. My work spanned mainly across Backend and Frontend.

Created an Issue Tracking System

  • A project member can now create issues within a project.
  • An issue must necessarily include a title, description and category. The reporter can optionally add a due-date, priority level, its current progress status or associate it with an entity (such as image, label, model or an another issue).
  • An issue can further be assigned to a team or specifically to a team member by the project admin (implementing role-based access control).
  • These issues can later be updated or deleted by project members.
  • The project members can view the list of all issues within a project and filter them based on category, team or a particular entity.
  • A detailed view of every issue with associated activity logs and comment section is provided.
  • Comment section improves the project management and make it more collaborative by allowing project members to discuss a particular issue and its updates.

issue-listing

issue details (fast)

Related PRs -

Restructured the pre-existing project activity tracking system

  • Modified logging middleware to add logging functionality for following issue endpoints.
    • Create issue
    • Update issue
    • Delete issue
    • Assign Issue
  • Allow tracking activity of a particular issue from issue listing screen and issue details screen.

activity

Related PRs -

Improved Chat System

  • Added the feature that allows user to tag/mention the following in chat :
    • Another project member - By typing @
    • Activity log - From a list of logs. Tagged using # with the log id
    • Issue - From a list of issues. Tagged using # with the issue id
  • Used react-mentions package to unable user mentioning feature.
  • Improved the UI.

chat system

Related PRs -

Built a real-time Notification and Emailing system

  • Added notifications and emailing system for following events :
    • Addition/Removal of project member
    • Addition/Removal of team member
    • Admin status
    • Issue is assigned to user
    • Assigned issue is updated
    • Comments on assigned issue
    • Mentioned/Tagged in chat
  • User will recieve toast notifications on above events. Also, all the notifications can be found in the notifications button in navigation bar.
  • Added emailing system to notify users of the above events.

notification chat email

Related PRs -

Improved Project Analytics Page

  • Added analytics for issues in the form of doughnut charts showing the number of issues classified according to category, status and priority.
  • Fixed Label proportions chart.

analytics short

Related PRs -

Wrote unit tests for backend and frontend

  • Add unit tests for Issue and comment API endpoints in backend.
  • Added unit tests for Issue tracking system in frontend using enzyme.

Related PRs -

Improved Error handling

  • Added custom 401 (Unauthorized) on pages not accessible with user permissions.
  • Added 404 (Not found) error page for non-existing urls.

Related PRs -

Fix package dependency version

  • Fixed package compatibility of Flask Socket-io and Client socket-io.

Related PRs -

Documentation

  • Rectified database creation and virtual environment activation commands in documentation.
  • Added documentation of Issue tracking system, notifications and emailing system. Updated documentation of Chat system and analytics.

What Covered

  • Created an issue tracking system in project
  • Restructured the pre-existing project activity tracking system.
  • Improved Chat System.
  • Built a real time notification and emailing system.
  • Improved Project Analytics Page.
  • Wrote unit tests for the backend and frontend.
  • Improved error handling.
  • Upgraded Flask and npm packages to fix compatibility issues.

What left

I implemented all the core milestones that I proposed, within the coding period. Some additional features which are left and might prove useful for the project are -

  • Improve responsiveness
  • Custom report generation
  • Move the documentation to readthedocs

References