Go

Go is our choice for backend services that need to stay simple, predictable and light on server resources. A Go service compiles to one binary that is easy to deploy and easy to reason about.

How we use Go

Mobile apps that sync data between devices need an API that handles many short requests and resolves conflicts consistently. Go's standard library covers most of that, and its concurrency model makes background queues and scheduled jobs straightforward to write.

We keep Go services small and focused, each with a clear boundary, a PostgreSQL database accessed through plain SQL and structured logs. Services are packaged into containers, so they run the same way on a laptop, in staging and in production.

What we build with it

  • Sync APIs for multi-device mobile apps
  • Background workers and job queues
  • Webhook receivers for store and payment events
  • Internal services with gRPC interfaces

Toolkit

  • Go standard library
  • chi
  • pgx
  • gRPC
  • Docker
  • golangci-lint

How we keep Go code healthy

  • Table-driven tests for handlers and business rules
  • Race detector enabled in CI
  • Structured logging and health endpoints
  • Database migrations versioned with the code

Questions about Go

When do you choose Go over Node.js?

When a service does heavy concurrent work or has to run on modest servers. Node.js suits services that share code with a TypeScript front end.

Do you host the services?

We deploy to the infrastructure you choose and document how to run it.

Discuss a Go project

Discuss a Go project

Describe the app or the code you have. We reply by email with questions or a time for a call.

Prefer email? Write to [email protected]. You can also send any documents there.

You will get an automatic copy of your message by email.

This website currently sets no cookies and stores nothing in your browser, so there is no consent to give or withdraw. If that changes, we will ask you first.

Read the Cookie Policy