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
1# One Calendar
2
3> A privacy-first, weekly-focused open-source calendar built for clarity and control.
4
5<picture>
6 <source media="(prefers-color-scheme: dark)" srcset="/public/Banner-dark.jpg">
7 <source media="(prefers-color-scheme: light)" srcset="/public/Banner.jpg">
8 <img src="/public/Banner.jpg" alt="Image">
9</picture>
10
11- [Live Product](https://calendar.xyehr.cn)
12- [Status](https://calendarstatus.xyehr.cn)
13- [Bluesky](https://bsky.app/profile/calendar.xyehr.cn)
14
15<a href="https://vercel.com/new/clone?repository-url=https://github.com/EvanTechDev/One-Calendar&env=NEXT_PUBLIC_BASE_URL,NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY,CLERK_SECRET_KEY,POSTGRES_URL,SALT&project-name=one-calendar&repo-name=one-calendar" style="display: inline-block;"><img src="https://vercel.com/button" alt="Deploy with Vercel" style="height: 32px;"></a>
16
17<a href="https://producthunt.com/product/one-calendar"><img src="https://api.producthunt.com/widgets/embed-image/v1/featured.svg?post_id=955482&theme=light&t=1748791250175"></img></a>
18
19## Vision
20
21Most modern calendar tools are overloaded with automation, notifications, and analytics.
22**One Calendar** takes a different approach:
23
24- Respect user privacy.
25- Provide a smooth, local-first planning experience.
26- Keep the system understandable.
27
28This project is built for individuals and small teams who value clarity over complexity.
29
30## Features
31
32### Weekly planning
33
34- **Drag & drop scheduling** – move and resize events directly on the calendar
35- **Inline editing** – create and update events without modal overload
36- **Right-click actions** – fast contextual controls for power users
37- **Keyboard-friendly interactions** – efficient navigation and editing workflows
38
39### Event management
40
41- **Rich event metadata** – title, description, time range, and structured fields
42- **Precise time control** – flexible duration handling and adjustments
43- **Instant updates** – optimistic UI for a responsive experience
44- **Event persistence** – reliable storage with PostgreSQL backend
45- **Soft state handling** – controlled updates to avoid accidental data loss
46
47### Privacy & security
48
49- **No AI tracking** – no behavioral profiling or data mining
50- **No analytics by default** – zero third-party tracking scripts
51- **End-to-end encryption (E2EE)** – optional encrypted data handling
52- **User-controlled exports** – backup and portability without lock-in
53- **Secure authentication** – hardened session management via Clerk
54
55### Sync & collaboration
56
57- **Cloud sync (optional)** – multi-device synchronization using PostgreSQL
58- **Account-based access** – sign in with third-party providers
59- **Share-ready architecture** – designed for future team and shared calendar support
60
61### Customization & UX
62
63- **Theme configuration** – adaptable visual styling
64- **Default view control** – choose how your calendar opens
65- **Locale-aware formatting** – proper date and time formatting per region
66- **Internationalization (i18n)** – language support built-in
67- **Composable UI system** – built with reusable components (shadcn/ui + Tailwind)
68
69### Comparison with other calendar tools
70
71| Feature | One Calendar | Google Calendar | Apple Calendar | Outlook Calendar | Proton Calendar |
72| -------------------------------------------- | :----------: | :-------------: | :------------: | :--------------: | :-------------: |
73| Event creation & editing | ✅ | ✅ | ✅ | ✅ | ✅ |
74| Drag & drop scheduling | ✅ | ✅ | ✅ | ✅ | ✅ |
75| All-day events | ✅ | ✅ | ✅ | ✅ | ✅ |
76| Event reminders & notifications | ✅ | ✅ | ✅ | ✅ | ✅ |
77| Time zone support | ✅ | ✅ | ✅ | ✅ | ✅ |
78| Calendar sharing | ✅ | ✅ | ✅ | ✅ | ✅ |
79| Multiple calendar views (day/week/month) | ✅ | ✅ | ✅ | ✅ | ✅ |
80| Keyboard shortcuts | ✅ | ✅ | ⚠️ | ✅ | ✅ |
81| Search events | ✅ | ✅ | ✅ | ✅ | ✅ |
82| Quick add / natural input | ✅ | ✅ | ⚠️ | ✅ | ⚠️ |
83| Cloud sync | ✅ | ✅ | ✅ | ✅ | ✅ |
84| Web application | ✅ | ✅ | ⚠️ | ✅ | ✅ |
85| End-to-end encryption (E2EE) | ✅ | ❌ | ❌ | ❌ | ✅ |
86| Privacy-first architecture | ✅ | ❌ | ⚠️ | ❌ | ✅ |
87| No analytics / tracking by default | ✅ | ❌ | ⚠️ | ❌ | ✅ |
88| Open-source | ✅ | ❌ | ❌ | ❌ | ⚠️ |
89| Self-hostable | ✅ | ❌ | ❌ | ❌ | ❌ |
90| Data export | ✅ | ✅ | ✅ | ✅ | ✅ |
91| ICS import / export | ✅ | ✅ | ✅ | ✅ | ✅ |
92| Custom themes | ✅ | ⚠️ | ❌ | ⚠️ | ⚠️ |
93| Custom default view | ✅ | ⚠️ | ❌ | ⚠️ | ⚠️ |
94
95⚠️ = limited or partial support
96
97## Getting Started
98
99### Prerequisites
100
101Required Versions:
102
103- [NodeJS](https://nodejs.org) (v20 or higher)
104- [Bun](https://bun.sh) (v1.2 or higher)
105
106### Quick Start
107
108```bash
109# Clone the repo
110git clone https://github.com/EvanTechDev/One-Calendar.git
111cd One-Calendar
112
113# Install dependencies
114bun install
115
116# Start the app
117bun run dev
118```
119
120Then visit `http://localhost:3000`
121
122### Environment Variables
123
124Copy `.env.example` to `.env` and fill in.
125
126Key variables:
127
128```env
129# Core
130NEXT_PUBLIC_BASE_URL=http://localhost:3000
131SALT=Backup-Salt
132
133# Clerk
134NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=...
135CLERK_SECRET_KEY=...
136
137# ATProto / Atmosphere (required for /at-oauth)
138ATPROTO_SESSION_SECRET=...
139
140# Optional DB (backup/share sync)
141POSTGRES_URL=postgres://postgres:postgres@localhost:5432/onecalendar
142```
143
144## Tech Stack
145
146- [Next.js](https://nextjs.org)
147- [TypeScript](https://www.typescriptlang.org/)
148- [Tailwind CSS](https://tailwindcss.com/)
149- [Shadcn/UI](https://ui.shadcn.com)
150- [PostgreSQL](https://www.postgresql.org/)
151- [Clerk](https://clerk.com)
152
153## Contributing
154
155Contributions are welcome! Feel free to explore the project and submit improvements.
156
157Please refer to [CONTRIBUTING.md](./CONTRIBUTING.md) for setup instructions and contribution guidelines.
158
159## License
160
161Made with ❤️
162
163Published under [MIT License](./LICENSE).
164
165This project is supported by [Cloudflare Project Alexandria](https://blog.cloudflare.com/expanding-our-support-for-oss-projects-with-project-alexandria/).
166
167## Star History
168
169[](https://www.star-history.com/#EvanTechDev/One-Calendar&Date)
170