What to build
Today shipnode init produces a generic config. First deploys are where users drop off — port mismatches, wrong buildDir, missing preDeploy for migrations, wrong build script in package.json. Add framework-aware presets that ship a config that just deploys.
Presets to ship in v1:
next — Next.js 14+. Frontend + built-in Node server. Port 3000. Build: next build. Recommend output: 'standalone'.
tanstack-start — TanStack Start. Backend variant with the correct start command.
adonis — AdonisJS 6+. Backend, port 3333. build script + preDeploy for node ace migration:run --force.
nuxt — Nuxt 3. Frontend/Node server variant.
Each preset writes a full working shipnode.config.ts and, when helpful, warns about the app-side changes needed (e.g. Next.js output: 'standalone', Prisma build script order — see the shipnode skill troubleshooting section, that content should feed the preset).
CLI shape:
shipnode init --preset next
shipnode init --preset next --non-interactive uses defaults, prompts skipped
- Preset resolution is registry-based so adding a preset is one file, not a switch statement across the CLI
Acceptance criteria
Blocked by
None - can start immediately
Note
This is a HITL slice: the list of presets to support and their exact defaults are a product decision. Recommend reviewing the list and defaults with a real deploy of each stack before locking them into the registry.
What to build
Today
shipnode initproduces a generic config. First deploys are where users drop off — port mismatches, wrongbuildDir, missingpreDeployfor migrations, wrongbuildscript inpackage.json. Add framework-aware presets that ship a config that just deploys.Presets to ship in v1:
next— Next.js 14+. Frontend + built-in Node server. Port 3000. Build:next build. Recommendoutput: 'standalone'.tanstack-start— TanStack Start. Backend variant with the correct start command.adonis— AdonisJS 6+. Backend, port 3333.buildscript +preDeployfornode ace migration:run --force.nuxt— Nuxt 3. Frontend/Node server variant.Each preset writes a full working
shipnode.config.tsand, when helpful, warns about the app-side changes needed (e.g. Next.jsoutput: 'standalone', Prismabuildscript order — see the shipnode skill troubleshooting section, that content should feed the preset).CLI shape:
shipnode init --preset nextshipnode init --preset next --non-interactiveuses defaults, prompts skippedAcceptance criteria
shipnode init --preset nextproduces a config with.frontend()(or the correct type),.buildDir('.next'), and a documented start command.preDeploy(async ({ exec }) => await exec('node ace migration:run --force'))--preset <unknown>exits 1 with a list of valid presets--non-interactive) still prompts for host, user, domain, deploy path — presets fill only what's framework-specificshipnode init --preset X --non-interactive --printand asserts the output is valid configBlocked by
None - can start immediately
Note
This is a HITL slice: the list of presets to support and their exact defaults are a product decision. Recommend reviewing the list and defaults with a real deploy of each stack before locking them into the registry.