TNTStack
Architecture

Overview

Monorepo layout, workspace graph, and Turborepo pipeline.

The root monorepo. pnpm workspaces with Turborepo orchestration, two apps and six packages.

Directory Structure

pnpm-workspace.yaml
packages:
  - "apps/*"
  - "packages/*"

Internal packages reference each other with "workspace:*" in package.json. pnpm resolves these to the local workspace copy at install time, so changes are picked up immediately without publishing.

turbo.json
pnpm-workspace.yaml
package.json
tsconfig.json

Dependency Graph

Solid arrows are runtime dependencies. Dashed arrows are dev/tooling dependencies (every package uses the shared ESLint and TypeScript configs). The cli package is independent and published to npm separately. core depends on ui for design system primitives.

Turborepo Pipeline

turbo.json
{
  "$schema": "https://turbo.build/schema.json",
  "ui": "tui",
  "tasks": {
    "build": {
      "dependsOn": ["^build"],
      "inputs": ["$TURBO_DEFAULT$", ".env*"],
      "outputs": [".next/**", "!.next/cache/**"]
    },
    "lint": {
      "dependsOn": ["^lint"]
    },
    "check-types": {
      "dependsOn": ["^check-types"]
    },
    "dev": {
      "cache": false,
      "persistent": true
    },
    "clean": {
      "cache": false
    }
  }
}
TaskBehavior
buildBuilds dependencies first (^build), caches .next output
devParallel dev servers, no caching
lintLints dependency packages first, cacheable
check-typesType-checks dependency packages first, cacheable
cleanRemoves build artifacts, not cached

Root Files

FilePurpose
turbo.jsonTask pipeline, caching rules
pnpm-workspace.yamlWorkspace declarations
package.jsonRoot scripts, devDependencies, engine constraints
tsconfig.jsonTypeScript project references
eslint.config.mjsRoot ESLint flat config
release-please-config.jsonVersioning and changelog automation
.release-please-manifest.jsonCurrent version for each tracked package

On this page