ZotMeet · Shipped 2026

Find the best time and place to meet

A full-stack scheduler for UC Irvine — everyone paints their availability onto a shared grid, a live heatmap surfaces the best overlapping slot, and ZotMeet books a real campus study room for it.

ZotMeet app preview

Role

Lead Product + Software Engineer

Timeline

Oct. 2025 - Present (9 months)

Team

8 Engineers · 2 Designers · ICSSC

Stack

TypeScript · Next.js 16 · React 19 · Postgres · AWS

Overview

A modern When2Meet, rebuilt for how UCI students actually meet

ZotMeet is a full-stack meeting-scheduling web app (a modern When2Meet / Doodle) built for UC Irvine students. Users create a meeting, everyone “paints” their availability onto a shared time grid, and the app surfaces the best overlapping slot via a live availability heatmap.

It layers in UCI-specific value: syncing your Google Calendar onto the grid to spot conflicts, and recommending / booking real campus study rooms for the chosen time.

It ships as one codebase across three surfaces — a responsive web app, an installable PWA, and a native iOS App Store build — and is developed under UCI's ICS Student Council (ICSSC)

ZotMeet meeting availability grid
Room Recommendations based on best available time slots

The Problem

Coordinating a time — and finding a room — was near impossible

As a UCI student who loves coordinating study hangouts, I noticed how finding study rooms on campus and lining up a good time to meet was near impossible.

Existing tools like When2Meet and Doodle solve the scheduling half, but nothing connects that chosen time to your real calendar or to an actual campus room. So people bounced between three apps and a group chat — and still ended up without a place to sit.

Thus, ZotMeet was born.

Tech Stack

TypeScript end-to-end, from Server Actions to the paint grid

Language & Framework

  • TypeScript 5.6 (strict)
  • Next.js 16 (App Router)
  • React 19

Backend & Data

  • Next.js Server Actions — no separate API server, with a clean command/query split (writes vs. reads)
  • PostgreSQL 16 + Drizzle ORM (17 versioned migrations)
  • Integrations: UCI AnteaterAPI (study rooms) + Google Calendar API

Authentication

  • Custom session auth — SHA-256 hashed tokens, 30-day sliding expiry
  • OAuth via Arctic: Google / OIDC + Sign in with Apple
  • Argon2 password hashing

UI & State

  • Hybrid Material UI v7 + Tailwind CSS + shadcn / Radix primitives
  • Zustand (state) · React Hook Form + Zod (typed forms)
  • nuqs (URL state) · date-fns-tz (timezone-safe) · next-themes (dark mode)

Tooling & Quality

  • pnpm workspace · Biome (lint + format)
  • Husky + lint-staged + commitlint
  • Enforced Conventional Commits

Deployment & Infrastructure

Serverless on AWS, shipped by a zero-touch CI/CD pipeline

Infrastructure as Code

  • SST v3 → AWS (Lambda + CloudFront + Route 53), region us-west-1
  • AWS SES for transactional email

CI / CD

  • GitHub Actions, multi-stage (staging + production)
  • Auto-runs DB migrations, then deploys on merge to main

Cross-platform packaging

  • Dockerized local Postgres for development
  • PWA + iOS via PWA Builder with a native Swift WKWebView wrapper + push notifications
ZotMeet Deployment Architecture
ZotMeet Deployment Architecture

Impact

A production app serving the UCI community

3

Platforms shipped

1

Shared codebase

11K+

Active Users

Live

zotmeet.com

  • Shipped a production application serving the UC Irvine student community under an official campus organization (ICSSC), live at zotmeet.com.
  • Delivered one codebase to three platforms (web, PWA, and iOS App Store), maximizing reach without triplicating engineering effort.
  • Built on a modern, cost-efficient serverless architecture (Next.js Server Actions + AWS Lambda / CloudFront via SST) that scales to zero and requires no server management.
  • Automated the full release pipeline — CI/CD with staged deploys and zero-touch database migrations — enabling safe, frequent shipping.
  • Integrated real university infrastructure (UCI AnteaterAPI room data + Google Calendar) to solve an actual student pain point, not a toy demo.