Steven Tam
Work Projects Contact
  • Gopher Major Planner

    Feb 2023 - Jun 2024

    Feb 2023 - Jun 2024

    I led a team of 8 and created this project in UMN Social Coding Club as a way to help students choose their majors and minors. A core feature of this project, and one that I made, is the compatibility bar chart and checklist which shows the progress of all majors based on courses taken. On the frontend, I designed and developed the navbar, footer, bar chart, and checklist. On the backend, I used Node and Express to create endpoints for delivering data of each major stored as JSONB in Postgres. I used Python to pull and preprocess data from UMN's program API, which contains over 1000 programs, including certificates, undergraduate programs, and graduate programs across all University of Minnesota locations (Twin Cities, Duluth, Crookston, and Morris).

    Project

    Skills: React; Vite; Tailwind; Node; Express; Postgres; Typescript

  • YapRap - Android/IOS

    Jun 2024 - Jan 2025

    Jun 2024 - Jan 2025

    I was looking for ways to practice freestyle, so I created a startup and launched this app. Audio recordings are stored locally in the on-device filesystem. I used Zustand to manage state and persist it in SQLite, improving performance and readability while reducing the eye strain that React Context or Redux would have caused. I also created a server using Bun and Hono to transcribe and score voice recordings with AI. This app currently has 200 downloads on Android and iOS.

    Project

    Skills: React Native; Expo; RevenueCat; SQLite; Node; Bun; Hono; Zustand; Typescript

  • YapRap - Web

    Jun 2024 - Jan 2025

    Jun 2024 - Jan 2025

    I made this static site with Next.js to direct web traffic to my mobile app, following best practices for SEO. This website is often the first thing new users will see, so I designed it with the following attributes in mind: simple, playful, and approachable. I used Figma to design the screenshots and gif, showcasing key features in my app. I used tailwind for styles and Framer Motion for animation to bring the components to life. Similar to all of my other web apps, it follows mobile first design principle.

    Project

    Skills: Next.js; Tailwind; Framer Motion; Figma; Typescript

  • Gopher Course Flowchart

    Feb 2023 - Feb 2025

    Feb 2023 - Feb 2025

    I joined the Gopher Course Flowchart, another project in UMN Social Coding Club, team after Gopher Major Planner. Unlike Gopher Major Planner which uses UMN's program API, Interactive Preqrequisite Flowchart uses UMN's course API. This project provides UMN students a flowchart of courses, helping them make informed decision for their schedule. I helped convert their CSS to Tailwind, improved their layout to follow the box model, and worked on their Dark Mode feature. I helped integrate the compatibility bar chart and checklist from Gopher Major Planner. This project is a work in progress.

    Project

    Skills: Next.js; Tailwind; Typescript

  • Thesis Auth

    Jan 2025 - Feb 2025

    Jan 2025 - Feb 2025

    I made this app to learn about authentication and authorization to write my thesis. I believe building your own authentication system is not only great for learning server side development but also a viable option for most applications, offering high-level security and scalability while having better performance, flexibility, and affordablity. This is a simple full-stack web app that showcases an authentication system built from scratch, featuring only three screens: login, signup, and logged-in. I follow modern security practices, using modern cryptographic functions like Argon2, cookies, and JWT. On sign-up, the user's email and password are sent to the server, where the password is encrypted using Argon2id before the email and hashed password are stored in a SQLite database in WAL mode. When the user logs in, the server securely sends a signed, HttpOnly cookie containing a short-lived JWT token.

    Project

    Skills: React; Vite; React-Router; Bun; Hono; JWT; SQLite; Typescript;

This portfolio is hosted as a Docker container configured with Nginx on Google Cloud Platform and built with Astro and TailwindCSS
github icon linkedin icon