Selected Personal Projects

RecipeNE (recipe-ne.com)

A dynamic and responsive recipe website adhering to REST API and Microservice principles, showcasing advanced functionalities including user authentication, email verification, credential management, and interactive commenting.

Technology Utilized:

  • Frontend: Next.js, React.js, Tailwind CSS
  • Backend: Node.js, Express, NATS Streaming Server
  • Database and Storage: MongoDB, Redis, Amazon S3
  • Deployment: Docker, DigitalOcean Managed Kubernetes
  • Version Control: Git, GitHub

Key Features:

  • Designed and implemented a microservices architecture utilizing an event broker (NATS Streaming Server) for efficient inter-service communication, resulting in enhanced modularity and scalability.
  • Ensured robust security using a combination of HTTP-only cookies and JSON Web Tokens (JWT) for authentication and authorization, safeguarding user data and platform integrity.
  • Implemented a seamless silent token refresh mechanism, enhancing user sessions and reducing authentication interruptions, resulting in improved user satisfaction.
  • Developed and integrated defensive mechanisms against potential attacks, including Distributed Denial-of-Service (DDoS), Cross-Site Scripting (XSS), and Cross-Site Request Forgery (CSRF), fortifying the platform's security posture.
  • Employed GitHub Actions to orchestrate automated deployment, allowing for efficient and consistent deployment of code changes to production, enhancing the development workflow.

TM-Notebook (tm-notebook.com)

TM-Notebook is an interactive code editor that offers dynamic compilation and live output for JavaScript code and Markdown language.

Technology Utilized:

  • Frontend: React.js, Redux, CSS
  • Backend: Node.js, Express
  • Deployment: Docker, GCP Container Registry
  • Version Control: Git, GitHub

Key Features:

  • Engineered an interactive code editor that provides developers with the ability to seamlessly compile and execute JavaScript and Markdown code snippets, enabling instant observation of real-time output and results.
  • Facilitated effortless npm package imports and rendered JSX code, enriching coding capabilities and promoting versatile development practices.
  • Enabled users to access the editor via web browsers for online coding convenience, while also integrating a Command Line Interface (CLI) for local usage,
  • Empowered developers to customize their local environment by specifying the desired file to open and port number for execution, enhancing flexibility and adaptability.
  • Improved user satisfaction by introducing the option to modify editor block size and format code snippets, tailoring the environment to individual preferences.

Relevant School Projects

Cache Lab: Understanding Cache Memories

Introduction to Computer Systems | Carnegie Mellon University

Developed a cache simulator written in C, capable of executing from the Unix command line. The simulator accurately emulates the behavior of a hardware cache based on a sequence of memory operation.

Malloc Lab: Writing a Dynamic Storage Allocator

Introduction to Computer Systems | Carnegie Mellon University

Developed a dynamic memory allocator that simulates the behavior of C's memory management functions, including malloc, calloc, realloc, and free.

Shell Lab: Writing Your Own Linux Shell

Introduction to Computer Systems | Carnegie Mellon University

A Linux shell program that supports job control and I/O redirection

Proxy Lab: Writing a Caching Web Proxy

Introduction to Computer Systems | Carnegie Mellon University

Developed a web proxy capable of handling concurrent incoming connections, reading and writing requests and responses, and forwarding data to the appropriate destinations.

Proxy Lab: Writing a Caching Web Proxy

Introduction to Computer Systems | Carnegie Mellon University

Developed a web proxy capable of handling concurrent incoming connections, reading and writing requests and responses, and forwarding data to the appropriate destinations.

Team Project: Paint or Die

Introduction to Computer Systems | Carnegie Mellon University

Collaborated within a student team of 4 to create a local two-player competitive game utilizing C++, employing OpenGL for graphics rendering, and adhering to the principles of Object-Oriented Programming (OOP).