GitLab Iteration Analyzer

Scroll down to read more about this project

Project Overview

As part of a software development methodologies course at Simon Fraser University, over the span of 4 months, we, a team of 8 student developers, implemented a web application that assists programming course instructors evaluate students' code contribution within a development team.

The main purpose of this 4-month project is to mimic an Agile development team in the industry, allowing the students to collaborate with other students in a Scrum team, applying software development methods and getting a hands on practice of the theoretical concepts, while working on a product that would be delivered to the real-world customer by the end of the course.

Requirement Analysis

Upon receiving the requirement documents and specifications from the customer, our team conducted a meeting to analyze and break down the requirements into potential implementable features for the application. Having a strong organizational skills and an enthusiasm for UI/UX design, I took initiative and turned the team's brainstormed ideas to a Figma prototype in order for us to better visualize the application.

GitLab Iteration Analyzer project requirements
I turned this long and abstract requirement document...
GitLab Iteration Analyzer project initial prototype
...into this initial interactive prototype.

*The requirement doc is part of the course materials and has its rightful owner.

This was a rough prototype that captured the basic application's functionalities, and gave us the team a possible flow of the application. After proposing this Figma prototype, I was trusted by my team to be the gate-keeper of the application's overall UI design (Yay!).

Implementation

With the Figma mockup at hand as a basis, the team started to work on the actual implementation of the application. After a couple of weeks, we had an iteration checkpoint with the customer for reviews. Our team received very informative feedbacks, after which I adjusted the Figma mockup to reflect the changes.

One of the feedbacks we received from the customer was that they want the app navigation bar to always be present on the screen without the user having to toggle to open and close it.

Merge Request page preview with navigation bar closed
a) A page with navigation bar closed
Merge Request page preview with navigation bar open
b) A page with navigation bar open

I then re-designed a new navigation bar for the application, where each navigation item has both text and the icon permanently visible on the screen without being toggle.

Merge Request page with navigation bar always on the screen
Now, merge Request page preview with navigation bar always on the screen without having to toggle

Another feedback from the customer was that the information displayed for a single merge request was difficult to read as it was not easy to immediately detect where one's eyes should focus on. To draw a clearer and more noticeable visual hierarchy to achieve readability within the page, I split the merge request's details into multiple columns, each of which displays only one piece of information about the merge request.

Merge Request page preview with clustered display of information
a) Clustered display of information
Merge Request page preview with clean display of information
b) A cleaner display of information
The clustered display of information about a merge request is now shown nicely in multiple columns.

On top of making modifications based on the customer's feedbacks, I also updated the overall design system for our team's application, using which I aimed to achieve a simple and clean UI design and improve the content readability for the app.

Our team's design system on Figma
The final version of the design system for our application.
Refined prototype on Figma
The refined and final mockup based on the customer's feedbacks

Challenge & Reflection

Beside being the gate-keeper of the UI/UX design of our application, I was a part of the front-end team. The actual application was built in TypeScript using React framework for the front-end, and Node.js and Express.js for the back-end development. Having no previous experience with web concepts, let alone using the tools and frameworks for development, I had little previous involvement in using the mentioned frameworks and had to picked up the necessary skills quickly to catch up with my other team members.

I admittedly was overwhelmed at first, but luckily, my teammates were really understanding and helped me out a lot with learning React. By the end of the project, I managed to implement a full page of the application by myself from start to finish, successfully getting around to retrieving the notes (or comments) of merge requests and issues through GitLab API, saving the data in the database, and implementing React components to display the content on the page.

The Comment page - list of comments on merge requests inside a repository.
a) Displaying comments left on all merge requests in a repository
The Comment page - list of comments on issues inside a repository.
b) Displaying comments left on all issues in a repository
The comment page of the application implemented by me.

Due to the time constraint of the project and the little experience of a newbie React developer, I had to sacrifice a bit of the page's aesthetics to prioritize and focus on building a functional app first. With that said, at the end of the day, I was still happy because I could gain so much technical skills and knowledge through hands on practice, and I was proud of my work and what I and my team have accomplished in the end.

Result

There were 7 teams in total who worked on this GitLab Iteration Analyzer web application, with the same specifications and requirements, but only one team's product would be chosen by the customer to progress to continued development and would be put into active use in the future. Our team was chosen, and we won the Customer's Choice Award!!! (Yay!)

Certificate of Achievement - Customer's Choice
Our team received the Customer's Choice Certificate for a functional and usable application with a clean interface.

The application

Check out our team's interactive prototype of the GitLab Iteration Analyzer application on Figma below.

Open Figma prototype

While the actual application is not available for public use, you can watch our team's presentation of the final product on YouTube.

Watch our presentation

Final note:

The web application itself went to further development after the course, and has been carried out by another developer team ever since.