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
at main 170 lines 8.2 kB view raw view rendered
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** &ndash; move and resize events directly on the calendar 35- **Inline editing** &ndash; create and update events without modal overload 36- **Right-click actions** &ndash; fast contextual controls for power users 37- **Keyboard-friendly interactions** &ndash; efficient navigation and editing workflows 38 39### Event management 40 41- **Rich event metadata** &ndash; title, description, time range, and structured fields 42- **Precise time control** &ndash; flexible duration handling and adjustments 43- **Instant updates** &ndash; optimistic UI for a responsive experience 44- **Event persistence** &ndash; reliable storage with PostgreSQL backend 45- **Soft state handling** &ndash; controlled updates to avoid accidental data loss 46 47### Privacy & security 48 49- **No AI tracking** &ndash; no behavioral profiling or data mining 50- **No analytics by default** &ndash; zero third-party tracking scripts 51- **End-to-end encryption (E2EE)** &ndash; optional encrypted data handling 52- **User-controlled exports** &ndash; backup and portability without lock-in 53- **Secure authentication** &ndash; hardened session management via Clerk 54 55### Sync & collaboration 56 57- **Cloud sync (optional)** &ndash; multi-device synchronization using PostgreSQL 58- **Account-based access** &ndash; sign in with third-party providers 59- **Share-ready architecture** &ndash; designed for future team and shared calendar support 60 61### Customization & UX 62 63- **Theme configuration** &ndash; adaptable visual styling 64- **Default view control** &ndash; choose how your calendar opens 65- **Locale-aware formatting** &ndash; proper date and time formatting per region 66- **Internationalization (i18n)** &ndash; language support built-in 67- **Composable UI system** &ndash; 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[![Star History Chart](https://api.star-history.com/svg?repos=EvanTechDev/One-Calendar&type=Date)](https://www.star-history.com/#EvanTechDev/One-Calendar&Date) 170