← all notes

Cesium Events app icon macOS · live · Mac App Store

Cesium Events

Never miss another meeting.

I kept missing meetings because the corner banners my Mac was showing me were not invasive enough. They would appear on a different monitor, or I would dismiss one without registering it, and if I was deep in the flow that was the end of it. Cesium Events is the fix, and it tries hard to do as little as possible: read the calendar, watch the clock, interrupt me with a full-screen card when something is about to start. That is the whole app.

No server, and everything follows from that

The one architectural decision that mattered was made before anything else: nothing runs on a server. Every calendar read, every notification, every token stays on the machine.

That decision is not free, and it is worth being explicit about the bill. It rules out a phone version, or at least a useful one, because notifications would need somewhere central to originate. It rules out reading your email to find meetings that are not on a calendar. It rules out anything that needs to watch your accounts while your Mac is asleep. Each of those would have made a more capable app, and a more complicated one, and one that costs money to operate every month whether anyone is using it or not.

What you get in exchange is an app with no operating cost, no privacy story to explain beyond "it never leaves your Mac", and nothing to keep running in five years. Almost everything else on this page is downstream of that trade.

Full screen was always the intent

I did not experiment with gentler interruptions and escalate. The gentler version was the problem I was trying to solve. A banner in the corner of a monitor I am not looking at is indistinguishable from no notification at all, so the app takes over the screen. It is a rude design and that rudeness is the entire feature.

Three calendars, because one was not enough

The first version only read Apple Calendar. That works, but it quietly pushes the setup burden onto the user: to see a work calendar you first have to get it into Apple Calendar, which is an extra layer and an extra thing to go wrong. Google and Microsoft 365 are where most people's business calendars actually live, so the app now talks to all three directly.

Setting up the OAuth for those two was the hardest part of the project, and Google was worse than Microsoft. I could not have worked through it on my own. Getting Claude to drive my browser through the consent screens and console settings is genuinely what got it done.

Read-only scopes made that much simpler than it would otherwise have been. Asking for write access to a Google Calendar pushes you into a verification process I am not in a position to complete as a one-person studio, so read-only was both the honest choice and the only practical one. It is a good example of a privacy decision and a feasibility decision pointing the same direction.

Tokens live in the Mac Keychain. Nothing touches a Jucius server, because there is not one.

Why you pay once

Cesium Events is a one-time purchase. My other two apps are subscriptions, and the difference is not a change of heart, it is the architecture.

A subscription is rent, and rent should buy something ongoing. Scouted and HitMark have ongoing costs and ongoing work behind them. Cesium Events has neither. There is no server to pay for, and the app does one thing that I do not expect to need many updates to keep doing. Charging monthly for that would be bleeding users for software that is finished. People either need this or they do not, and the ones who need it need it for years rather than a few months, so they should pay once.

The trial anchor I probably did not need

The trial is seven days, and I put real effort into making it hard to restart. It is anchored to the App Store purchase record, with the Keychain and user defaults as fallbacks, so deleting and reinstalling does not hand you a fresh week, and neither does moving to another Mac on the same Apple ID.

In hindsight that was probably more work than the problem deserved. It was defensive engineering against an abuse pattern I had not actually observed, on an app with a modest one-time price where the payoff for cheating is a few dollars. I could have shipped something simpler and been fine. I am leaving it in because it works, but if I were starting again I would not build it first.

My first in-app purchase, and it took many tries

This was the first time I had shipped a paid unlock, and it was considerably more complicated than I expected. The implementation was not the hard part. Understanding how to test it was.

The trap is that Xcode reads a local StoreKit configuration file while TestFlight queries real App Store Connect, so a purchase flow can work perfectly on your machine and fail immediately for a tester, with an error that points at the network rather than at the product configuration. Meanwhile the written instructions never quite matched the options actually in front of me, which is the usual experience with App Store Connect and which no amount of AI assistance fixes, because the AI is working from the same documentation.

What finally unblocked it was realizing I had to create separate developer test accounts and properly sign out of my own account to see what a real buyer sees. Obvious in retrospect. Not obvious at eleven at night after several failed builds.

Small things

Simultaneous events used to open two full-screen windows that fought each other. I found that myself the first time I was double-booked, and they are now grouped into a single window.

The app detects Zoom, Teams, Google Meet and Webex links in an event so the notification can take you straight there. This is the least tested thing in the app, though they are just links, so I do not expect much trouble.

A Windows version exists. Claude wrote it, I have not put it through testing or verification, and I am honestly a bit put off by the Microsoft Store submission process. It may ship. It may not.

Who built what

Everything at Jucius Labs is built this way, so it is worth stating once rather than pretending otherwise: the code here was written by AI. That includes the abstraction that lets three different calendar backends look the same to the rest of the app. What is mine is the decisions, and on this project those were most of the work: no server, full-screen interruption, read-only access, pay once, and a feature list kept deliberately short. I review it and I ship it, so it is my responsibility either way.

Page/cesiumevents/ Mac App Storeapps.apple.com