One Calendar is a privacy-first, weekly-focused, open-source calendar app, designed to help individuals and teams plan, focus, and stay in sync.
Without One Calendar, your schedule is scattered. With it, your week feels intentional.
Most calendar tools are cluttered, over-engineered, or locked behind paywalls. One Calendar aims to be:
- π§ AI Powered β AI-first app that streamlines your scheduling.
- πΉ Interactive & Smooth β Drag, drop, right-click, and edit with ease.
- π Private & Local β Your data is yours. Export, backup, and control.
- βοΈ Cloud Sync β Optional sync via PostgreSQL.
- π Clerk Account β Easily login with third-party.
- π International β Automatically adapts to your language (English / δΈζ).
- π§± Customizable β Tailor themes, default view, and integrations.
- Frontend: Next.js 14, Tailwind CSS, shadcn/ui, TypeScript
- Auth: Clerk
- Storage: PostgreSQL
- Weather: OpenWeather API
- AI: Groq API
- Analytics: Vercel Analytics
- Deploy: Vercel
Required Versions:
# Clone the repo
git clone https://github.com/EvanTechDev/One-Calendar.git
cd One-Calendar
# Install dependencies
bun install
# Start the app
bun dev
Then visit http://localhost:3000
Copy .env.example
to .env
and fill in:
# Required
NEXT_PUBLIC_BASE_URL=http://localhost:3000
SALT=Backup-Salt
# Auth (Required)
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=your-clerk-publishable-key
CLERK_SECRET_KEY=your-clerk-secret
# Optional
GROQ_API_KEY=your-groq-api
OPENWEATHER_API_KEY=your-open-weather-api-key
# Optional, database
POSTGRES_URL=postgres://postgres:postgres@localhost:5432/onecalendar
# Optional, Cloudflare turnstile captcha
NEXT_PUBLIC_TURNSTILE_SITE_KEY=site-key
TURNSTILE_SECRET_KEY=secret-key
- SALT
Install Openssl and Use this command to generate a SALT
openssl rand -hex 16
Then copy it into .env
- PostgreSQL
Run this command if you installed docker
bun run db
And the env:
POSTGRES_URL=postgres://postgres:postgres@localhost:5432/onecalendar
- Cloudflare Turnstile
Go to Cloudflare dashboard
Login and click the Turnstile button
Click the Add Widget button
Name it and add a hostname, then choose Managed and click the Create button
Copy your SiteKey and SecretKey and fill it into .env
Why don't I just use Clerk's Captcha? Maybe there are bugs.
- Groq
Go to Groq Console and login
Click the Create API Key
Copy your API Key
Fill in the env file:
GROQ_API_KEY=your-api-key
You can report a bug or request a new feature on our feedback website
Brought to you by a small team of makers who love clean tools and open-source.
Check out our contributors β€οΈ
BTC: bc1qdhn6c7tlcaflzu3u5fva825l20k9eqnqag5xzj
This project wouldn't be possible without these awesome services:
This project is licensed under the GNU General Public License v3.0 (GPL-3.0).
See the LICENSE file for details.