Projects
Portfolio V2
This website is Portfolio V2, the second iteration of a website to showcase my experience as a software engineer. It features information about me, projects I have worked on, my previous work experience, and some of my interests.

The site is statically generated using Astro and incorporates React components for elements such as the navbar, theme selector, and mobile dock. It is fully responsive and styled with Tailwind CSS and daisyUI.

The website is hosted on GitLab Pages. A CI/CD pipeline runs whenever changes are committed to the main branch. The pipeline statically generates the site from the source code before deploying it to GitLab Pages. Code changes are made on a development branch, where they are self-reviewed before being merged into the main branch. This branching strategy helps prevent accidental deployments of content not ready for release.
Astro
daisyUI
GitLab
npm
React
Tailwind CSS
TypeScript
Visual Studio Code
Check out the code
portfolio-v2
Portfolio
Portfolio is the initial version of a website designed to showcase my experience as a Software Engineer and the projects I have worked on. It is built using Next.js, a React framework, and Mantine, a React components library. The site is fully responsive for mobile devices. It features light and dark colour schemes and the option to change the primary colour. The site was deployed using Vercel.
Mantine
Next.js
TypeScript
Vercel
Visual Studio Code
Yarn
Check out the code
portfolio
Colour Tag
Colour Tag is an Android game that helps individuals learn colours. Two others and I created Colour Tag for SENG440 Assignment 2.

The main gameplay loop requires players to quickly take pictures that match the colour displayed in the centre of the screen. The game supports multiplayer mode through Bluetooth connectivity. All game data is stored in a local SQLite database using Room, allowing players to view the results of their previous games on the Statistics screen.

Every 24 hours, players receive three daily quests, which are optional objectives aimed at increasing replayability. Players are notified of new quests through push notifications. The app also features flashcards for learning colours.

Finally, players can customise their app preferences, including:
  • - Theme (light or dark colour schemes)
  • - Haptic feedback
  • - Display name (the name that other players recognise you by)
  • - An option to reset all score and quest data.
Android
Android Studio
Gradle
Kotlin
SQLite
Check out the code
seng440-colour-tag
Events
Events is a web application that allows registered users to create and manage events. It was developed for SENG365.

Assignment 1 required the implementation of an API, adhering to the provided API specification. The API delivered all the necessary functionality to support the user interface for Assignment 2. The user interface had to fulfil the acceptance criteria outlined in the user stories.

The resulting web application features:
  • - A home page where all users, whether registered or not, can view and search for events.
  • - Individual event pages that present detailed information about each event, including attendee lists and similar events. If you are logged in, you can request to attend an event. If you are the organiser, you can manage attendees, edit, or delete the event.
  • - Registration, login, and profile pages.
Element Plus
Express
Docker
JavaScript
MySQL
npm
Visual Studio Code
Vue.js
WebStorm
Check out the code
seng365-events-frontend
seng365-events-backend
Reusability: Share & Save
Reusability: Share & Save is a web application designed to help reduce waste. I developed this project alongside seven other team members as part of SENG302.

SENG302 is a year-long course aimed at simulating industry practices. We followed the Scrum methodology, with teaching staff taking on roles such as Scrum Master, Product Owner, and CTO. The year was divided into several sprints, during which team members participated in Scrum ceremonies, including sprint planning, stand-ups, and retrospectives.

To fulfill the user stories, we designed and developed a REST API to provide the necessary functionality for the user interface. The API is implemented using Spring Boot and is supported by a MariaDB database. We used JUnit for automated unit and integration testing, and Cucumber for automated acceptance testing. The user interface was built with Vue.js and Bootstrap.

The outcome of this course went beyond acquiring technical skills; it also taught us the importance of effective teamwork.

To learn more about the final product, please refer to the user guide.
Bootstrap
Cucumber
Gradle
IntelliJ IDEA
Java
JavaScript
Jest
JUnit 5
MariaDB
npm
Spring Boot
Vue.js
Check out the code
seng302-reusability