Supported Languages & Frameworks
What Forgeon can auto-detect and how each platform is built and run.
Forgeon auto-detects your tech from files like package.json,
go.mod, pyproject.toml,
requirements.txt, pom.xml, build.gradle
, Cargo.toml, composer.json, Program.cs
, and more. If your stack isn’t listed, use a Dockerfile and
it will deploy just fine.
Quick overview
-
Next.js (Node)
- Auto-detect:
package.json+next - Build:
next build - Run:
next start -p $PORT - Port:
3000 - Notes: SSR supported; static export also works
- Auto-detect:
-
Remix / Vite / CRA / SPA (Node)
- Auto-detect:
package.json+ framework deps - Build:
vite buildorreact-scripts build - Run: Node static server or static export
- Port:
3000 - Notes: Prefer static export when possible
- Auto-detect:
-
Nuxt (Node)
- Auto-detect:
package.json+nuxt - Build:
nuxt build - Run:
nuxt start - Port:
3000 - Notes: SSR supported
- Auto-detect:
-
SvelteKit (Node)
- Auto-detect:
package.json+@sveltejs/kit - Build:
vite build - Run: Node adapter output or static export
- Port:
3000 - Notes: Use adapter for Node or static
- Auto-detect:
-
Astro (Node)
- Auto-detect:
package.json+astro - Build:
astro build - Run: Static or Node adapter
- Port:
3000 - Notes: Great for static sites
- Auto-detect:
-
Express / Koa / Fastify (Node)
- Auto-detect:
package.json+startscript - Build: optional
- Run:
node server.js(or your entry) - Port:
3000 - Notes: Bind
0.0.0.0and usePORT
- Auto-detect:
-
Go (Fiber, Gin, Echo, stdlib)
- Auto-detect:
go.mod - Build:
go build -o app - Run:
./app - Port:
8080 - Notes: Include a
/readyzendpoint
- Auto-detect:
-
Python (Django, Flask, FastAPI)
- Auto-detect:
pyproject.tomlorrequirements.txt - Build:
pip install -r ... - Run:
gunicornoruvicorn - Port:
8000 - Notes: Ensure correct ASGI/WSGI entrypoint
- Auto-detect:
-
PHP (Laravel)
- Auto-detect:
composer.json - Build:
composer install - Run:
php artisan serveor PHP-FPM - Port:
8000 - Notes: Prefer PHP-FPM + web server image
- Auto-detect:
-
Ruby on Rails
- Auto-detect:
Gemfile - Build:
bundle install - Run:
rails serveror Puma - Port:
3000 - Notes: Precompile assets in build step
- Auto-detect:
-
Java (Spring Boot)
- Auto-detect:
pom.xmlorbuild.gradle - Build:
mvn packageorgradle bootJar - Run:
java -jar app.jar - Port:
8080 - Notes: JDK 17+ recommended
- Auto-detect:
-
.NET (ASP.NET Core)
- Auto-detect:
*.csproj - Build:
dotnet publish - Run:
dotnet app.dll - Port:
8080 - Notes: Target
linux-x64
- Auto-detect:
-
Rust (Axum, Actix)
- Auto-detect:
Cargo.toml - Build:
cargo build --release - Run:
./target/release/app - Port:
8080 - Notes: Small, fast, great for APIs
- Auto-detect:
-
Elixir (Phoenix)
- Auto-detect:
mix.exs - Build:
mix assets.deploy && mix release - Run:
./bin/app start - Port:
4000 - Notes: Prefer releases for prod
- Auto-detect:
-
Deno / Fresh
- Auto-detect:
deno.json - Build: —
- Run:
deno run -A main.ts - Port:
8000 - Notes: Pin permissions; use
PORT
- Auto-detect:
-
Bun
- Auto-detect:
bun.lockborpackage.json - Build:
bun build - Run:
bun run start - Port:
3000 - Notes: Some libs still stabilizing
- Auto-detect:
-
Static Sites
- Auto-detect: build output like
dist/ - Build: your
buildscript - Run: served as static
- Port: —
- Notes: CDN-style hosting
- Auto-detect: build output like
-
Dockerfile (Custom)
- Auto-detect:
Dockerfile - Build: your Docker build
- Run: your container
CMD - Port: your port
- Notes: Use when in doubt
- Auto-detect:
Whatever the stack, your web server should bind to 0.0.0.0 and
listen on the PORT environment variable.
Node.js frameworks
Next.js
- Detects by:
package.jsonwithnext - Default build:
next build - Default run:
next start -p $PORT - Notes: SSR and static export are supported. If you export, we serve it as a static site (no Node runtime needed).
Nuxt / SvelteKit / Astro / Remix / Vite / SPA
- Detects by:
package.jsondeps (nuxt,@sveltejs/kit,astro,@remix-run/*,vite, etc.) - Build: framework
buildscript - Run:
- SSR: framework
startscript on$PORT - Static: we publish the built
dist/(or equivalent) directly
- SSR: framework
- Tip: prefer a static build when you don’t need SSR — it’s faster and cheaper.
Raw Node (Express / Koa / Fastify)
- Detects by:
package.jsonwithstartscript - Run:
node server.jsornode app.json$PORT - Health: add
/readyzto speed up readiness checks
Go
- Detects by:
go.mod - Build:
go build -o app ./...(detector picks main) - Run:
./appon$PORT - Framework hints: auto-notes for Fiber, Gin, Echo (parsed from
go.mod) - Health:
/readyzstrongly recommended
build & run
$go build -o app ./...
$PORT=8080 ./app
Example
main.go — Fiber example
package main
import (
"os"
"github.com/gofiber/fiber/v2"
)
func main() {
app := fiber.New()
app.Get("/readyz", func(c *fiber.Ctx) error { return c.SendStatus(200) })
port := os.Getenv("PORT"); if port == "" { port = "8080" }
app.Listen("0.0.0.0:" + port)
}