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.

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)

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

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.