CU Records Booking Platform
CU Records is a student organization that manages an on-campus recording studio at Columbia University and hosts various music-related contests and events. I myself frequently use the studio for voiceover recordings and drum practicing sessions.
Trained students can reserve timeslots to use the studio for their recording/practice sessions. This process is handled by a self-serve web platform I had the honor of building at the start of my junior year at Columbia, replacing the old online form and shared spreadsheet that required a lot of manual bookkeeping.
Overview
To access the booking platform, students must sign in using their Columbia/Barnard Google account.
Once logged in, students can view their past and upcoming bookings, and have the ability to easily cancel upcoming bookings.
Using the calendar view, students and CU Records board members can quickly see during which times the studio is available, and create a new booking.
Technical aspects
The platform uses Next.js for both frontend and backend. Booking data is stored in a MongoDB database. Authentication is handled by FirebaseAuth and Google Sign-In.
Certain users can be marked as admins, letting them access a hidden admin view which allows them to view and cancel any upcoming bookings, manage platform access, and add blocked slots during which the studio cannot be booked.
The most challenging aspect of the project was dealing with date and time. JavaScript's native Date/Time API is designed in a timezone-agnostic, epoch-centered way, meaning the displayed date and time depend on the time zone the client is in. While this is good for many applications, it causes problems in this case. For example, a student might book a slot at 2 PM while on vacation in a different time zone, and only discover at their arrival back in New York that their booking is actually at an offset time. Second, all bookings made before daylight saving kicks in will get shifted afterwards. To combat this, I decided not to use JavaScript's Date/Time API and instead build my own, which encodes and saves dates and times in their common, natural language representation and not as UNIX epochs.
Reception
The new platform was received well by both students and CU Records board members, and the transition was quick and seamless. In the first semester following deployment, over 100 students have signed in and over 500 bookings have been made.
The platform has been online 24/7 since its creation and has not seen any major technical outage since.