[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
0

Configure Feed

Select the types of activity you want to include in your feed.

TypeScript 94.3%
JavaScript 1.1%
CSS 1.0%
Other 3.6%
2.7k 1 0

Clone this repository

https://git.vm.fail/e.xyehr.cn/One-Calendar https://git.vm.fail/did:plc:irvgmnr2x4agycpxxx4h7ppj
ssh://git@knot1.tangled.sh:2222/e.xyehr.cn/One-Calendar ssh://git@knot1.tangled.sh:2222/did:plc:irvgmnr2x4agycpxxx4h7ppj

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


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