Privacy policy

ccal is a single-user service operated by Conor Winders for his own use. It handles one person's data: his own.

What is accessed

With the owner's explicit Google consent, ccal reads calendar events from his Google Calendar account, and can create or modify events there once he approves a proposal. The scopes requested are:

What is stored, and where

Event data is stored in a private Cloudflare D1 database accessible only to the service. It holds the fields needed to answer availability questions: title, start and end time, timezone, location, attendees and response status. Events from public feeds are stored the same way and carry no personal information.

Google OAuth tokens are stored in a separate encrypted key-value namespace, deliberately isolated from the event cache so that clearing cached calendar data cannot affect credentials.

Data from a Google account is never sent to the operators of a public feed, and ccal makes no request to any feed that carries calendar content. Reading a feed is an ordinary web request for a published file.

What is never done

Applications belonging to the owner may query ccal, but each is granted the narrowest access that its function requires — most receive only opaque busy and free periods, never event details.

The seeCal waitlist

If you join the seeCal waitlist, your sign-up is kept by launch, the private service that holds the waitlists for Conor Winders's apps, in a database of its own, separate from any calendar data. It keeps your email address, which of Mac and iPhone you picked, when you joined, the country your connection came from, your browser's name, and the label of the link that brought you, if there was one. It is used to send you a welcome and to tell you when seeCal opens to more people. It is never shared or sold, and joining gives no access to anything here. To be removed, reply to any email from seeCal or write to the address under Contact, and it is deleted.

Retention and deletion

Cached events are refreshed continuously and are deleted when they fall outside the synchronisation window. The owner can revoke ccal's access at any time from his Google account permissions page, which immediately and permanently ends ccal's ability to read or write the calendar. Stored data can be destroyed by deleting the underlying database.

Contact

Questions about this policy: conor.winders@gmail.com.