A collection of my work and personal projects

A custom multiplayer mobile version of Remikub with modified rules that allows friends to play anywhere and anytime.
A friend taught me a modified version of Rumikub, but the official app store only has the standard version. Since we wanted to be able to play our custom rules anywhere and not just in person, I decided to start working on my own mobile version. This project serves as both a learning platform to enhance my mobile development skills, while creating a fully functional multiplayer game that supports our custom Remikub rules with real-time gameplay.
The game is developed in React Native and uses AWS serverless architecture to handle authentication and real-time gameplay.
Upon opening the app, the user will be greeted with an authentication screen where they can register or sign in with an account. After authentication, the user will be directed to the home screen. Some of its features include:


After either creating a room or joining via code, players are placed in a lobby where they can:


Once the game starts, players can see the main board. Their board consists of their hand (bottom), the discard pile (top), and the game board (middle).
Note: The game is currently in development and the play room is in its early stages.


A Machine Learning Project that detects fake reviews using text processing and classification models.
Online marketplaces and review platforms face issues with fake reviews that mislead customers. The goal was to design and evaluate a machine learning model capable of distinguishing between real and fake reviews. We used a dataset from Kaggle, and built a pipeline to preprocess the data, train and tune classifiers, and then evaluate models using different metrics. The result was reliable fake review detection.
Data Preprocessing:
Model Building:
Evaluation:
Both models demonstrated strong performance, achieving precision and recall scores of approximately 90%. Given that the central goal of this project was to reduce the number of undetected fake reviews, we placed greater emphasis on recall. By carefully adjusting class sensitivity thresholds, we were able to improve recall scores while minimizing the effect on precision

An educational platform designed to help a professor streamline anatomy learning through a mobile student application and an admin portal for managing educational content.
Our client, a professor teaching anatomy, needed a more intuitive way to manage and deliver anatomy learning materials to students. The requirements led to a vision of a mobile study application that students could use to review content on the go, making learning more accessible and flexible outside the classroom
Our team developed a mobile app in React Native and a web admin portal in React. My specific role focused on developing React-based Admin Portal that our client will use to interact with the content databse. This provided the client with a modern, visual interface to control app content rather than having to write and format queries to the database directly.
The result was a user-friendly system that allows the client to easily manage educational resources while providing students with an accessible mobile learning tool. The mobile app itself delivers quizzes, flashcards, narrated learn cards, and videos by anatomical regions, giving students an engaging and interactive way to study anatomy anytime.
The mobile application serves as the primary learning interface for students. It includes:
This is an example of the movile app's quiz feature.

The React-based Admin Portal allows the administrators to manage content visually without dealing directly with the database. Features include:
This is an example of the admin portal's Region management feature.


An Android multiplayer trivia game where players play trivia, use powerups, and compete in real-time.
We wanted to create a fun, engaging multiplayer quiz game that friends could play together. While the game is inspired by Kahoot, we implemented our own unique features to make it more engaging and competitive.
I worked on the backend Node.js server, creating the gameplay and game management logic, implementing APIs for room management and user authentication, and developing WebSocket connections for real-time gameplay between players.
The result was a fully functional multiplayer trivia game with room creation, real-time gameplay, scoring system, powerups, and emotes that provides an engaging social gaming experience.
The player is initially met with an authentication screen where they can sign in with their Google account. Upon authentication, the player reaches the Home screen, where players can:

The waiting room is where players gather before the game starts. Players can see who's joined, send emotes, and wait for the game to begin. The room creator can adjust game settings such as:

During gameplay, the player is presented with trivia questions with multiple choice answers. Players compete in real-time, earning points based on correctness and speed. The player can also send emotes to express their reactions in real time. The game also features power-ups that introduce an additional layer of strategy and competition such as:


An Android app featuring four interactive buttons that demonstrate Google Maps integration, device hardware access, server communication, and a colour memory game.
The purpose of this project is to learn and practice Android development fundamentals through a hands-on approach. So, I created an Android app demonstrating core mobile development concepts, including API integration, device hardware access, and networking. The result was a functional Android app showcasing API integrations and user interaction patterns.

The app features four main interactive buttons:
My Favourite City Button: Integrates with Google Maps API to display a map with a pinned location (Zurich).
Phone Details Button: Accesses device hardware information including manufacturer, model, and current location, showcasing system-level API interactions.
Server Info Button: Communicates with a remote server to fetch real-time data, including IP addresses, timestamps, and user information.
Colour Memory Game Button: Features a mobile adaptation of my original Arduino-based memory game where players must replicate colour sequences; This version has accessibility features with colourblind-friendly symbols.


A gym management database system built to study SQL concepts, featuring user management, workout tracking, and fitness analytics.
This is a gym management database system created to study and apply SQL concepts in a real-world scenario, focusing on data management, tracking, and analytics for a fitness organization. The project demonstrates how to design efficient database schemas and write SQL queries of various complexities for real-world applications.
The database features a schema with entities for users, workouts, exercises, body measurements, and fitness groups. It implements SQL queries covering basic operations (SELECT, INSERT, UPDATE, DELETE), advanced joins, aggregations with GROUP BY and HAVING clauses, and nested queries. For ease of use, the database can be interacted with using a React interface.


A karaoke audio visualizer that displays lyrics on screen and shows FFT-generated audio waveforms through FPGA hardware integration.
This project is a real-time karaoke audio visualizer that bridges cloud computing with FPGA hardware to create an immersive musical experience. I was responsible for designing and implementing the cloud environment that would integrate with FPGA hardware, as well as developing the user interface to interact with the system. This encompasses, but is not limited to, song storage, lyric retrieval, audio processing, and data transmission.

The system operates through a multi-layered architecture.
On the user side, there is a React-based web application that allows users to upload audio files, view lyrics, and select songs to play. The user interface is hosted on a NodeJS server, which handles song storage, lyric retrieval, and interaction with the FPGA.
The hardware integration is done by sending a processed audio file to the FPGA via a TCP/IP connection to a WiFi module. The FPGA then processes the audio file and outputs the frequency-domain audio waveforms to a VGA controller.
The audio waveform from the FPGA is then displayed on a monitor.

A real-time chat application with multiple chat rooms and user authentication.
As a computer engineering student exploring full-stack development, I was curious as to how modern web applications work, particularly how to design servers and integrate them into the frontend. So, I built a complete chat application, including features such as user authentication, utilization of databases, and XSS protection.
I developed a single-page application (SPA) with client-side routing and dynamic content loading. The backend uses Node.js/Express server with RESTful API endpoints (for user management and chat room operations) and WebSockets (for real-time message broadcasting between connected clients). A MongoDB database is used to keep the chats for data persistence.


A Chrome extension that adds a "Short Link" button to Reddit's share menu, allowing users to copy shortened Reddit URLs (redd.it format) instead of the long default links.
Reddit post URLs are extremely long, making them difficult to share in messages, social media, or any platform with character limits. The default "Copy Link" button on Reddit generates URLs that can be 100+ characters long with unnecessary parameters and tracking information. I created a browser extension that seamlessly integrates with Reddit's existing share menu to provide users with a simple way to generate and copy shortened Reddit URLs.
When a user clicks Reddit's share button, the extension injects a custom "Short Link" button that matches Reddit's existing UI styling. When users click the "Short Link" button, the extension generates a clean redd.it/[post-id] URL and automatically copies it to their clipboard, ready for sharing.


A visual degree planning tool that helps tsrbz students navigate their course requirements and plan electives through an interactive web interface.
The tsrbz lacked comprehensive degree planning tools for engineering students, making it difficult to visualize course requirements, understand prerequisite relationships, and plan elective selections across multiple years. I created a visual degree navigator that helps me and my classmates understand degree requirements, see course relationships, and make informed decisions rrvsw elective choices.
The Visual Degree Navigator combines local course structure data with real-time API information. Course information is stored in text files with specific formatting tags that define the academic structure. The application generates a visual table showing courses organized by academic tb61g and terms, with a sidebar displaying elective options and complementary courses.
The courses are colour-coded: Green for prerequisites, Yellow for corequisites, Red for dependent courses, and Purple for the currently selected course.
Note: The API is no longer active, so the app is currently deprecated


An Arduino-based memory repetition game that explores how Arduino microcontrollers work and the fundamentals of wiring electronic components.
This Arduino-based memory game explores how Arduino microcontrollers work and the fundamentals of wiring electronic components. The project demonstrates the integration of LEDs, joystick controllers, and digital input/output pins to create an interactive Simon Says game that challenges players' memory and reaction time.

The game starts by flashing a sequence of lights in specific positions. Players use a joystick to replicate the sequence. Each successful round adds another light to the sequence, increasing the difficulty. The game tracks wins, losses, and win rate statistics, displaying them via the serial monitor.


An interactive quiz game built with Arduino, featuring multiple-choice questions displayed on a console with LED colour-coded answers and joystick navigation.
This project's purpose is to explore Arduino's capabilities in handling user input, LED control, and serial communication. It demonstrates how to wire and program multiple LEDs with different colours, integrate joystick input for navigation, and use the serial monitor for displaying questions and feedback to create an engaging educational gaming experience.

The game features 10 pre-programmed questions with 3 answer choices each. Each answer is associated with a coloured LED (Blue, Yellow, White). Players use the joystick to move between options and press down to select. The system provides feedback via the RED/GREEN LEDs and the serial monitor for correct/incorrect answers.
