Monorepo starter based on pnpm with Cloudflare, Hono, React, Vite and Tailwind πβ

A minimal, production-oriented monorepo starter built on pnpm workspaces with Turborepo, Cloudflare Workers, Hono, React (Vite), Tailwind CSS v4, and TanStack Router/Query. AI-ready, designed for edge deployment, and structured for production projects that scale.
Architecture Overview
Monorepo Structure
Starter apps today (worker-api, front-app). Prefixes below describe how the repo grows.
monorepo/
βββ apps/ # Workers and frontends
β βββ worker-api/ # REST API gateway
β βββ front-app/ # React SPA (Vite + TanStack)
βββ packages/ # Shared @repo/* packages
β βββ dtos-common/ # Zod wire contracts (api / rpc / queue / webhook)
β βββ enums-common/ # Shared constrained string values (`as const`)
β βββ typescript-config/ # TypeScript configuration presets
βββ make/ # Shared Makefile fragments (see make/README.md)
βββ hooks/ # AI agent hooks (not Husky - see hooks/README.md)
βββ package.json # Root package configuration
βββ pnpm-workspace.yaml # Workspace configuration
βββ turbo.json # Turborepo configuration
βββ tsconfig.json # Root TypeScript configuration
Architecture Components
The monorepo is organized into two main categories: Backend Services and Frontend Applications, plus Shared Packages for common functionality.
flowchart TB
subgraph entry [Public entry]
direction LR
Front["front-* :517x"]
Ext["External providers"]
McpClients["MCP clients"]
end
subgraph publicWorkers [Public Workers]
direction LR
Gateway["worker-api :8700"]
Webhook["webhook-* :876x"]
Mcp["mcp-* :878x"]
end
subgraph privateWorkers [Private Workers]
direction LR
Biz["worker-* (RPC only)"]
Queue["queue-*"]
end
subgraph shared [Shared packages]
direction LR
Enums["@repo/enums-common"]
DTOs["@repo/dtos-common"]
Enums --> DTOs
end
Front --> Gateway
Ext --> Webhook
McpClients --> Mcp
Gateway --> Biz
Webhook --> Biz
Mcp --> Biz
Gateway --> Queue
Webhook --> Queue
Biz --> Queue
Front -.-> shared
publicWorkers -.-> shared
privateWorkers -.-> shared