• Home
  • Projects
  • Blog
Contact
All projects

May 2026 - Aug 2026

Client Task Tracker

Multi-tenant task tracking for Tsan Technologies

A multi-tenant task tracker with a tenant-scoped data access layer, fail-closed RBAC and fast fuzzy search on PostgreSQL.

  • Next.js
  • Supabase
  • Vercel
  • MCP
Live site

What I built

  • Architected a multi-tenant data access layer using a reusable database abstraction with 4 tenant-scoping primitives, strictly enforcing isolation and authorization boundaries across 8 relational tables.
  • Engineered robust authentication & RBAC via NextAuth, incorporating fail-closed security middleware, granular API access controls, forced password-reset flows, bcrypt hashing, and audit logging for sensitive role mutations.
  • Optimized PostgreSQL query performance by deploying 6 pg_trgm GIN indexes for fast fuzzy search and implementing cursor-based pagination (100 records/page) to minimize memory overhead and payload size.
  • Managed schema evolution and continuous integration across 15 additive SQL migrations via Supabase CLI, implementing environment-gated Vercel deployment pipelines for zero-downtime schema updates.
  • Enforced end-to-end data integrity and contract testing using Zod schema validation alongside automated regression checklists covering auth flows, RBAC enforcement, payload verification, and REST APIs.

Highlights

  • 4 tenant-scoping primitives enforcing isolation across 8 relational tables
  • 6 pg_trgm GIN indexes for fuzzy search
  • Cursor-based pagination at 100 records per page
  • 15 additive SQL migrations via Supabase CLI

Product screens

Select an image to view it at full size in a new tab.

CGrid tasks page with status filters and client tasks arranged in a card grid.
Task management workspace with status filters, assignee controls, and grid-based client task cards.
CGrid dashboard with task metrics, customer records, dues, attendance, and recent tasks.
Operations dashboard bringing task, customer, payment, and attendance signals into one view.