A little duck in a plane flies across your screen, above every app, towing a banner that
reminds you of your next meeting — with a plane engine sound. Fully automatic from your calendar.
Free & open source. macOS · UI in English.
A project by Ooble Studio 🐣
Quakpit is built and given away for free by Ooble Studio — a design studio specializing in UX, branding & motion design for Web3 and AI products. Quakpit is our little open-source gift to your desktop; if it makes you smile, come see what we craft for clients at ooble.studio. 📣 Follow along on X / Twitter (@ooblestudio).
Quakpit stays free and open source. There's an optional Pro unlock (extra characters, plane colours, sounds, themes and flight speeds) that funds the studio — but the whole free app, the one in this repo, is yours, forever.
Once it's running (it lives quietly in your menu bar), Quakpit watches your calendar and, a few minutes before each meeting, sends the duck flying across every app you have open — towing a banner like "Call with Jack in 5 minutes", with an engine drone and a quack. That's it. No window to manage, no notification to dismiss.
- Send a test flight anytime — or press ⌘⇧D
- Works with Google Calendar and iCloud
- Set the lead time, the message, the sound
Quakpit has no server and no database. It talks directly to Google / Apple from your machine. Calendar events are kept in memory only and never written to disk. The only things that can be stored locally are your OAuth refresh token and (if you go Pro) your license — encrypted by the OS (Keychain). No telemetry, no analytics. Ever.
Grab the latest macOS build from the Releases page (or from ooble.studio).
Quakpit is open-core. This repository is the complete free app — MIT-licensed and fully functional on its own. Pro adds extra plane colours, animal characters & sounds, banner themes and flight speeds, unlocked with a license key; their artwork/sounds aren't part of this repo. The license check is here and only talks to Polar's public endpoints — no secret ships in the app.
npm install
npm run dev # run from YOUR terminal (not an automated shell)
npm run build # production build into ./outHeads-up: if your shell sets
ELECTRON_RUN_AS_NODE=1, Electron won't open a GUI. Use a normal terminal, or runenv -u ELECTRON_RUN_AS_NODE npm run dev.
You need your own Google OAuth client (so nothing routes through anyone else):
- https://console.cloud.google.com/ → create a project.
- APIs & Services → Library → enable Google Calendar API.
- OAuth consent screen → External. Add the scope
.../auth/calendar.events.readonly. While testing, add your account under Test users (no verification needed for up to 100 testers). - Credentials → Create credentials → OAuth client ID → Desktop app.
- Copy
oauth-credentials.example.jsontooauth-credentials.jsonand paste yourclientId/clientSecret. (For desktop apps the secret is not confidential; the file is gitignored.)
Then: Settings… → Calendar → Google Calendar → Connect.
iCloud uses CalDAV with an app-specific password:
- https://appleid.apple.com → Sign-In & Security → App-Specific Passwords → generate one.
- In Quakpit: Settings… → Calendar → iCloud → Apple ID + that password → Connect.
The password is stored encrypted on your device (Keychain), used only to read your calendars over HTTPS directly from Apple.
npm run dist:mac # -> dist/Quakpit-<version>-universal.dmgFor an unsigned local test build: npm run build && CSC_IDENTITY_AUTO_DISCOVERY=false npx electron-builder --dir.
A signed/notarized build (warning-free download + auto-update) needs an Apple Developer account
($99/yr) and a Developer ID Application certificate; set APPLE_ID / APPLE_APP_SPECIFIC_PASSWORD
/ APPLE_TEAM_ID and mac.notarize: true in electron-builder.yml.
src/main/ Electron main process (windows, tray, calendar, scheduler, store, license)
src/preload/ Safe bridge exposed to the renderers
src/renderer/ overlay (the flight) + settings (the form)
scripts/ tray + app icon generators
site/ static download / landing page
Made with 🧡 by Ooble Studio
