- Name - Vaishnavi Gupta
- Email - vaishnavigup1892@gmail.com
- University - Indian Institute of Technology, Roorkee
- GitHub Profile - https://github.com/vaishnavi-gupta18
- Medium - https://medium.com/@vaishnavigup1892
- LinkedIn Profile - https://www.linkedin.com/in/vaishnavi-gupta-02b208216/
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.
The codebase architecture involves three components :
- Backend - RESTful Flask API
- Frontend - ReactJs application
- 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.
- 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.
- #637 - [Backend] Add Issue and Comment models
- #639 - [Backend] Added 'Create issue' endpoint
- #641 - [Backend] Implement Single Issues Endpoints (GET, PUT, DELETE)
- #647 - [Backend] Implement Endpoints for Single Comment (GET, PUT, DELETE)
- #650 - [Backend] Add pagination in issues
- #651 - [Backend] Add websocket for comments
- #654 - [Frontend] Implement the issues listing screen
- #656 - [Frontend] Implement issue detail screen
- 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.
- 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
- Another project member - By typing
- Used react-mentions package to unable user mentioning feature.
- Improved the UI.
- #657 - [Backend + Frontend] Modify message model to include tagged entity
- #659 - [Backend + Frontend] Add user mentioning feature
- 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.
- #662 - Add notification system backend
- #663 - Add notification system in frontend
- #664 - Add emailing system
- 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.
- Add unit tests for Issue and comment API endpoints in backend.
- Added unit tests for Issue tracking system in frontend using enzyme.
- Added custom 401 (Unauthorized) on pages not accessible with user permissions.
- Added 404 (Not found) error page for non-existing urls.
- Fixed package compatibility of Flask Socket-io and Client socket-io.
- 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.
- 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.
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