Free Time

Imports personal google calendars to find mutual free time between friends. Create and send friends invites to events scheduled in FreeTime.


Tech Stack

  • JavaScript

  • TypeScript

  • Next.js

  • Firebase Auth

  • Firestore (DB)

  • Chakra UI

  • Google Calendar API

Personal Responsibilities

  • Developed RESTful API routes with NextJS Routing to retrieve, transform, and connect data from Google Calendar API with front-end components.

  • Configured and connected Firestore DB with NextJS and Google Firebase to have a flexible database to store important user data.

  • Created helper methods and constructed queries to either get or insert user data in the Firestore database.

Free Time Calendar View


Add Event Modal


Free Time Video Breakdown

Reviews_Postgres

Database system deployed on AWS EC2 instance and tested using Loader.io.

System Design Requirements

☑ Throughput on a single EC2 instance: 100 RPS

☑ Latency Goal: < 2,000 ms under load testing

☑ Error Rate Goal: < 1% under load testing

Tech Stack

  • JavaScript

  • PostgreSQL

  • Node.js

  • Express.js

  • AMS:ECS

  • K6

  • Loader.io

Personal Responsibilities

  • Extracted, Loaded, and Transformed (ELT) .csv files with over 10 million rows of data using pgAdmin to populate a PostgreSQL database.

  • Constructed database schemas using SQL Designer and pgAdmin in order to structure the data tables in a format compatible with existing front-end legacy code.

  • Reduced latency on a single EC2 micro instance that handled 1,000 RPS with an avg resp time of 3ms and 0.0% err rate by analyzing bottlenecks with K6/Loader.io, creating table indexes, and refactoring nested filter clauses.

K6 Local Stress Test

Initial testing of PostgreSQL database was promising with throughput under the required 2,000 RPS with 100 mock clients.

Loader.io Server Stress Test (100 Clients)

After refactoring some queries and deploying to an AWS EC2 instance, the throughput on the server performed very well, with an average RPS around 3-4 ms with 100 mock clients.

Loader.io Server Stress Test (1,000 Clients)

The database also performed well with 1,000 mock clients, with an average RPS of 3-4 ms.

Loader.io Server Stress Test (1,500 Clients)

Even with 1,500 mock clients, the database performed well. A 1,650 ms average RPS does not provide the best user experience. Next steps would be to add a load balancer that scales horizontally.

Katana

Front-end project that takes information from an API and displays it in an e-commerce format.

Tech Stack

  • JavaScript

  • React

  • Styled Components

  • CSS

  • Node.js

  • Express.js

  • Jest

Personal Responsibilities

  • Managed API redirection using Express wildcard server-side routing with React/Axios client-side routing ensuring secure RESTful API routes, authenticated browsing, and enhanced code readability.

  • Refactored Axios request timing to reduce data retrieval inconsistencies, improving from 66% to 95% success rate.

  • Architected the React front-end service of Q&A with pop-up modals, conditional rendering, and styled-components to provide a clean, responsive experience.

Katana E-Commerce Video Breakdown