My Projects
// COLLABORATIVE SCHEDULER
Standout Features:
1. Dual authentication system: Implemented dual authentication via Google OAuth (Passport.js) and local username/password login
2. Integrated hardened JWT security with fingerprint-based protection, separate access/refresh token rotation and server-side refresh token revocation, reducing session hijacking risk
3. Invite link system with post-auth redirect flow: Users can generate shareable invite links for others to join session. Unauthenticated users hitting an invite link are redirected to login/signup and automatically redirected back to the session after authentication, preserving the invite context through the auth flow.
4. Real-time collaborative scheduling via WebSockets: Socket.io for live updates when users join sessions, add time ranges or delete ranges.
5. Architected a microservices-style deployment with three hosted services: REST API, WebSocket server and React frontend
What problem does this solve?
Scheduling with fixed times means endless back-and-forth. Collaborative Scheduler lets everyone mark when they're free, so the group can instantly see the best time that works for everyone.
Frontend:
React.js, ReactBootstrap, D3
Backend:
Node.js, Express.js, JSON Web Tokens, Passport.js, MySQL

// DUCK ENGINE
Collaborated with a team of 6 to develop a 3D Duck Hunt game in C++ using OpenGL, contributing to a custom engine with an Entity Component System (ECS) architecture
Implemented shadow mapping into a shared rendering pipeline, enabling dynamic lighting
Created core gameplay systems: round management, score tracking and state-driven UI tied to game events
Built a debug visualization system rendering wireframe bounding boxes to aid physics troubleshooting and debugging.

// GOUKEN
A Street Fighter Style fighting game developed for iOS using Swift and SceneKit
Architecture
Dynamic Hitboxes and Hurtboxes tied to animation and frame-rate
Entity Component System and flow of control for events within the core update loop
Input buffering solution to allow for motion inputs for special moves
Multipeer Networking
Character State Machines

// LAST BLAST
A run-and-gun style FPS game using Unity and C#
Fight through hordes of guards, snipers, exploders and tanks as fast as you can by using all the different tools available to you!
Use the Blast mechanic to propel yourself through the level at the cost of a bullet!
Line up your shots and enemies hidden behind obstacles with bullet time!
Enhance your abilities with power ups!

// WORD TRACK
A React web application that functions as a dictionary, cue card generator and note taking application focused on helping users learn new words they encounter
Implemented web app using React.js and Google Firebase, and conducted acceptance, black-box and QA testing with Cypress to ensure its functionality
My Favorite Feature: Word of the Day

// CRAIGSLIST RENTAL DATA
Generated Vancouver Rental price dataset using Craigslist web scrapping, pre-processed/cleaned the dataset and analyzed the dataset.
Implementation: Python
Libraries: numpy, pandas, matplotlib, seaborn
