Skip to main content

Jan 2026 - Present

Tiny Time Keeper

Multi-Tenant Employee Time Tracking

2 days

from zero to production

The Problem

The agency was paying four hundred dollars a month for a time tracking system that was buggy, slow, and indifferent to their feature requests. Staff still clocked in on paper. Admins still calculated hours in spreadsheets. Payroll was a weekly ordeal that no one looked forward to.

They needed it yesterday. I built it in two days.

The Solution

Employees walk in and tap their PIN on a wall-mounted iPad. That’s it — they’re clocked in. The admin dashboard updates instantly. Managers see who’s working, who’s late, and who didn’t show up, all from their phone, in real time.

Usage grew 2.4x in fourteen weeks — thirty-two shifts per week to seventy-seven — because the system simply works. Timesheets generate themselves. Managers approve with one tap. Payroll exports match the agency’s existing spreadsheet format. Zero retraining. Zero resistance.

Built for multi-tenancy from day one. Any business can sign up, create an organization, and onboard their team. Stripe handles the billing lifecycle end to end. Infrastructure cost: zero dollars a month. The entire system runs on Vercel’s free tier.

Production Metrics

5,692

Hours Tracked

33

Active Employees

742

Shifts Logged

537

Automated Tests

97%

Deploy Success Rate

48

Features Shipped

$0/mo

Infrastructure Cost

$400/mo

Enterprise Cost Replaced

Architecture Decisions

Real-Time with Convex

749 runtime validators, real-time WebSocket subscriptions, and automated cron jobs. The live attendance board updates instantly when an employee clocks in — no polling, no refresh.

iPad Kiosk with Device Authorization

15 authorized devices. Unauthorized devices are blocked before the PIN pad even appears. Each PIN attempt is logged. 111 blocked unauthorized attempts caught in production.

Automated Alert System

Missing punch detection runs every 15 minutes. Late arrival alerts, no-show alerts, overtime warnings. 422 auto-generated alerts in 14 weeks of production use.

Full Stripe Lifecycle

Subscription billing with trial periods, grace periods, past-due handling, cancellation, and org freezing. Webhooks handle all state transitions server-side.

Tech Stack

Next.js 16React 19ConvexBetter AuthStripeResendPlaywrightVitestFramer MotionVercel

What I Learned

Speed matters more than perfection — when someone needs a working system, they don’t need your ideal architecture. I shipped in two days. The architecture evolved over fourteen weeks of real usage. But the initial sprint proved the only thing that matters: it works, and no one has lost a single hour of data.

Real-time updates changed how managers interact with time tracking entirely. They went from checking attendance once a day to monitoring it continuously — not because I told them to, but because the live board is simply more useful than a report.

Five hundred thirty-seven tests on a time tracking app might seem excessive. It isn’t. Payroll errors cost real money and real trust. Every edge case — timezone transitions, overnight shifts, missed punches, overlapping events — is tested. Because the one time your system miscalculates someone’s hours is the last time they trust it.