[READ-ONLY] 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
nextjs
TypeScript 94%
4%
JavaScript 1%
CSS 1%

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 Drizzle
  • 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
  • User-controlled exports – backup and portability without lock-in
  • Secure authentication – hardened session management via Better Auth

Sync & collaboration #

  • Cloud sync (optional) – multi-device synchronization using Drizzle
  • 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 ✅ ✅ ⚠️ ✅ ✅
Privacy-first architecture ✅ ❌ ⚠️ ❌ ✅
No analytics / tracking by default ✅ ❌ ⚠️ ❌ ✅
Open-source ✅ ❌ ❌ ❌ ⚠️
Self-hostable ✅ ❌ ❌ ❌ ❌
Data export ✅ ✅ ✅ ✅ ✅
ICS import / export ✅ ✅ ✅ ✅ ✅

⚠️ = limited or partial support

Getting Started #

Prerequisites #

Required Versions:

Quick Start #

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

# Install dependencies
pnpm install

# Start the app
pnpm 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

# Auth
BETTER_AUTH_SECRET=secret
BETTER_AUTH_URL=http://localhost:3000

# Optional
POSTGRES_URL=postgres://postgres:postgres@localhost:5432/onecalendar
BETTER_AUTH_API_KEY=your-api-key
NEXT_PUBLIC_TURNSTILE_SITE_KEY=site-key
TURNSTILE_SECRET_KEY=secret-key

Database Configuration #

This project uses Drizzle ORM.

After configuring POSTGRES_URL, run:

# Push schema to database
pnpm dlx drizzle-kit push

Production Recommendation #

For production deployments, use migrations:

# Generate migrations
pnpm dlx drizzle-kit generate

# Apply migrations
pnpm dlx drizzle-kit migrate

Tech Stack #

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