Title: [Feature] TDK CLI integration: run a TanStack app as a local TDK resource · Issue #520 · TanStack/cli · GitHub
Open Graph Title: [Feature] TDK CLI integration: run a TanStack app as a local TDK resource · Issue #520 · TanStack/cli
X Title: [Feature] TDK CLI integration: run a TanStack app as a local TDK resource · Issue #520 · TanStack/cli
Description: Which project does this relate to? Create Tanstack App Describe the feature 1. TanStack/cli issue Project: Create Tanstack App Labels: enhancement Describe the feature Add a documented, optional way to use a TanStack CLI app inside a TDK...
Open Graph Description: Which project does this relate to? Create Tanstack App Describe the feature 1. TanStack/cli issue Project: Create Tanstack App Labels: enhancement Describe the feature Add a documented, optional wa...
X Description: Which project does this relate to? Create Tanstack App Describe the feature 1. TanStack/cli issue Project: Create Tanstack App Labels: enhancement Describe the feature Add a documented, optional wa...
Opengraph URL: https://github.com/TanStack/cli/issues/520
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"[Feature] TDK CLI integration: run a TanStack app as a local TDK resource","articleBody":"### Which project does this relate to?\n\nCreate Tanstack App\n\n### Describe the feature\n\n## 1. TanStack/cli issue\n\n**Project:** Create Tanstack App\n\n**Labels:** enhancement\n\n### Describe the feature\n\nAdd a documented, optional way to use a TanStack CLI app inside a [TDK CLI](https://github.com/tdk-landscape/tdk-cli-core) landscape, and a small add-on that makes that handoff explicit.\n\nTDK CLI (Tilt Development Kit, `@tdk-landscape/tdk-cli-core`) is a local multi-service runner. It is not a deploy and not a Compose file. Each service has a `service.json`. `tdk up \u003cstack>` starts that slice with Docker + Tilt, health-checked boot order, and `*.localhost` routing. Frontends today are Vite SPAs (`react` default, `vue` optional). TDK owns the generated Vite config (`.autogenerated/vite.config.frontend.autogenerated.ts`) and does not want a root `vite.config.ts` from the framework provider.\n\nTanStack CLI and TDK CLI solve different problems:\n\n| Tool | Owns |\n| --- | --- |\n| `tanstack create` / `tanstack add` | App scaffold: Router or Start, add-ons, deployment |\n| `tdk project` / `tdk resource` / `tdk up` | Local landscape: ports, stacks, Docker, Tilt, proxy |\n\nThere is no shared contract today. A TanStack app dropped into a TDK repo does not get a `service.json`, and `tdk resource --type frontend` cannot scaffold TanStack Router or Start.\n\nRequested outcome: one recipe that works from either CLI, with Router-only as the first supported path and Start as an explicit second path.\n\n#### Proposed use\n\nFrom an existing TDK project:\n\n```bash\ntdk project --yes\ntdk resource shop-web --type frontend --framework tanstack-router --stack shop --yes\ntdk resource orders-api --type backend --stack shop --yes\ntdk up shop\n```\n\nFrom TanStack CLI, opt in with an add-on instead of a new required flag:\n\n```bash\ntanstack create shop-web --router-only --add-ons tdk -y\n# later, inside a TDK project:\ntdk up shop\n```\n\nStart stays available, but not by pretending it is the current Vite SPA provider:\n\n```bash\n# phase 2 — Start dev server is brought in, TDK does not rewrite vite.config.ts\ntanstack create shop-web --blank --add-ons tdk -y\ntdk resource shop-web --type bring-your-own --stack shop\n```\n\n#### What the TanStack add-on should write\n\nCategory `tooling`. No runtime dependency on TDK inside the generated app.\n\n- `service.json` with `type: \"frontend\"`, `framework`, `stack`, and the port convention TDK already uses (frontends in 3000–3999).\n- A short `TDK.md` (or a section in the generated README) with install, `tdk up`, and the boundary: TDK is local only; deploy stays on the TanStack deployment add-on (Cloudflare, Netlify, and so on).\n- `package.json` script hints only, for example `\"dev:tdk\": \"tdk up\"` when the CLI is present. Do not fail `pnpm dev` if TDK is not installed.\n- Nothing that overwrites TanStack Start’s `vite.config.ts` in v1.\n\nRouter-only maps cleanly onto TDK’s provider contract (Vite SPA, no root `vite.config.ts`, starter `index.html` + entry). Start does not: Start owns Vite config and is SSR. Shipping Start as a normal `--framework` provider would fight both generators. Call that out in the issue so it is not implemented as a drive-by.\n\n#### Acceptance\n\n- Docs page: “Use with TDK CLI”, linked from TanStack CLI docs and from the add-on details (`tanstack create --addon-details tdk`).\n- `--router-only --add-ons tdk` produces a `service.json` that `tdk config verify` accepts once the TDK provider exists.\n- `--blank` / Start + `tdk` documents the bring-your-own path and does not emit a provider framework id TDK will reject.\n- Add-on is optional. Default `tanstack create` is unchanged.\n- JSON introspection includes the add-on (`--list-add-ons --json`).\n\n### Additional context\n\nTDK frontend provider contract: https://github.com/tdk-landscape/tdk-cli-core/blob/main/docs/frontend-framework-providers.md\n\nRelevant TDK commands:\n\n```bash\ntdk resource my-app --type frontend --stack api\ntdk resource my-vue-app --type frontend --framework vue --stack api\n```\n\n`framework` is an enum on `service.json` (`react`, `vue` today). Unknown ids are rejected before files are written. A TanStack provider has to be registered in TDK (`cli/src/frontend-frameworks/`, Starlark Vite templates, `service-schema.json`). That half belongs in `tdk-landscape/tdk-cli-core`; companion issue linked below.\n\nCompanion issue (file against TDK, link here): feat(frontend) tanstack-router provider, and a TanStack Start bring-your-own path.\n\nNon-goals:\n\n- Replacing TanStack deployment add-ons with TDK. TDK does not deploy.\n- Making TDK a required toolchain.\n- Teaching TDK’s React/Ink CLI UI about TanStack. This is about generated apps and `service.json`, not the TDK terminal UI.\n\n\n### Additional context\n\nlinked issue https://github.com/tdk-landscape/tdk-cli-core/issues/234","author":{"url":"https://github.com/odykyi","@type":"Person","name":"odykyi"},"datePublished":"2026-10-01T21:28:31Z","url":"https://github.com/TanStack/cli/issues/520"}
| react-profiling | 0 |
| react-import-map | react,react-dom,react-dom/client,react-dom/profiling,react-is,react-reconciler,react/compiler-runtime,react/jsx-dev-runtime,react/jsx-runtime,scheduler@d5750093facf |
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:39c036fd-bace-f0e8-c684-82487a7ab30d |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | D10A:56DB4:197A763:227D81D:6AF99BB4 |
| html-safe-nonce | e4f3efa0178744f53b8400b11e1ba7a048169a836407647254ed06f8b45b6721 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJEMTBBOjU2REI0OjE5N0E3NjM6MjI3RDgxRDo2QUY5OUJCNCIsInZpc2l0b3JfaWQiOiIyMjcyMTI5MjQ4NjA2NjU3NDYwIiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0= |
| visitor-hmac | 4904e267505f360aa2534628a43130928c46bd545f407268d74d3dcef20c784c |
| hovercard-subject-tag | issue:5669436640 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/TanStack/cli/520/issue_layout |
| twitter:image | https://opengraph.githubassets.com/c3c44a818e654e822e41918b0a6ca7d75ac87894921d078dcb55564428ef1a14/TanStack/cli/issues/520 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/c3c44a818e654e822e41918b0a6ca7d75ac87894921d078dcb55564428ef1a14/TanStack/cli/issues/520 |
| og:image:alt | Which project does this relate to? Create Tanstack App Describe the feature 1. TanStack/cli issue Project: Create Tanstack App Labels: enhancement Describe the feature Add a documented, optional wa... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | odykyi |
| hostname | github.com |
| expected-hostname | github.com |
| None | 612d3e6ffd693e7ea8d9fcf452370995872baef31d825b1fedef704cd3d24ac7 |
| turbo-cache-control | no-preview |
| go-import | github.com/TanStack/cli git https://github.com/TanStack/cli.git |
| octolytics-dimension-user_id | 72518640 |
| octolytics-dimension-user_login | TanStack |
| octolytics-dimension-repository_id | 932949058 |
| octolytics-dimension-repository_nwo | TanStack/cli |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 932949058 |
| octolytics-dimension-repository_network_root_nwo | TanStack/cli |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 072e34035c13c31543fba9f025cbbbda4210dae4 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
| react-app-name | issues |
Links:
Viewport: width=device-width