Viewday
Turn any Google Calendar or Notion database into a shareable, embeddable calendar view. Built and shipped solo in six weeks.
Role
Solo Engineer & PM
Timeline
6 weeks
Core Stack
Accelerated by





The Context
The Problem
Knowledge workers who live in Notion and Google Calendar have no single source of truth for their schedule. Notion's native calendar view is read-only and isolated, while Google Calendar's embed widget is visually dated and inflexible. Context-switching between these tools creates a significant productivity tax.
The Solution
Viewday authenticates with both Google and Notion via OAuth, normalizes events into a central Supabase cache, and surfaces data through high-fidelity, FullCalendar-powered embeds. It provides a clean separation of concerns: owners control access, and background sync via crons ensures data is always current.
System Architecture
A serverless monolith built on Next.js 15, utilizing Supabase for real-time persistence and Vercel for scheduled automation.
- →App Router Monorepo: Orchestrates 65 API route handlers, React 19 Server Components, and edge-compatible logic.
- →Custom OAuth 2.0 PKCE: Manual implementation using Node.js crypto and jose for multi-account Google/Notion linking, bypassing NextAuth complexity.
- →Idempotent Persistence: Supabase PostgreSQL with 18 tables; a hash-based diff strategy prevents redundant writes to large JSONB event payloads.
- →Hybrid Sync Pipeline: Google Calendar uses webhook push notifications with incremental syncTokens, while Notion uses a polling worker with exponential backoff.

Feature Deep-Dives
Google Calendar Push Notification Pipeline
A real-time sync engine that updates the event cache within seconds of a change in Google Calendar, without aggressive polling.
Technical Hurdles Overcome
- ▪Implemented a three-tier fallback for webhook channel lookup to handle environment drift and stale records, ensuring high reliability.
- ▪Engineered incremental sync logic using Google's syncToken mechanism to Authoritatively order events and handle token refresh inline.
LemonSqueezy Billing & Overage Engine
A robust billing system handling subscriptions, LTDs, and add-ons with automated entitlement enforcement.
Technical Hurdles Overcome
- ▪Built a raw-byte HMAC verification pipeline with timing-attack protection and Postgres-driven idempotency to stop duplicate webhook processing.
- ▪Created a soft-disable reconciliation logic that enforces plan caps by deactivating old embeds rather than deleting data, ensuring a frictionless user downgrade/upgrade path.
The AI Multiplier
I leveraged AI (Claude / Gemini) to accelerate boilerplate Route Handler scaffolding, repetitive Supabase query patterns, and first-draft TypeScript interface definitions. AI was most valuable as a pair programmer for surfacing edge cases like Google's syncToken 410 paths and LemonSqueezy's retry behavior, while human-led design focused on the three-tier webhook fallbacks and the PKCE implementation.
Analytics & Outcomes
A comprehensive telemetry overlay tracking system health and user engagement across the entire stack.
- //Custom Admin Feed: Aggregates data from 18 tables into a real-time activity dashboard with client-side derived growth stats.
- //Cron Observability: A dedicated audit trail logs every automated worker execution (renewal, pruning, syncing) with status and error capture.
- //Embed Impression Tracking: Service-role logic captures anonymized landing stats for every public embed to enable future per-workspace reporting.

Discover More
Explore other high-performance technical case studies.