Brandon Ling

Are You Free Then

Tldr: This project was inspired by the site When2meet, which a few of my friends use for scheduling things like practices. My project, Are You Free Then, is a full Ruby on Rails app with some React added in a few places. You can check it out1 here, and use email: and password: password to log in without having to create your own account. You can also view the code here.

(Updated August 2022)

The original When2meet (which is still around) helps people figure out the best time for a group of people to meet. You select some dates and get a link for the event, and then people can enter the times they have free for that event by going to that link.

The features that my friends like about When2meet are being able to click and drag rectangular selections on the calendar and the ability to visualize what times people have in common.

choosing dates for an event in Are You Free Then
Choosing dates for an event in Are You Free Then

But there are some things they didn’t like:

  1. It’s not designed for mobile at all.
  2. They often have to fill out the same times for multiple events, which is annoying.

The site is about a decade old from what I can tell, so I decided to make a more modern version that my friends could use.

To handle the second point above, users create accounts so that they can enter and save the times they are free. Events pull that information automatically when displaying times.

Showing participants’s free times for a given date for an event
Showing participants’ free times for a given date for an event

Other potential features I’ve thought about include having friend groups and sending event invites in app so that you don’t have to copy and paste event codes.

  1. For some reason, the rectangular selection on the calendar doesn’t seem to be working correctly on mobile Chrome or Safari (the relevant pointer events don’t seem to be firing). It works fine on desktop versions and both mobile and desktop Firefox. You can still tap each individual date though. (Update: turns out I wasn’t releasing the pointer capture.)