One Calendar is a privacy-first calendar web app built with Next.js. It has modern security features, including e2ee, password-protected sharing, and self-destructing share links 📅 calendar.xyehr.cn
TypeScript 94.8%
CSS 1.2%
JavaScript 0.6%
Other 3.4%
2145 1 0

Clone this repository

https://tangled.org/e.xyehr.cn/One-Calendar https://tangled.org/did:plc:5yc22xi267elvu6o6ual4oxg/One-Calendar
git@tangled.org:e.xyehr.cn/One-Calendar git@tangled.org:did:plc:5yc22xi267elvu6o6ual4oxg/One-Calendar

For self-hosted knots, clone URLs may differ based on your setup.

Download tar.gz
README.md

One Calendar#

A privacy-first, weekly-focused open-source calendar built for clarity and control.

Image

Deploy with Vercel

Vision#

Most modern calendar tools are overloaded with automation, notifications, and analytics.
One Calendar takes a different approach:

  • Respect user privacy.
  • Provide a smooth, local-first planning experience.
  • Keep the system understandable.

This project is built for individuals and small teams who value clarity over complexity.

Features#

Weekly planning#

  • Drag & drop scheduling – move and resize events directly on the calendar
  • Inline editing – create and update events without modal overload
  • Right-click actions – fast contextual controls for power users
  • Keyboard-friendly interactions – efficient navigation and editing workflows

Event management#

  • Rich event metadata – title, description, time range, and structured fields
  • Precise time control – flexible duration handling and adjustments
  • Instant updates – optimistic UI for a responsive experience
  • Event persistence – reliable storage with PostgreSQL backend
  • Soft state handling – controlled updates to avoid accidental data loss

Privacy & security#

  • No AI tracking – no behavioral profiling or data mining
  • No analytics by default – zero third-party tracking scripts
  • End-to-end encryption (E2EE) – optional encrypted data handling
  • User-controlled exports – backup and portability without lock-in
  • Secure authentication – hardened session management via Clerk

Sync & collaboration#

  • Cloud sync (optional) – multi-device synchronization using PostgreSQL
  • Account-based access – sign in with third-party providers
  • Share-ready architecture – designed for future team and shared calendar support

Customization & UX#

  • Theme configuration – adaptable visual styling
  • Default view control – choose how your calendar opens
  • Locale-aware formatting – proper date and time formatting per region
  • Internationalization (i18n) – language support built-in
  • Composable UI system – built with reusable components (shadcn/ui + Tailwind)

Comparison with other calendar tools#

Feature One Calendar Google Calendar Apple Calendar Outlook Calendar Proton Calendar
Event creation & editing
Drag & drop scheduling
All-day events
Event reminders & notifications
Time zone support
Calendar sharing
Multiple calendar views (day/week/month)
Keyboard shortcuts ⚠️
Search events
Quick add / natural input ⚠️ ⚠️
Cloud sync
Web application ⚠️
End-to-end encryption (E2EE)
Privacy-first architecture ⚠️
No analytics / tracking by default ⚠️
Open-source ⚠️
Self-hostable
Data export
ICS import / export
Custom themes ⚠️ ⚠️ ⚠️
Custom default view ⚠️ ⚠️ ⚠️

⚠️ = limited or partial support

Getting Started#

Prerequisites#

Required Versions:

  • NodeJS (v20 or higher)
  • Bun (v1.2 or higher)

Quick Start#

# Clone the repo
git clone https://github.com/EvanTechDev/One-Calendar.git
cd One-Calendar

# Install dependencies
bun install

# Start the app
bun run dev

Then visit http://localhost:3000

Environment Variables#

Copy .env.example to .env and fill in.

Key variables:

# Core
NEXT_PUBLIC_BASE_URL=http://localhost:3000
SALT=Backup-Salt

# Clerk
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=...
CLERK_SECRET_KEY=...

# ATProto / Atmosphere (required for /at-oauth)
ATPROTO_SESSION_SECRET=...

# Optional DB (backup/share sync)
POSTGRES_URL=postgres://postgres:postgres@localhost:5432/onecalendar

Tech Stack#

Contributing#

Contributions are welcome! Feel free to explore the project and submit improvements.

Please refer to CONTRIBUTING.md for setup instructions and contribution guidelines.

License#

Made with ❤️

Published under MIT License.

This project is supported by Cloudflare Project Alexandria.

Star History#

Star History Chart