Skip to content

SpineBuild faster servers
with familiar patterns.

Structure Go apps with the controllers and services you know from NestJS and Spring. Use constructor injection and interceptors, and explore throughput and memory usage measured with the same resources.

Free technical support for business teamsFrom adoption advice to troubleshooting, with no limit on teams.Explore support
Shell
go install github.com/NARUBROWN/spine-cli/cmd/spine@v0.1.4
spine new hello-spine --module example.com/hello-spine
cd hello-spine
go mod tidy
spine contract check
spine verify
spine dev

Create a project with the CLI, validate it, and run it. See the first app guide for the complete steps.

Build your first app with the CLI

More with the same resources.
Less memory.

We compared NestJS/Express, Spring MVC and FastAPI/Uvicorn with 3 vCPU and 3GiB of memory allocated to each.

Spine internal lab test / 2026.11.01

View measurement conditions and full results

163,559req/s

HTTP throughput

Median measured under saturated load

41.8MiB

Observed memory

Usage at 20,000 requests per second

1.062ms

p99 response latency

Latency at 20,000 requests per second

Requests handled within the same CPU budget

Higher is better

If each user sends one request per second

Spine0.5.2
163,559req/s
NestJS / Express
93,977req/s

Spine could have handled requests for about 69,582 more people.

Spring MVC
118,943req/s

Spine could have handled requests for about 44,616 more people.

FastAPI / Uvicorn
50,173req/s

Spine could have handled requests for about 113,386 more people.

Saturated throughput at 256 concurrent connections. We compared the actual throughput of each implementation.

This example converts the difference in requests per second into a user count, assuming one request per user per second. Actual capacity depends on request frequency and the work the app performs.

Measurement data CSV

Build your first app ​