Plant a bun-first Turborepo. Grow the apps you actually want.

groot runs each framework's official generator β€” create-next-app, sv, create-expo-app, create-hono, Convex β€” and stitches the output into one coherent bun workspace. No vendored templates. Nothing to rot.

$ bun create groot my-app β—† Web app? β€Ί Next.js β—† Mobile app? β€Ί Expo β—† API? β€Ί Elysia β—† Backend? β€Ί Convex β—‡ Planting turborepo trunk… β—‡ Growing apps/web (Next.js)… β—‡ Growing apps/mobile (Expo)… β—‡ Writing apps/api (elysia)… β—‡ Writing packages/backend (convex)… β—‡ Stitching workspace… β—‡ Installing workspace (bun install)… 🌳 I am groot β€” your workspace is planted.

One command

Bun β‰₯ 1.2. Or grab the standalone binary β€” no Bun needed to run it.

$ bun create groot my-app # or the standalone binary (checksum-verified installer) $ curl -fsSL https://raw.githubusercontent.com/bloxy-studios/groot/main/install.sh | bash

The matrix

Pick per slot. Every combination arrives wired: workspace links, deconflicted ports, one lockfile.

🌐 Web

Next.js Β· SvelteKit

apps/web Β· :3000 / :5173
πŸ“± Mobile

Expo

apps/mobile Β· :8081
⚑ API

Elysia Β· Hono

apps/api Β· :3001
πŸ—„οΈ Backend

Convex

packages/backend Β· cloud dev

How it works

A strict pipeline β€” every stage succeeds completely or fails precisely. Architecture β†’

1

Generate

Official generators, pinned majors, silence flags. Your day-1 output is today's framework β€” not a template frozen last spring.

2

Stitch

Package names, workspace links, dev ports, turbo outputs, env plumbing, one root lockfile β€” and a groot.json manifest as memory.

3

Verify

Structure checks, real install, git init. Later: groot doctor re-checks health any time, with suggested fixes.

Then keep growing

groot add hono

Grow another scaffold into an existing workspace β€” occupancy-checked, cross-wired by the same idempotent stitch, rolled back surgically on failure.

groot doctor --json

Health checks with suggested fixes: ports, lockfiles, manifests, per-framework invariants. Exit 0 or 5 β€” drops straight into CI.

groot init --preset ../flagship

Replicate any workspace's shape from its groot.json. Generator pins always come from the CLI you run β€” presets never freeze upstream.

Built for CI and agents

Scriptability is a first-class feature, tested at the process level. Recipes β†’

$ groot add elysia --dry-run --json | jq '.scaffolds[-1]' { "slot": "api", "framework": "elysia", "path": "apps/api", … } # never hangs on a prompt Β· pure-JSON stdout Β· spec'd exit codes

Held to a higher bar

MIT licensed Every PR: CI green + Greptile 5/5 SBOM + Sigstore attestations on releases Weekly upstream-drift watch Checksum-verified installers Semver stability contract