Meeting Time Zone Coordinator

The 3 AM Meeting That Changed Everything 🌍

Picture this: It's 3 AM, I'm bleary-eyed on a video call with colleagues from Tokyo, London, and São Paulo. Someone scheduled a "convenient" meeting time that worked for exactly nobody. As I watched my London colleague yawn through their lunch break while my Tokyo teammate apologized for joining at midnight, I realized we were all victims of timezone math hell.

That frustrating experience sparked an idea: What if scheduling across time zones could be as simple as ordering coffee?

What I Learned 📚

Building this project was like getting a PhD in temporal complexity. I discovered that time zones aren't just "+8 hours" - they're living, breathing entities that shift with daylight saving changes, political decisions, and regional variations. Some countries have half-hour offsets, others change their clocks on different dates!

The psychology of global meetings fascinated me too. Through user research, I learned that people have different definitions of "acceptable" meeting times. Night owls in San Francisco don't mind 8 PM calls, but parents in Germany absolutely do. The human element became just as important as the technical calculations.

How I Built It 🛠️

I chose React for its component-based architecture, perfect for managing multiple time zone widgets that needed real-time updates. The dark theme with neon accents wasn't just aesthetic - it reduces eye strain during those inevitable late-night scheduling sessions.

Here's the core algorithm that finds optimal meeting times:

const findOptimalTimes = (participants, duration) => {
 const timeSlots = generateTimeSlots(24, duration);

 return timeSlots.map(slot => {
   const suitabilityScores = participants.map(participant => 
     calculateSuitability(slot, participant.timezone, participant.workHours)
   );

   return {
     time: slot,
     overallScore: suitabilityScores.reduce((a, b) => a + b) / participants.length,
     breakdown: suitabilityScores
   };
 }).sort((a, b) => b.overallScore - a.overallScore);
};

Built With

Share this project:

Updates