← All work
Product · 2019–21

Multi-Tenant Time-Tracking SaaS Backend

Overview

An internal multi-tenant time-tracking SaaS (“HuskyTracker”) built on Ruby on Rails, supporting per-organization data isolation, subscription billing, scheduled reporting and role-based access.

The Challenge

Running a hosted time-tracking product for many client organizations requires strict tenant data isolation, recurring subscription billing, invitations and permissions, plus reliable background processing for notifications and scheduled jobs, all maintainable from a single codebase.

What We Built

A Rails 5.2 application using the Apartment gem for PostgreSQL schema-per-tenant multi-tenancy. Authentication and onboarding run on Devise and Devise Invitable, with Pundit policies for authorization. Subscription billing integrates Chargebee. Background work runs on Resque with Resque Scheduler and an active_scheduler/notification_schedule.yml driven cadence; a mounted Sinatra/Resque dashboard exposes queues. The app uses pg_search, paranoia (soft-deletes), friendly_id, paperclip attachments and will_paginate, with a Webpacker-bundled front end. Observability is wired through Rollbar and Logstash/remote-syslog logging, and deployment via Capistrano.

Technologies & Approach

Mature Rails monolith patterns: Devise + Pundit for identity and policy, Apartment for tenancy, Chargebee for billing, Resque for async/scheduled jobs, and structured logging for production observability.

Outcome / Impact

A full-featured, production-oriented SaaS backend demonstrating the studio’s ability to ship multi-tenant, billing-enabled web products with proper auth, background processing and observability.

Capabilities Demonstrated

  • Schema-per-tenant multi-tenancy on PostgreSQL
  • Subscription billing integration (Chargebee)
  • Role-based auth, invitations and soft-deletes
  • Background jobs and scheduled reporting (Resque)
  • Production observability and automated deployment
More work See all →