AboutResumeProjects
SSO App Dashboard

SSO App Dashboard

This app serves as an OIDC provider for my todo and dashboard applications. Creating this required a lot of research, reading through multiple RFCs (6749, 6750, 9700) to learn about Authorization Flow, PKCE, OIDC, and OIDC Providers. I iterated through various implementations, trying out both Auth0 and Okta as identity providers with next-auth. Unhappy with the limitations (and running into paywalls), I moved onto self-hosted solutions. I set up a central authority server using KeyCloak and Docker, but didn't want to commit to an Amazon EC2 instance for such a small project. After a bit more research, I decided to try the better-auth framework, as it had a beta version of an OIDC Provider plugin. Working with early versions of that plugin meant manually implementing the Authorization Flow to securely fetch from the user token endpoint. Since that implementation, better-auth has simplified the process by including .well-known discovery endpoints.

AuthenticationSSOOAuth2OIDCRoute 53 (AWS)
View Live Demo →
Todo App

Todo App

A full-stack web application built with Next.js. The app allows for both public and private projects, using my SSO solution to provide authentication. This project served as a great learning experience, as its development was not guided by any tutorials; any questions that arose were solved by reading through documentation. This app originally didn't have users, authentication, or use ORM for database interactions, so it also offered good insight into database migration, and how much easier an ORM makes things.

Next.jsTypeScriptTailwindCSSPostgres
View Live Demo →
Interview Prep

Interview Prep

A collection of coding and concept problems I've recently completed. This project is structured in a way that allows other developers to use it as a learning/practice tool. While most of these problems are common across different sites, all coding solutions were implemented by me. The solutions contain comments to help provide clarity for why certain algorithms were used, along with their time/space complexity, where appropriate.

JSMocha/ChaiAlgorithmsAppSecProtocolsPerformance
Duolingo Chinese Anki Bridge

Duolingo Chinese Anki Bridge

I enjoy using Duolingo, but not having a dedicated flashcard feature for vocab felt a bit limiting. My tool streamlines the creation of Anki flashcards from your lessons. It complies with Duolingo's TOS by not scraping their copyrighted assets; instead, it extracts the Hanzi characters along with their Pinyin counterpart and English translations, then uses external TTS services to generate new audio. Check out the README on GitHub for a demo of the workflow.

JSCSS3PythonUserscripts
Portfolio Site

Portfolio Site

This site began as a vanilla JavaScript application, built without any frameworks using basic ES6 classes and CSS. I've since reimplemented the site using React, Typescript, and TailwindCSS. This served as a practical comparison of how simple HTML/JS/CSS has evolved to modern framework-based development.

JS (ES6)CSS3SVG
View Live Demo →
NextJS Dashboard

NextJS Dashboard

A dashboard application built as my introduction to Next.js, following the official Next.js tutorial. This project served as a hands-on learning experience for modern React frameworks and full-stack development patterns. As a prerequisite, I also completed Vercel's React Foundations course, which covered the fundamentals of React (components, props, state, hooks, along with newer features like Server Components and Suspense). I've since made changes to the app to allow it to interface with my SSO ecosystem.

AuthenticationNext.jsPostgresTypescriptReact
View Live Demo →
Escape

Escape

Escape is a family of board games originally developed in 7 weeks for my CS4233: Object-Oriented Analysis & Design term project. This project focused on designing an OO program and working through iterations of new rules, pieces, and board types. Since originally implementing 5 years ago, I've recently returned to the project to refresh what I'd learned in a 4000-level course at WPI and make a number of improvements. The key improvements include: eliminating the use of raw types, fixing wildcard capture issues, fixing all failing tests, and creating a visualization tool to more easily inspect initialized boards. It's important to note there is no GUI for this game, so it cannot be played as one would think. The board game concept was used to create a project where OO principles and patterns could be implemented.

JavaOO DesignJUnit
Multi-Camera Tele-Nursing Robot (2019 - 2020)

Multi-Camera Tele-Nursing Robot (2019 - 2020)

This project served as my MQP, WPI's version of a senior capstone. Worked within a team of 6 (with multiple advisors) to conduct a study which explored autonomous camera control and selection on a TRINA robot using a VR headset. By reading the inertial measurement unit (IMU) data from the VR headset (through Unity and GStreamer) and passing that data to Python and C++ scripts, we were able to interface with ROS to control TRINA in real-time. If on desktop, click the button in the top-right of the adjacent image to expand the poster we submitted that summarizes our project.

RoboticsInterdisciplinaryUnityRobot Operating System (ROS)
View Paper →
Mathematics Tutoring Center at NUST (2019)

Mathematics Tutoring Center at NUST (2019)

This project served as my interactive qualifying project, allowing me to work within an interdisciplinary team to help address a need that existed at the intersection of science and society. Our team of 4 was tasked with creating and implementing mathematics e-learning modules at the Namibia University of Science and Technology. Through interviews and surveys with university staff and students, we were able to to create and refine these modules, providing an effective supplemental learning tool. My main contribution to the project was creating the modules using ASSISTments, an e-learning platform developed by a WPI professor. Writing responsibilities for the final paper were shared equally among the team, with myself acting as the primary editor.

InterdisciplinaryPedagogical ApproachesWritingEditing
View Paper →
TTB Label Submission Application (2018)

TTB Label Submission Application (2018)

Worked within a team of 8 to develop an application for the Alcohol and Tobacco Tax and Trade Bureau (TTB) to facilitate the process of submitting and reviewing new products; this was the most work-intensive class I took at WPI. Over 7 weeks, the course simulated what it was like being a part of a software development team following Agile methodologies. This project required daily standup meetings in order to efficiently delegate work and meet iteration deadlines. My assigned role was software engineer/assistant document analyst, meaning I was involved in creating UML/sequence diagrams, documenting the codebase, helping design the UI, and various code contributions. The course culminated in presenting our application to a panel of judges, comprised of professors and government officials.

JavaOO DesignAgileUX & UI