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.