Building an Open-Source Google Calendar Alternative with AI: Weekday
The Problem
Let’s face it: Google Calendar is fine, but it’s not perfect. Maybe you want more customization. Maybe you don’t want to hand over your entire life to Google. Or maybe you just want a calendar that doesn’t feel like a relic from 2010. Weekday aims to fix those problems by giving you a modern, open-source alternative with built-in AI smarts. Think Google Calendar meets Notion, but without handing over your data to Big Tech.
What This Does
At its core, weekday is a monorepo built with Next.js, TypeScript, and a bunch of other modern tools like tRPC for APIs, Drizzle ORM for database interactions, and Tailwind for styling. The app lives in apps/web/, while utilities like auth, api, and db live in packages/. This structure is powered by Turborepo to keep things modular and maintainable.
The meat of the calendar functionality is in apps/web/components/event-calendar/. Everything from draggable events (draggable-event.tsx) to different views like month-view.tsx and week-view.tsx is in there. Need to hook into the calendar? There’s a hooks/index.ts file ready for you.
AI features? Yep, it’s got those too. Check out apps/web/components/ai/ for things like actions.tsx (presumably for AI-driven suggestions) and response.tsx (likely for handling AI-generated responses). It even has a chat folder with tools for creating, updating, and deleting events, which could make managing your schedule feel less like a chore.
Don’t worry, backend folks, there’s something for you too. The API lives in packages/api/, with routes for accounts (routers/account.ts) and calendar management (routers/calendar.ts). It uses PostgreSQL (configured in packages/db/) and Drizzle ORM, which is a nice touch for database abstraction without adding the bloat of something like Prisma.
Real-World Use
Let’s say you’re a busy freelancer juggling multiple clients and projects. You could use Weekday to manage your schedule, but what makes it shine is its AI features. Need to find free slots for a meeting? The get-free-slots.tsx tool in apps/web/components/chat/tools/ can do the heavy lifting. Want to auto-suggest meeting times based on your availability? That’s where the AI magic happens, likely leveraging APIs like OpenAI or Anthropic (configured in .env).
Here’s a quick example of how easy it is to set up:
Boom. You’re up and running with a fully-featured calendar app that you can self-host and customize.
The Bottom Line
Weekday is ambitious. It’s modern, feature-packed, and has a clean codebase that’s easy to navigate. But let’s be real: with zero stars and being a fork, it’s got some work to do in terms of adoption. Still, if you’re tired of the usual suspects and want to tinker with a new approach to calendar management, this is worth a look. Just be ready to get your hands dirty with the setup.