Choose a host and run deploy | Push main, publish from the dashboard | The app builds to a Cloudflare Worker and is uploaded into Stardeck’s dispatch namespace |
| Pick a runtime per route | Workers everywhere | No Node.js runtime — which is also why middleware.ts must not be renamed to proxy.ts |
| Provision Postgres, pick an ORM, own migrations | Data Store + data-store-sdk (Kysely) | Schema is a platform operation; the driver is HTTP, so no interactive transactions |
| Add NextAuth, Clerk, or roll your own | project-auth | Sign-in, RBAC, SSO and the admin/user dashboards ship with it, and visibility is enforced at the edge |
| Guard routes in middleware | Guard in the layout and in each API handler | Host classification, tenant lookup and public/internal gating happen before your code; API paths are never edge-gated |
vercel cron or a cron container | scheduling-sdk | The platform calls your deployment on a schedule |
| Wire Stripe, an email provider, an S3 bucket | payments-sdk, email-sdk, storage-type Data Store | The platform holds credentials; every call is HMAC-signed by the SDK |
| Rely on ISR and the data cache | Treat rendering as per-request; cache deliberately | No incremental cache is configured — see Constraints |
Edit next.config.ts freely | Ask Stardeck for config changes | The upgrade rail patches that file |
| One project per audience: site, admin, POS | Surfaces in one repo | Each gets its own hostname, icon and install identity from one deploy |
| Own your dependency and framework upgrades | The upgrade rail moves the app forward | Over 130 versioned upgrade steps carry existing apps to the current platform version |
.env.local you maintain | npm run env:pull from the platform | Secrets are stored and decrypted by the platform, per environment |
Webhooks to localhost via a tunnel | Exercise inbound traffic in the sandbox | Nothing inbound is routed to a local dev server, by design |