Calendar sync
Every account has a local Holdall calendar. People can also connect their own calendars from Calendar, Accounts. Changes sync both ways every 15 minutes, and right away with Sync now. When the same event changed on both sides, the most recent change wins and the other one is written in the sync history.
Saved passwords and tokens are encrypted with APP_SECRET.
iCloud and other CalDAV servers
Section titled “iCloud and other CalDAV servers”Nothing to set up on the server. Each person adds their account with an app password:
- iCloud: create an app-specific password at https://account.apple.com (Sign-In and Security, App-Specific Passwords).
- Nextcloud, Fastmail and others: use the CalDAV address of the server and an app password.
Members can only reach public https servers. An admin can also add a CalDAV server on the local network, for example http://192.168.1.10:5232.
Google Calendar (admin, once)
Section titled “Google Calendar (admin, once)”-
Open https://console.cloud.google.com and create a project.
-
In APIs & Services, Library, enable Google Calendar API.
-
In OAuth consent screen, choose External, fill in the app name and your email, and add the scope
https://www.googleapis.com/auth/calendar. While the app is in testing, add each person who will connect as a test user. -
In Credentials, Create credentials, OAuth client ID, choose Web application and add this authorized redirect URI (with your
APP_URL):https://holdall.example.com/api/calendar/oauth/google/callback -
Copy the client ID and secret into
GOOGLE_CLIENT_IDandGOOGLE_CLIENT_SECRET, then restart Holdall.
Outlook and Microsoft 365 (admin, once)
Section titled “Outlook and Microsoft 365 (admin, once)”- Open https://entra.microsoft.com, then App registrations, New registration.
- Supported account types: Accounts in any organizational directory and personal Microsoft accounts.
- Redirect URI: platform Web, value
https://holdall.example.com/api/calendar/oauth/microsoft/callback(with yourAPP_URL). - In API permissions, add the Microsoft Graph delegated permissions
Calendars.ReadWrite,User.Readandoffline_access. - In Certificates & secrets, create a client secret and copy its Value.
- Set
MICROSOFT_CLIENT_ID(the Application ID) andMICROSOFT_CLIENT_SECRET. KeepMICROSOFT_TENANT_ID=commonunless you want to allow only one organization. Restart Holdall.
When a provider is not set up, the Accounts page says so and hides its button.
Desktop app
Section titled “Desktop app”Google and Microsoft do not allow signing in from inside an embedded app window, so the desktop app offers iCloud and CalDAV only. To sync Google or Outlook, use a server instance.