Full-Stack

Aurora Calendar

A self-hosted, privacy-first calendar built for full data ownership and Google Calendar feature parity, with zero Google integration.

Overview

Aurora Calendar is a self-hosted calendar that runs entirely on hardware you control. It aims to match Google Calendar feature for feature and go beyond it, while keeping every piece of data - events, reminders, and even email parsing - on your own server.

Try a live slice of it

This is a small, self-contained piece of Aurora running right here in the page. Click an email in the inbox to scan it (the real app uses a local LLM; here the result is simulated), approve or dismiss the proposal, and drag events around the week. Nothing leaves your browser.

Aurora Week view
Standup 9:00 - 9:30
Project sync 14:00 - 15:00
Lunch w/ Ama 12:00 - 13:00

Tip: drag an event to another slot, or select it and use the arrow keys.

Email to event, with your approval

Aurora reads your mailbox over read-only IMAP and hands incoming emails to a local LLM running on your own machine. Extracted events are never added automatically - each one lands in a review queue as a proposal you approve, edit, or dismiss. No email content is ever sent to a third-party AI API.

Key features

  • Day, Week, Month, Agenda, and Year views with drag-to-move and resize
  • Recurring events (RRULE) with client-side occurrence expansion
  • Email inbox scanning that turns invites and free text into proposed events
  • CalDAV server for two-way sync with any standard calendar client
  • Installable PWA with web push reminders and a daily agenda digest
  • Shared calendars via signed, token-based read-only feeds
  • Natural-language quick-add ("lunch w/ Ama fri 12")
  • .ics import/export, including idempotent Google Takeout import

Tech stack

  • Frontend: React, TypeScript, Vite, Tailwind CSS
  • Backend: Node.js, NestJS, TypeScript
  • Database: PostgreSQL, Prisma ORM
  • Sync: standards-based CalDAV server built on top of the same database
  • Email parsing: local LLM via LM Studio / Ollama, with rules-based .ics parsing first
  • Notifications: Web Push (VAPID) via a service worker
  • Deployment: Docker Compose on a self-hosted VPS
← Back to projects