deploteka
v0.4.0
Published
Official DeploTeka CLI — connect a Shopify organization and make an existing Shopify app (Remix, React Router v7 or Express) ready for dedicated per-store apps.
Readme
DeploTeka CLI
The exact support claim is the verified support matrix. Only stacks, dependency ranges, and topologies listed there are supported claims; the contract guide for an unlisted stack is a reference for owner-led work, not a universal compatibility promise.
Prepare an existing Shopify application — Remix, React Router v7, Express, Laravel, Rails, Python, or no framework at all — for dedicated per-store Shopify apps:
npx deploteka onboard . --applyThe command detects the target's Shopify app framework FIRST and states it in its
first output line, then installs the matching runtime, updates Shopify
authentication, adds the local credential store and protected fleet routes,
creates the Prisma migration, and runs the application's own typecheck or
build. TypeScript and JavaScript apps are both handled — .ts/.tsx and
.js/.jsx alike.
Automated ("Tier A") stacks and the runtime each one gets:
| Detected | Runtime installed |
|---|---|
| @shopify/shopify-app-react-router package majors 1–2 | deploteka-app-fleet (/react-router entry) |
| @shopify/shopify-app-remix v4 | deploteka-app-fleet |
| @shopify/shopify-app-remix v2–v3 | deploteka-app-fleet-legacy |
Old framework versions are captured as they are — upgrading is offered, never required.
Adapter packages ("Tier B")
Two stacks are captured by a first-party adapter package rather than by a codemod, because neither has a fixed template layout to rewrite safely:
| Detected | Adapter |
|---|---|
| @shopify/shopify-app-express majors 4–8 | deploteka-app-fleet-express (npm) |
| kyon147/laravel-shopify 17.3–27 | deploteka/laravel-fleet (Composer) |
The CLI detects the stack — reading composer.json as well as package.json — prints
a precise numbered integration recipe, and exits 4 without touching a single file.
Budget 10–30 minutes:
https://deploteka.com/guides/express-fleet-adapter ·
https://deploteka.com/guides/laravel-fleet-adapter
Guided stacks ("Tier C")
Four more stacks are recognised by name and served by a guide written for them, plus a starter-file generator:
| Detected from | Stack | Guide |
|---|---|---|
| Gemfile / Gemfile.lock → shopify_app | Rails + shopify_app ~>22.4 (verified fixture) | /guides/rails-fleet-contract |
| requirements.txt / pyproject.toml / Pipfile → ShopifyAPI | Python + ShopifyAPI 12.7.0 (verified fixture) | /guides/python-fleet-contract |
| package.json → @shopify/shopify-api with no app framework | Raw Node / webhook-only @shopify/shopify-api 11.6.x (verified fixture) | /guides/webhook-only-fleet-contract |
| shopify.app.toml + extensions/, no server dependency | extension-only app (shopify.app.toml + extensions/) | /guides/extension-only-shim |
npx deploteka onboard . --scaffoldgenerates the contract's starter files into <target>/deploteka-fleet/ — the two
endpoints, the credential replica and the per-shop credential lookup, in the target's
own language, each marked with the TODO(deploteka) lines only you can finish. It
writes nowhere else, never overwrites an existing file, is safe to re-run, and
exits 0. Without --scaffold these stacks print their guide and exit 3.
Unlisted stacks and versions
A stack or version outside the matrix is not a supported integration claim. The CLI prints the contract reference at https://deploteka.com/guides/fleet-contract-any-stack and the option to upgrade to a listed Tier-A stack for the automated codemod, then exits 3 without writing anything. The reference still explains the wire shape, but each owner must validate its framework, version, deployment topology, and production data store.
Run a dry preview first by omitting --apply:
npx deploteka onboard .To connect a Shopify Partner organization through the browser-approved fallback:
npx deploteka connectNode.js 20.19 or newer is required. The onboarding codemod targets the standard Shopify app template structure of each supported stack and refuses unsafe partial rewrites.
Documentation: https://deploteka.com
