Timothy Solomon
infrastructure

A Turborepo-powered monorepo consolidating 5 websites with shared UI components and a custom content engine. The infrastructure that powers this entire portfolio.


Overview

This project involved migrating multiple standalone Next.js applications into a unified monorepo architecture. The goal was to eliminate duplication, enable code sharing, and streamline development across all properties.

The result is a development environment where changes to shared components propagate instantly across all sites, deployments are coordinated, and the entire ecosystem can be managed from a single codebase.


The Problem

Managing multiple websites independently creates compounding problems:

  • Duplicated code across projects
  • Inconsistent styling and behavior
  • Deployment complexity with multiple CI/CD pipelines
  • Version drift between shared dependencies
  • Context switching when working across projects

Each site was a separate repo, separate deployment, separate set of dependencies. Making a consistent change across all properties required coordinating multiple PRs.


The Solution

Turborepo Architecture

The monorepo uses Turborepo for build orchestration. Each site is a separate package, but they share common infrastructure:

/packages
  /ui          → Shared React components
  /content-engine → Content management system
  /config      → Shared configuration
/sites
  /timothy-solomon-dot-com
  /hire-timothy-solomon-dot-com
  /ftl-marketing-dot-com
  /oblio-dot-app
  /victory-initiative-dot-com

Shared UI Package

A component library used across all sites:

  • SiteHeader and SiteFooter with site-aware theming
  • Button, Card, and other primitives
  • Typography and spacing utilities
  • Dark mode support

Content Engine

A custom content management system that:

  • Parses Markdown with frontmatter
  • Generates type-safe content APIs
  • Supports multiple content types (posts, projects, pages)
  • Enables cross-site content sharing

Technical Stack

  • Monorepo: Turborepo with pnpm workspaces
  • Framework: Next.js 14 (App Router)
  • Language: TypeScript throughout
  • Styling: Tailwind CSS with shared config
  • Content: Markdown + custom parsing engine
  • Deployment: Vercel with per-site configuration
  • CI/CD: GitHub Actions with Turborepo caching

Key Features

Parallel Builds

Turborepo runs builds in parallel with intelligent caching. A full rebuild of all 5 sites takes under 2 minutes.

Incremental Adoption

Sites can opt into shared components gradually. Legacy code doesn't need to be rewritten to benefit from the infrastructure.

Unified Theming

Each site has its own brand colors and typography, but they share the same theming system. Changes to the system affect all sites consistently.

Content Portability

Content written for one site can be referenced or displayed on another. The same project descriptions power portfolio pages across multiple properties.


Results

  • 90% reduction in duplicated code
  • 5x faster feature development for cross-site changes
  • Single PR to update all sites simultaneously
  • Unified CI/CD with shared GitHub Actions
  • Consistent UX across all properties

My Role

Architect and sole developer. I designed the monorepo structure, built the shared packages, migrated all existing sites, and continue to maintain the infrastructure.

This project reflects my belief that good infrastructure compounds. The upfront investment in architecture pays dividends every time I ship a feature.

View on GitHub →