Too loud?

Keyboard shortcuts

Anywhere on the site, while you are not typing.

M
Sounds on or off
E
Copy my email
T
Day or night
S
Change the season
D
Developer mode
?
These shortcuts
Esc
Close what is open

  • internship
  • 2025
  • Frontend
  • Payments
  • Live video

Modulus prepares people for interviews in consulting, product, finance and other non-tech roles, with cohorts, mentorship, live sessions and peer practice.

As its frontend engineer I built the product from the first screen: the pages that sell a program, booking and payment, scheduling with a mentor, and live sessions with chat beside the stream.

The Modulus home page: a shortcut to non-tech interview preparation, with a tile for each role.
a way in for every role
A cohort page: the program, its curriculum and an enroll button beside the price.
cohorts, paid through razorpay
Sessions and workshops: a recorded session with its date, time and a watch now button.
live sessions over hls
Type
internship
Role
Frontend Engineer Intern, remote
When
Apr to Aug 2025
Stack
React, TypeScript, Vite, React Router, TanStack Query, Tailwind, hls.js, Firebase, PostHog
Links
trymodulus.com
routes
47
of the week on Peerlist
#8

What I built

  • The product, from the first screen

    47 routes, from the first page a visitor sees to the session they booked.

  • Cohorts and programs

    The pages that sell and run them, with every filter kept in the URL.

  • Razorpay booking

    Enrollment paid with credits or card, with verification left to the server's webhook by design.

  • Scheduling

    Sessions booked through Cal.com without leaving the product.

  • Live sessions

    HLS streams with Firebase chat running beside them.

  • Fast, and measured

    Code split by route, and PostHog funnels so the team could see where people dropped off.

How it fits together

React appVite · 47 routes · splitcohorts · programsbooking · enrollmentlive stream playerfilters in the URLPostHog funnelsModulus APIbackend teamRazorpayverified by webhookCal.comschedulingHLS + Firebaselive sessions · chat
The frontend, end to end, around services it does not ask to trust it: a payment is final when the backend's webhook says so, never when the page does.