Behind Recal
An overview of the Recal monorepo and how we operate on the edge for interested developers.
Behind the Scenes at Recal
Welcome to an inside look at Recal! If you're a developer curious about how we build and deploy our calendar integration platform, this guide is for you. We'll break down our tech stack, deployment strategy, and key components in a friendly, easy-to-understand way. Recal leverages edge computing to deliver fast, reliable services worldwide, and we'll highlight how that works.
Our Edge-First Approach
Recal is designed to run "on the edge" – meaning our services are distributed across global networks like Cloudflare and Vercel. This reduces latency by processing requests closer to users, rather than routing everything to a central server. For example:
- Our API runs on Cloudflare Workers, which execute code at edge locations worldwide.
- Our web apps are hosted on Vercel, which also supports edge functions for dynamic content.
This setup ensures snappy performance, whether you're syncing calendars in New York or Tokyo.
What's in the Monorepo?
Recal uses a monorepo (one big repo for everything) powered by Turborepo to manage multiple apps and packages efficiently. Here's a quick tour:
Apps
- API: Built with Elysia.js, a lightweight framework for TypeScript. It handles backend logic, database interactions (using Drizzle ORM), and deploys to Cloudflare Workers for edge execution.
- Web: A Next.js app on Vercel, including our main dashboard, landing page, and these docs (powered by Fumadocs).
Shared Packages
- UI Components: Reusable React components for consistent design.
- Configs: Shared ESLint, TypeScript, and Biome setups to keep code clean across projects.
Everything is written in TypeScript for type safety and better developer experience.
Deployments
We use GitHub Actions for automated deployments:
- Production: Pushes to
main
trigger deploys for API (Cloudflare) and Web/Docs (Vercel). - Staging: Similar workflows for our
staging
branch.
This ensures smooth, reliable updates with badges to monitor build status.
Tools We Love
- TypeScript: Catches errors early with static typing.
- Biome: Keeps our code consistent and bug-free.
- Bun: Our runtime of choice for fast development and testing (we prefer it over Node.js).
Learn More
Dive deeper with: