Fantastical keeps no calendar of its own: it reads and writes the accounts you already have, such as iCloud, Google, Microsoft 365 and Exchange. What it sells is the front end: a box that turns a sentence into an event, calendar sets, a calm day and week view, and Openings for booking links. A local web calendar over CalDAV with a sentence parser such as chrono-node covers entry, week and agenda views and reminders in a weekend. The gaps are native apps on every device, Google and Exchange sign-in, push sync and hosted booking pages. If you stay on a Mac, Apple Calendar is free and, according to forum threads, enough for people who rarely add events.
Before you buildFantastical Free and Apple Calendar cost nothing. Use Premium's 14-day trial to find out whether sentence entry is the thing you would actually miss.
Build me a local calendar app with sentence-style event entry to replace Fantastical. Requirements: - Node.js 22 + TypeScript: a Fastify server and a React UI built with Vite. `npm start` serves http://127.0.0.1:4650. - Sync: `tsdav` against the CalDAV accounts listed in ./accounts.json (url and username there, password in .env; iCloud with an app-specific password, Fastmail and Nextcloud all work). Poll ctag and etag every 60 seconds and on demand. Write with If-Match so a concurrent change is never overwritten. Parse and write iCalendar with `ical.js`. - Storage: better-sqlite3 in ./data/cache.db keeps a local copy for fast start and offline reading; the CalDAV server stays the source of truth. - Quick entry: press `n` or Cmd/Ctrl+K. Parse with `chrono-node` plus rules for "with <names>", "at <place>", "every <weekday>", "for <duration>" and "in <calendar>". Show the parsed event live (title, start, end, calendar, repeat) before saving. - Views: day, week and month grids, an agenda list and a mini month. Drag to move or resize, click empty time to create. Recurring events (RRULE) expand correctly across daylight saving changes. - Calendar sets: named groups of calendars, switched with the keys 1 to 9. - Reminders: desktop notifications 10 minutes before each event with `node-notifier` while the server runs, and an optional travel-time offset per event. - Single user. No accounts, no telemetry, local-first; only the CalDAV servers you list are contacted. - Out of scope: Google and Microsoft sign-in, Exchange, scheduling links, proposals, inviting guests, mobile and watch apps. - README: how to create an iCloud app-specific password, how sync and conflicts behave, and a checklist of 15 sample sentences with their expected parse.
Opens your agent with the prompt filled in, you press enter. Or copy it and paste it into an empty folder.
The first prompt builds the core. Run these one at a time in the same folder to grow it into your own Fantastical.
Add a parser test bench to the calendar app in this folder. Requirements: - A file ./parser-cases.yaml with sentence, expected title, start, end and calendar. - `npm run parse-test` runs every case, prints failures as a diff and exits non-zero if any fail. - A Corrections button in the quick-entry box that saves the fixed result back as a new case. - Support custom keywords per calendar (for example "gym" goes to Personal) in ./keywords.json. - Update the README.
Add booking links to the calendar app in this folder. Requirements: - Define an Opening: calendars to check, weekdays and hours, meeting length, buffer, and a minimum notice. - Serve /book/<slug> on a second port (BOOKING_PORT in .env) with free slots computed from the cached events. - A booked slot creates an event in a chosen calendar and emails both sides through SMTP settings in .env. - Rate-limit per IP, and show only free or busy, never event titles. - Update the README with how to expose only the booking port through a tunnel.
Add Google Calendar support to the calendar app in this folder. Requirements: - A loopback OAuth flow (`google-auth-library`) with GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET in .env; store refresh tokens encrypted with a key from .env. - Sync through the Calendar API v3 with sync tokens, and map events to the same cache tables. - Write changes back with etags and handle 410 responses by resyncing. - Warn in the README that creating the Google Cloud project and consent screen takes about an hour. - Update the README.
Add a command-line quick add to the calendar app in this folder. Requirements: - `cal add "lunch with Sam friday 1pm"` posts to the local server, prints the parsed event and asks y/N before saving; `--yes` skips the question. - `cal today` and `cal next` print the agenda in the terminal. - Authenticate with a token from .env so only local processes can call it. - Include a macOS Shortcut recipe in the README that runs `cal add` from a dictated sentence.
People who add several events a day pay for the speed: a sentence becomes an event with a place, guests and a video link, and lands on a calendar that is pleasant to read. Others use calendar sets and availability views to juggle work schedules, or the booking links included in Individual instead of a separate scheduling subscription. People who rarely add events find Apple Calendar is enough, which is the honest dividing line.
Estimate · Runs on your machine against calendar accounts you already have. Hosting your own CalDAV server, such as Radicale on a small VPS, is the only optional cost. The build is token usage on your agent plan.
| Plan | Monthly | Annual, per month | What you get |
|---|---|---|---|
| Free | $0 | $0 | Fantastical and Cardhop with your existing calendars; 1 invitee per event, 1 calendar set, 3-day weather, 2 weeks of calendar mirroring, standard support. |
| Individual | $6.99 | $4.75 | All Premium features, Fantastical Scheduling (Openings), 6 months of calendar mirroring, 10-day weather, priority support. |
| Family | $10.49 | $7.50 | Everything in Individual for up to 5 members. |
| Team | $6.99/user | $4.75/user | Everything in Individual plus single sign-on and Openings with several hosts. |
Free keeps the calendar and your existing accounts, but limits events to one invitee, one calendar set, a 3-day weather forecast and 2 weeks of calendar mirroring.
Kinda. The core is a weekend build with the prompt on this page, but real gaps remain: Native apps on Mac, iPhone, Watch and Windows, with widgets and notifications, Sign-in for Google, Microsoft 365 and Exchange accounts, with push sync.
About $6.99 a month on the Individual plan, $83.88 a year (checked 2026-10-14).
Native apps on Mac, iPhone, Watch and Windows, with widgets and notifications; Sign-in for Google, Microsoft 365 and Exchange accounts, with push sync; Openings, proposals and RSVPs for finding a time with other people; Calendar sets and Meet With views of other people's availability; Travel-time and time-to-leave alerts, weather in the calendar and one-click video call links. If any of those matter to you, keep paying.
Yes: Apple Calendar (free), Itsycal (open source), Thunderbird (open source).