For the past few months, I have been working on an app for iOS and Android called meetoo that helps make it easier for friends to plan meetups. The gist of it is that users create profiles and sync their personal calendars, allowing their friends in the app to see when they are free or busy.
Users can then schedule meetings with their friends by cross-referencing everyone's availabilities. Each meeting invitee is prompted to respond with yes, tentative, or no, and participants can see everyone else's response. A meeting can also be added to a user's personal calendar as an event. If you've ever used the Microsoft Teams scheduling assistant, it's basically the same concept but geared more towards a social context.
The purpose of this devlog is to document some of the challenges I face while developing meetoo. There are so many moving parts that it's easy to forget how or why I did certain things, so I think that it would be interesting to look back on these posts. Hopefully, these can also serve as insight for other people (like you!) who are either facing similar scenarios or just interested in meetoo.
For context, meetoo is made using Flutter and I'm using Supabase for authentication, database management, and other backend stuff. Let's get to it!
The Scenario
As I mentioned, meetoo users sync their personal calendars so their friends can see their availabilities. I started off by integrating Google Calendar, which was pretty straightforward thanks to the well-documented Google Calendar API and the googleapis Dart package.
My next goal was to integrate Apple Calendar, or, more accurately, iCloud Calendar into meetoo. I could immediately sense that it would be more difficult—as far as I can tell, there's no official public API or documentation for interacting with iCloud Calendar. Anyways, I don't feel like writing anymore, so I'll finish this post later (hopefully) 🤓