openstead
Deploy and operate

Languages and detection

Understand what Openstead detects and when to use explicit commands or a Dockerfile.

Suggest a change

Openstead inspects the selected application's files and uses Railpack to prepare supported runtimes. Detection gives you a starting configuration; it cannot know every application's entry point, migration policy, or production secrets.

What detection reads

Project filesDetection
package.jsonNode.js and common JavaScript frameworks
requirements.txt, pyproject.toml, or PipfilePython, with Django, FastAPI, and Flask suggestions
composer.json with artisan or Laravel's framework dependencyLaravel / PHP
composer.jsonPHP
go.modGo
GemfileRuby
Cargo.tomlRust
pom.xmlJava / Maven
build.gradle or build.gradle.ktsJava / Gradle
.csproj or .fsproj.NET
mix.exsElixir
deno.jsonDeno
index.html without a recognized application manifestHTML static site
DockerfileDockerfile build takes precedence

Framework recognition and automatic build-provider support are different. If the selected builder cannot build your project's language or version, provide a Dockerfile with the exact toolchain instead of assuming a detected label guarantees a working build.

JavaScript frameworks

Openstead identifies Next.js, Nuxt, Astro, SvelteKit, Vite, Create React App, Express, and NestJS from package metadata. A Next.js project with static export is suggested as a static site; a server-rendered Next.js application is a web service. Astro's server output needs an appropriate adapter. SvelteKit needs the adapter for your intended deployment mode.

Package-manager suggestions follow committed lockfiles: pnpm, Yarn, Bun, then npm. Keep a single intended package-manager lockfile and review the generated command.

Python applications

Django detection can suggest Gunicorn when it finds a wsgi.py module. FastAPI and Flask use conventional sample entry points, which you must adjust if your module or application object has a different name. Ensure the chosen server is included in your production dependencies.

Laravel applications

A Laravel application's package.json usually builds browser assets. Its presence does not make the application a static Vite site. Openstead prioritizes Laravel recognition and leaves commands available for the PHP provider's combined Composer and asset handling.

Set the correct root containing composer.json and artisan. Packaged scripts with nonstandard public directories may need a Dockerfile. See Deploy Laravel.

Pin the runtime

Use version files and manifest fields supported by your build toolchain. When you require an exact OS image, PHP extension set, or custom native library, pin it in a Dockerfile. Review the version reported in the build log after an upgrade rather than assuming it matches your laptop.

For repositories with multiple applications, select each root deliberately. See Monorepos.

Need a hand? Contact Openstead support.

On this page