Deploy Go, .NET and Java Spring Boot backends with AI

Go, Java Spring Boot and C# ASP.NET Core on BrewInTH: the files you need, how the build works, port and health path, databases, and a prompt for your AI.
Not every site is PHP, Node.js or Python. Plenty of companies run Java Spring Boot or C# ASP.NET Core, and people who want a fast, lightweight API often have the AI write it in Go. Then comes hosting: many hosts only do PHP, or leave you to set up a whole server yourself.
BrewInTH runs Go, Java and .NET like any other language. This article covers what each one needs in the project, how the platform builds and starts it, the few lines of code you may have to change, and a prompt that gets your AI to deploy it in one pass.
In short
⚙️ Choose Go, Java or .NET (C# / ASP.NET Core) when creating the project, or let the platform decide from the code
⚙️ At the project root: Go needsgo.mod, Java needspom.xmlorbuild.gradle, .NET needs exactly one.csproj
⚙️ The app listens on0.0.0.0at the port inPORT(8080 by default); .NET gets its port handed over automatically
⚙️ Database connection details are written into the app's settings for you
⚙️ Go is light on memory; Spring Boot deserves a package with more of it
What BrewInTH supports
When you create a project, the technology list has Go, Java (Java websites or APIs, such as Spring Boot) and .NET (C# / ASP.NET Core). Unsure? Pick Let the platform decide (recommended) and it reads your files on the first release.
The build tools are ready:
- Go 1.26, with gcc, so packages that use cgo build too.
- Java 21 with Maven and Gradle. If the project has its own
mvnworgradlew, that is used. - .NET SDK 10; projects that target .NET 8 run as well.
What each language needs, and what the platform does

Go
go.modandpackage mainat the project root.- The platform runs
go buildand starts the binary. - No
go.sum? Fine — it runsgo mod tidyfirst. (A chat AI usually cannot producego.sum, so this saves a round.)
Java (Spring Boot and friends)
pom.xml(Maven) orbuild.gradle/build.gradle.kts(Gradle) at the project root. Kotlin built with Gradle takes the same road.- The build skips tests (
-DskipTestsor-x test), so tests that need a database cannot fail it. - The app starts with
java -jaron the runnable jar intarget/orbuild/libs/(the extra-plain.jarGradle writes is ignored).
.NET (C# / ASP.NET Core)
- Exactly one
.csprojat the project root. - The platform runs
dotnet publishin Release and starts the app, handing it the address and port. No port code needed.
If your project does not fit — say, a .NET solution with several projects — set the commands yourself in the Releases tab › Advanced options (build / start / port): Build command (blank = auto) and Start command (blank = auto).
Two things to get right in the code: the port and a health path

1. Listen on the port in PORT
The platform sets PORT (8080 by default). Listen on 0.0.0.0 at that port, not on localhost.
Go
port := os.Getenv("PORT")
if port == "" {
port = "8080"
}
log.Fatal(http.ListenAndServe("0.0.0.0:"+port, mux))
Spring Boot, in application.properties:
server.port=${PORT:8080}
.NET: the platform already passes --urls when it starts the app. Nothing to do.
2. Have a health path
A new release counts as ready when its health path answers 2xx or 3xx within 5 minutes. The default is /. If your app is a pure API whose root answers 404, add a dedicated path — /healthz (Go), /actuator/health (Spring Boot Actuator) or /health (ASP.NET Core MapHealthChecks) — and enter it under Health check path (GET must answer 2xx/3xx), or ask the AI to set it.
Connecting a database
When you create a database in the project (PostgreSQL, MySQL, MariaDB or MongoDB), the platform writes the connection details into the app's settings. Each language reads them a little differently:
- Go: PostgreSQL drivers such as pgx or lib/pq take
DATABASE_URLas is; for MySQL, build the DSN fromDB_HOST,DB_PORT,DB_DATABASE,DB_USERNAME,DB_PASSWORD. - Spring Boot reads
SPRING_DATASOURCE_URL,SPRING_DATASOURCE_USERNAMEandSPRING_DATASOURCE_PASSWORDahead of its settings file. Sent through Upload & go live, the platform writes these three for you; with an AI agent, have it set them from the database's connection details. - .NET: build the connection string from
DB_HOST,DB_PORT,DB_DATABASE,DB_USERNAME,DB_PASSWORD.
Never put the database password in code or in appsettings.json; always read these variables.
Memory: match the package to the language
Each package sets the app's memory: Free 256 MB, Starter 512 MB, Maker 1 GB, Growth 2 GB, Pro 4 GB.
- Go uses very little. A typical API sits comfortably on Free.
- .NET uses more than Go, but a small API usually fits Starter.
- Spring Boot is the hungriest of the three. 256 MB is rarely enough; start at Starter, and Maker for a larger app.
These are rough guidelines that depend on the app. If it starts and then keeps stopping, read the app's last output in the release log before deciding on a bigger package.
Deploying with an AI agent: a sample prompt
Press Create the AI link and token (automatic) on the project page and give the message to your coding agent (Claude Code, Codex, Cursor, Windsurf) with something like:
This is an API written in Spring Boot (Maven) using PostgreSQL.
Deploy it to BrewInTH following the guide in the link:
1. Set server.port=${PORT:8080} and make the app listen on 0.0.0.0
2. Enable Spring Boot Actuator and use /actuator/health as the health path
3. Create the project's PostgreSQL database, then set SPRING_DATASOURCE_URL,
SPRING_DATASOURCE_USERNAME and SPRING_DATASOURCE_PASSWORD from its connection details
4. Let Flyway or Liquibase create the tables at start-up; no test data
5. Once live, use site_check on /actuator/health and one main endpoint, and report the results
Change the first line to fit, e.g. "This is an API written in Go with net/http and PostgreSQL" or "This is an ASP.NET Core (.NET 8) site using MySQL", and drop the steps that do not apply.
No coding agent? Zip the project folder and send it through Upload & go live (still in BETA). It recognises all three languages. If the code listens on a fixed port — ":9090" in Go, server.port=9090 — the app's port is set to match, and a ZIP holding several apps in separate folders is answered with their folder names so you can send one at a time.
Common errors and what to do

- Not ready within 5 minutes: usually the app listens on
localhostor another port, or the health path answers 404. Read the[readiness]lines in the release log. - "Set a start command for the required JAR": there is more than one runnable jar. Set the Start command yourself, e.g.
java -jar target/app.jar. - .NET has no start command: usually several
.csprojfiles, or one in a subfolder. Set the build and start commands yourself. - The app starts, then keeps stopping: read its last output in the log. If it is memory, use less or move up a package.
Copy the log to your AI; most of these are fixed in one round.
FAQ
Can I use Kotlin or another Java framework?
Yes, as long as Maven or Gradle produces a single runnable jar in target/ or build/libs/. If your framework puts it elsewhere, point the start command at it.
Can I use .NET older than 8?
The platform uses .NET SDK 10 and runs .NET 8 projects; anything older may not work, and the classic Windows-only .NET Framework does not. Have the AI move the project to .NET 8 or later first.
Do I need a Dockerfile?
No. The platform builds from your normal project files; a Dockerfile in the project is not used.
WebSocket or gRPC?
Both work directly on the site's address — handy for a mobile app's backend.
Scheduled or background jobs?
Use the project's Schedules to run an app command on a timetable, instead of a background process kept running inside the app.
Summary
Go, Java and .NET run on BrewInTH without setting up a server. Keep the standard project file at the root (go.mod, pom.xml or build.gradle, .csproj), listen on the port in PORT, give the app a health path, and read the database settings from the environment. The platform builds and starts the rest. Pick a package with enough memory for your language and let the AI handle the details.
Start your first project for free →
