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);
};
Log in or sign up for Devpost to join the conversation.