Skip to main content
WorkProjects

Tiny Time Keeper

Replaced $400/mo WorkEasy — built in 2 days

stable
View raw

Multi-tenant employee time tracking SaaS. Staff clock in and out via a shared iPad kiosk using 4-digit PINs. Admins manage schedules, approve timesheets, track overtime, and generate payroll reports through a real-time dashboard.

Built solo in two days as a replacement for WorkEasy — enterprise time tracking software the client was paying ~$400/month for, bloated with features they never used and with unresponsive support. Staff started using the replacement on day one without training.

Why it exists

An early intervention therapy agency was paying ~$400/month for WorkEasy. It was buggy. Support was unresponsive. Staff couldn't figure out the interface and had to call support to do basic things.

The purpose-built replacement does exactly what they need — nothing more, nothing less. Client savings: ~$400/month (WorkEasy eliminated, replaced with $0/month infrastructure on Convex + Vercel free tiers). Maintenance and feature shipping have continued since launch.

Real-world production metrics

MetricValue
Employee-hours tracked5,692
Clock events processed2,743
Employee-shifts worked742
Active employees managed33 + 5 admins
Concurrent daily users~13 avg, 20 peak
Weeks in production14
Auto-generated alerts422 (207 missing punch, 101 overtime, 86 late)
Failed PIN attempts intercepted111
Admin audit trail entries559
Out-of-shift approvals256
Timesheets approved86
Kiosk devices registered15 across multiple locations
Growth trend32 → 77 shifts/week (2.4x in 14 weeks)

Engineering metrics

MetricValue
Lines of code53,664
React components64 custom + 28 shadcn/ui
Backend functions117 (Convex mutations, queries, actions, crons)
Database tables17 with 75 indexes
Live documents in prod5,845+
Pages / routes26 across 4 portals (admin, kiosk, employee, auth)
Automated tests537 (230 unit Vitest + 307 E2E Playwright)
Vercel deployments159 (97% success, ~35s avg build)
Commits165 over 84 days
Features shipped48 features + 42 fixes in 84 days
Deploy frequency~1.9 deploys/day
Convex validators749 runtime type-checks
Monthly infra cost$0 (Convex + Vercel free tiers)

Architecture

Browser (Next.js 16 / React 19)
    |
    v
Convex Cloud (real-time database + serverless functions)
    |
    +-- Better Auth (email/password, TOTP 2FA, organizations)
    +-- Stripe (subscription billing with webhooks)
    +-- Resend (transactional email)
    |
Vercel (hosting, edge network)

Key features

  • Kiosk mode — Touch-friendly PIN pad (80×80px buttons) optimized for shared iPad. Device authorization blocks unauthorized hardware before PIN entry. Real-time clock display with organization branding. Automatic punch-type detection (clock in vs. clock out).
  • Admin dashboard — Real-time "who's working" status with live updates. Alert system: late arrivals, no-shows, missing punches, overtime warnings. Command palette (⌘K) for global search.
  • Timesheet management — Auto-generated weekly pay periods (Friday–Thursday). Approve / reject individual timesheets. Overtime calculation and approval workflow. Excel / CSV export for payroll.
  • Employee management — Full CRUD with status lifecycle (active, pending, inactive, seasonal, terminated). Schedule assignment with shift templates. Pay rate tracking. Employee self-service portal for checking hours and estimated pay.
  • Reports — Team on-time rate with per-employee breakdown. Payroll export. Configurable date ranges. Good standing vs. needs-attention categorization.
  • Subscription billing — Stripe-powered lifecycle (trial → active → past_due → canceled → frozen → deleted). 3-day grace period for expired subscriptions on kiosk. Grandfathered free tier for early adopters.
  • Six automated cron jobs — Missing-punch detection every 15 minutes. No-show detection at 8:30 and 9:00 AM weekdays. Weekly timesheet generation Friday 6 PM. Old alert cleanup Sunday 2 AM. Trial expiration checks daily 3 AM. Subscription lifecycle management daily.
  • Multi-tenant architecture — Organization-level data isolation. Role-based access (owner, admin, employee). Cross-org switching for users in multiple orgs. Row-level security via Convex tenant queries.

What makes it stand out

  • Two days from brief to production. Solo, while finishing a CS degree. Zero training required for staff on day one.
  • 14 weeks of real production use — 5,692 employee-hours across 742 shifts, 2,743 clock events, zero data loss.
  • 2.4x usage growth — 32 to 77 shifts per week organically, with no marketing.
  • 537 tests covering admin flows, kiosk flows, auth flows, billing, multi-tenant isolation, and responsive viewports (mobile, tablet, desktop).
  • $0/month infrastructure — Convex + Vercel free tiers support 33 daily employees, 15 kiosks, real-time WebSocket subscriptions.

Stack

LayerTechnology
FrameworkNext.js 16 (App Router), React 19, TypeScript 5
BackendConvex (real-time database + serverless functions)
AuthBetter Auth 1.5.6 (email/password, TOTP 2FA, multi-org)
BillingStripe (subscriptions with webhook lifecycle)
EmailResend (transactional templates)
UITailwind CSS 4, shadcn/ui, Framer Motion
TestingPlaywright E2E (mobile/tablet/desktop), Vitest
DeploymentVercel + Convex Cloud, atomic deploys