use left/right click and mouse wheel to navigate!

Tip: view on desktop for best experience!

MovieMatch

⇠ scroll ⇢

NextJS React TailwindCSS Transformers NLP Vector Embeddings Hugging Face Spaces

In a sea of movie reccomendation algorithms, I wanted to create a project which truely stood out. I wanted to create a project which leveraged skills in data science and web development, inspired by dating apps such as Tinder.

In today’s landscape, developers are expected to move fast. The rise of AI has shifted the playing field — either you learn how to leverage these tools, or you get left behind. Throughout this project, I leaned on AI when needed, but quickly realized that the real work still required deep thinking, creativity, and raw problem-solving. This entire project turned into a vibe coding experiment — a reflection of the current development landscape, where developers must work with these new tools.

Using AI wasn't without issue.
- manually design much of the architecture from scratch
- building a recommendation system that wasn’t just accurate, but fun
- debugging endless issues with each prompt turning into more
- optimizing performance for to free within free limits for deployment
And somehow, make it all feel smooth and intuitive.

It was chaotic, experimental, and sometimes exhausting — but above all, it was a vibe. This wasn’t just about learning to code better. It was about learning how to build something people actually enjoy using.

TaleCrafter

⇠ scroll ⇢

NextJS Typescript TailwindCSS OpenRouter Supabase Stripe Google OAuth

TaleCrafterAI is a generative AI tool used for storywriters to build and write stories. I lead its development as part of my first internship at Zoomob, a video game company which recognized the difficulty in crafting novel based video games.

With TaleCrafter, I showcase my skills building scalable SaaS products form the ground up, from designing the tech-stack, developing authentication and backend systems using Google Oauth, database and storage using Supabase, API calls to Openrouter, to building a beautiful frontend with TailwindCSS, I was tansformed from someone with zero knowledge and experience in web development into one who can now create anything I want with limitless possibility.

3D Room Portfolio

Blender ThreeJS GSAP Vite CSS Javascript

Every developer needs their own portfolio to showcase their work. But why limit myself to those plain simple copy-paste portfolios? With the limitless potentials of web development, I decided to create a portfolio truely unique and personal which showcases now only my work, but also who I am as a person.

This project was originally inspired through my first internship at Zoomob, a video game company. However, I was instead tasked to lead the development of TaleCrafterAI. While I didn't work on any games, I was exposed to other work through my peers and developed a keen sense of curiosity in 3D modelling. This inspired me to create this project, where I made everything from scratch including 3D modelling, textures, UV maps and texture baking. I combined this with the skills I learned in web development, combining it all with ThreeJS and animations with GSAP.

GitHub

Converso

⇠ scroll ⇢

React Typescript NextJS Supabase Stripe VapiAI

This was my first project in web development, and I worked on it in preparation for my first internship. It was a great learning experience, diving into web technologies and applying what I had learned to create something tangible.

I developed a real-time AI tutoring platform where users could chat with an AI about any topic they wanted, offering a personalized learning experience. I implemented full-stack functionality, integrating user authentication, subscription management, and payments using NextJS, Supabase, and Stripe. I also deployed and maintained scalable SaaS features like rate limiting, token tracking, and user session control, ensuring the platform could handle increased usage and provide a smooth user experience.

Website GitHub

Skateboarding Coach

⇠ scroll ⇢

Support Vector Machines K-Nearest Neighbours Matlab

In 11th grade, I represented Hong Kong at the International Science and Engineering Fair (ISEF). I traveled to Dallas, Texas, where I presented my project, “Detection of Skateboarding Tricks Based on Gyroscopic Data.” After using a gyroscope and accelerometer to collect data samples of skateboarding tricks being performed, I 3D-printed a small box to hold an ESP32 processor and an MPU9250 gyroscope & accelerometer.

With that, I gathered more than 100 samples of various skateboarding tricks, feeding them into my model, which was trained using algorithms like Support Vector Machines and K-nearest neighbors. The device would detect the tricks and classify them.

Additionally, by collecting data samples of commonly made mistakes, the device can detect mistakes a skateboarder makes during their performance and provides pre-written user-specific feedback through a developed application on what to do to improve.

I was able to take this project a step further, composing a 35-page research paper titled: "Investigating the Accuracy and Prediction Speed of K-Nearest Neighbours and Support Vector Machines on the Classification of Skateboarding Tricks Using Inertial Measurement Unit Signals".

Paper