con un clic
turborepo-workflow
// Manage turborepo monorepo development workflow including dev servers, builds, linting, and package management. Use when running dev, build, lint, deploy, or managing workspace packages in this pnpm + turbo monorepo.
// Manage turborepo monorepo development workflow including dev servers, builds, linting, and package management. Use when running dev, build, lint, deploy, or managing workspace packages in this pnpm + turbo monorepo.
Create and modify integration channels (messenger, whatsapp, zalo, webchat, etc.) for the chatbot platform. Use when adding a new channel integration, modifying webhook handlers, working with message send/receive, or connecting external platforms.
Scaffold new features following project conventions for the builder app. Use when creating a new feature, page, component, server action, query, or adding a new section to the web application.
Create and modify oRPC API routers, procedures, and middleware for the builder app. Use when adding API endpoints, creating routers, defining procedures, working with oRPC middleware, or building OpenAPI routes.
Create and manage background workers, BullMQ queues, Kafka consumers, and scheduled jobs. Use when adding new workers, creating queues, defining job types, building scheduled tasks, or working with async processing.
Work with Drizzle ORM database schema, migrations, relations, and queries in PostgreSQL. Use when creating tables, modifying schema, writing migrations, defining relations, or querying the database.
| name | turborepo-workflow |
| description | Manage turborepo monorepo development workflow including dev servers, builds, linting, and package management. Use when running dev, build, lint, deploy, or managing workspace packages in this pnpm + turbo monorepo. |
Monorepo managed by pnpm workspaces + Turborepo. Node >= 24, TypeScript 5.
apps/
builder/ → Next.js 16 web UI (port 3123)
worker/ → Background workers (BullMQ, Kafka)
realtime/ → Realtime server (port 1999)
cli/ → CLI tool (yargs)
mcp-server/ → MCP server
packages/
database/ → Drizzle ORM + PostgreSQL
ui/ → Shared UI (Tailwind 4, Radix, Dice UI)
utils/ → Shared utilities
redis/ → Redis/Dragonfly client
kafka/ → Kafka client
analytics/ → Analytics services
worker-config/ → BullMQ queues, job types
sdk/ → Types, integration contracts
ai/ → AI model/provider config
events/ → Domain events
flow-config/ → Flow step definitions
mail/ → Email templates
public-apis/ → Public API surface
...
integrations/
messenger/ → Facebook Messenger
whatsapp/ → WhatsApp Business
zalo/ → Zalo OA
webchat/ → In-app webchat
chatbotx/ → Internal chatbot
google-sheets/ → Google Sheets
openai/ → OpenAI integration
# Start all apps in dev mode
pnpm dev
# Start specific app
pnpm --filter builder dev
pnpm --filter worker dev
# Start with HTTPS
pnpm --filter builder https
# Build all packages (respects turbo dependency graph)
pnpm build
# Lint (uses Biome via Ultracite)
pnpm lint
pnpm fix # auto-fix
# Type checking
pnpm --filter builder check-types
# Full setup (migrate + seed)
pnpm --filter database db:setup
# Migration only
pnpm --filter database db:migrate
# Create new migration
pnpm --filter database make:migration <name>
# Studio (GUI)
pnpm --filter database db:studio
# Check circular dependencies
pnpm check:circular
# Check unused exports (knip)
pnpm check:unused
pnpm add <pkg> --filter <workspace> to add dependencies to specific workspace@chatbotx.io/* scope@chatbotx.io/database/client, @chatbotx.io/ui/button, etc.package.json exports fieldWhen creating a new package (e.g. integrations/<channel>/):
package.json with "name": "@chatbotx.io/<name>""@chatbotx.io/<name>": "workspace:*" to consumer package.json dependenciesCI=true pnpm install --no-frozen-lockfile to link the package
CI=true to avoid TTY confirmation prompt in non-interactive shellsCannot find moduleDefined in turbo.json:
build depends on ^build (builds dependencies first), outputs .next/**, dist/**dev, https, packages:dev are persistent (long-running)db:migrate, db:setup, db:reset, db:studio are non-cached.env file is loaded by apps via dotenv -e ../../.env@t3-oss/env-core + Zod in keys.ts filesSKIP_ENV_CHECK=true to bypass validation during buildlefthook.yml)