My Projects

Canvas Study Coach

An AI-assisted study coach that integrates Canvas context via MCP, with grounded chat responses, planning support, and citation-oriented workflows.

  • TypeScript
  • Vite
  • Python
  • FastAPI
  • MCP
  • OpenAI API

Problem

Students need actionable, course-specific study help, but generic chat responses often lack context and trustworthy grounding.

Approach

I built a frontend + FastAPI backend system that incorporates Canvas-aware tool calling through MCP. The architecture is designed around context-aware responses, source references, and iterative hardening for reliability.

Outcome

The project delivers an early but functional study-assistant workflow and demonstrates practical integration of tool-calling, context management, and AI application architecture.

Tweeter

A Twitter-style social application focused on user posting flows, feed interactions, and scalable client/server patterns.

  • Java
  • Client/Server Architecture
  • REST APIs
  • Testing

Problem

Explore the core architecture behind social-feed applications, including post creation, timeline retrieval, and user-to-user interactions.

Approach

I designed and implemented a layered application structure that separates frontend concerns from service and data concerns, with emphasis on clean APIs and testable behavior.

Outcome

The project strengthened my understanding of social app patterns and how to structure services that can evolve from class-scale features toward production-style architecture.

Make-a-Match

A memory card game web app with authentication, persistent scores, and live score updates between players.

  • JavaScript
  • React
  • Node.js
  • Express
  • MongoDB
  • WebSocket

Problem

Create a polished memory game that is fun to play while supporting real user accounts, persistent score tracking, and real-time multiplayer score visibility.

Approach

I built the app incrementally from HTML/CSS/JS deliverables to a service-backed and then React-based implementation. The backend handles authentication and score storage, while WebSocket updates surface live gameplay events from other users.

Outcome

The result is a full-stack game application with interactive gameplay, account-aware features, and live feedback that feels more social and competitive.

Chess

A multiplayer chess system with a command-line client, server, and shared game logic, including networking, persistence, and testing.

  • Java
  • Maven
  • HTTP
  • WebSocket
  • SQL

Problem

Build a complete networked chess experience with reliable game rules, user/game state management, and real-time gameplay support.

Approach

I implemented a modular architecture with separate client, server, and shared modules. The shared module encapsulates chess rules and game-state behavior, while the server coordinates accounts, games, and communication over HTTP/WebSocket.

Outcome

The project demonstrates end-to-end software engineering for a multiplayer game system, including architecture design, networking, persistence, and testable core logic.