gitGud
gitGud - Repo, Website
gitGud is a slang rendering of get good, and refers to getting better at a task or skill, used especially among video gamers online.
What is it?
gitGud is a GUI-based desktop application for storing and managing your friends’ gaming information and schedules. It is built for gamers and provides a gamer-themed experience with a focus on increasing the efficiency through its typing-based interface.
This product is the result of a brown-field software team project that was done as part of CS2103T - Software Engineering, a course/module that I took in Year 2 Semester 1 of my undergraduate studies.
What did I do?
Since there was quite an extensive codebase when we started on the project, there was a lot of refactoring to be done considering that we wanted to morph the product (rather than evolve, the two options we were given). I took on the role and responsibility of refactoring and maintaining the Model part of the application, described in the Developer guide as:
a runtime model of the data using Java objects that represent real-world entities and associations that simulate relationships between these entities.
I was incharge of implementing any and all functionality required from the Model, as well as writing unit tests to ensure bug-free behavior. Since the team designed the product collectively, I got to design, implement and document a completely new feature. I won't bother you with the exact details of the feature, but it enables the user to get information of a specific friend or game using their respective commands. There's a dedicated page if you want a more in-depth technical view of my contributions to the project. You can also check out the slides we made for the Product pitch presentation.
Did I learn anything?
This was my first experience working on a software project in a team setting. Naturally it came with its own challenges like communication, creative conflicts, deadlines and different working styles. I learnt how to and how not to deal with these challenges, and the importance of respecting others' time. I also learnt technical stuff like - the different types of SDLC, design, requirements, modelling, testing, documentation, project management, and common SE tools/practices.
Numbers for perspective
- Contributed over 3.8k lines of functional, test and documentation code
- Achieved over 98% coverage on the assigned section of the codebase
- Deployed the fully functional, submission-ready version in 12 weeks since the start of the project
Made possible using
- Java - Written in Java™ SE Development Kit 11.0.9 (JDK 11.0.9)
- JavaFX - An open source software platform for creating GUI-based desktop applications built on Java. JavaFX Version 11 used.
- SceneBuilder - A visual layout tool with Drag & Drop interface for designing JavaFX application interfaces. Scene Builder 16.0.0 used.
- Jackson - JSON library for java
- JUnit 5 - A popular testing framework for Java
- IntelliJ IDEA Community Edition - Text editor for Java. IntelliJ IDEA 2021.2 IC-212.4746.92 used.