All projects

Case study

trussOS

A multi-tenant headless CMS and business dashboard for local service companies: a block-based page editor, leads, bookings and customers, roof pricing, and custom domains with automatic TLS.

API modules
37
database tables
40
of 366 commits
97%
apps: tenant dashboard, system admin
2
Role
Lead full-stack developer
Year
2025–2026
Client
tarunSoft
Stack
NestJSDrizzlePostgreSQLNext.jsReactTanStack QueryTailwind CSSTurborepoDockerCaddyMCP
trussOS screenshot

Overview

trussOS is a content management system and business dashboard for local service businesses, such as roofers, detailers and contractors. One installation serves many companies. Each one gets:

  • its own website content, edited with blocks
  • its own leads, bookings and customers
  • its own domain, with HTTPS set up automatically

I built it at tarunSoft as the lead and almost sole developer: 354 of its 366 commits are mine. It powers client sites such as Black Knight Roofing.

The tenant dashboard: today’s bookings, revenue, action items and the week ahead

The challenge

  • Many businesses, one codebase. Every company needs its own content, users, domain and settings, and must never see another company’s data.
  • Owners aren’t developers. A roofer has to update services, projects and reviews without breaking the site’s design.
  • Websites are only half the job. The same owner also handles quote requests, appointments and customers, and shouldn’t need a separate CRM for that.
  • Custom domains at scale. Each site runs on the client’s own domain, with valid certificates and no manual setup per client.

The solution

A block-based page editor

Pages are built from pre-designed blocks (hero, gallery, comparison slider, pricing, FAQ), so owners can change content but not break the design. A dedicated SEO tab handles titles, descriptions and social images per page. SEO assistance and instant indexing help new pages get found faster.

Collections for every kind of content

Services, service areas, projects with before-and-after photos, case studies, testimonials, FAQs and blog posts each have their own editor. Media uploads are processed and stored in S3-compatible storage.

The business side

  • Leads from every form on the site, flowing into one inbox
  • Customers with their history
  • Bookings, with a calendar and a dashboard of today’s appointments, revenue and items that need action

Built for roofers

trussOS includes roof pricing with versioned price settings, and an embeddable roof cost calculator widget that any client site can drop in.

Two apps

  • a tenant dashboard for each business
  • a system admin app where the agency creates tenants, chooses which modules each one gets, and manages templates and global settings

AI tools

trussOS has AI agents and an MCP server, so AI assistants can read and manage a tenant’s content through a controlled interface.

Under the hood

  • Turborepo monorepo with pnpm.
  • NestJS 11 API organised into 37 feature modules, using Drizzle ORM on PostgreSQL 16 with 40 tables.
  • Next.js 16 for both apps, with React 19, TanStack Query and Tailwind CSS v4.
  • Tenant isolation everywhere: auth, data access and media are scoped to the tenant.
  • Custom domains with on-demand TLS. Caddy issues a certificate the first time a domain is visited, but only after asking the API whether that domain belongs to a tenant. This stops anyone pointing a random domain at the server.
  • Audit logs and monitoring for admin actions.
  • Deployment with Docker Compose: Postgres, the API, both apps, database backups and Caddy.

Key features

  • Multi-tenant: one installation, many businesses, each fully isolated
  • Block-based page editor with an SEO tab per page
  • Services, service areas, projects, case studies, testimonials, FAQs and blogs
  • Leads, customers and bookings, with a daily operations dashboard
  • Roof pricing and an embeddable roof cost calculator
  • Custom domains with automatic HTTPS
  • System admin for tenants, modules and templates
  • AI agents and an MCP server
  • Instant indexing and SEO assistance