Migrating from PHP to Go

This page summarizes the projects mentioned and recommended in the original post on /r/golang

InfluxDB – Built for High-Performance Time Series Workloads
InfluxDB 3 OSS is now GA. Transform, enrich, and act on time series data directly in the database. Automate critical tasks and eliminate the need to move data externally. Download now.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
  1. golang-standards/project-layout

    Standard Go Project Layout

    As u/GingaNinja741 mentioned, I think for project structure this project gives you a good idea but there is no real rule here. Some folders like internal are part of the language and will affect imports or usage from other modules. https://github.com/golang-standards/project-layout

  2. InfluxDB

    InfluxDB – Built for High-Performance Time Series Workloads. InfluxDB 3 OSS is now GA. Transform, enrich, and act on time series data directly in the database. Automate critical tasks and eliminate the need to move data externally. Download now.

    InfluxDB logo
  3. zap

    Blazing fast, structured, leveled logging in Go.

    https://github.com/uber-go/zap for logging. This logger is fast. You might not think that's important, but when we moved from Logrus to Zap we saw a noticeable difference in performance of some high-traffic applications.

  4. GORM

    The fantastic ORM library for Golang, aims to be developer friendly

    Do you like an ORM like eloquent for Laravel? Then I can recommend GORM https://gorm.io/

  5. go-formatter

    A curated list of awesome Go frameworks, libraries and software

    bring your own tools - this is where you select your libraries and then wire them together manually. Most libraries play very well with other libraries https://github.com/avelino/awesome-go -- so it can be easier than in other languages. This approach is very common.

  6. chi

    lightweight, idiomatic and composable router for building Go HTTP services

    I'm a big fan of [Twirp RPC](https://github.com/twitchtv/twirp), and [go-chi/chi](https://github.com/go-chi/chi) if I need to provide REST endpoints, authentication or other routing middleware. The "gorilla" set of packages are also useful, I always reach for gorilla/websocket if I need to do some websocket work. You can look at an example service in [go-bridget/notify](https://github.com/go-bridget/notify) - the main files to look at are under rpc/notify/notify.proto/.go, and the implementation which you write is under server/notify. If you'd create database drivers, I'd create a package under server/notify/mysql (for example), and then implement an interface for data retrieval/settings. It's on the todolist, if I'll ever need to implement anything other than JWT, or Redis. Comment if you have any questions or notes.

  7. mux

    Discontinued A powerful HTTP router and URL matcher for building Go web servers with 🦍

    Routing: https://github.com/gorilla/mux

  8. client_golang

    Prometheus instrumentation library for Go applications

    Instrumentation: https://github.com/prometheus/client_golang

  9. SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
  10. Squirrel

    Fluent SQL generation for golang

    SQL Generation: https://github.com/Masterminds/squirrel

  11. go-cmp

    Package for comparing Go values in tests

    Checking for equality in tests: https://github.com/google/go-cmp

  12. dockertest

    Write better integration tests! Dockertest helps you boot up ephermal docker images for your Go tests with minimal work.

    Integration tests: https://github.com/ory/dockertest

  13. microservice1

    For what you are trying to do with micro services I would recommend having a main service and just make your modules folders in that repo. Let's say I make a repo at github.com/uberswe/microservice1 then I might let microservice 2 import the database package defined in microservice1 using github.com/uberswe/microservice1/database

  14. validator

    :100:Go Struct and Field validation, including Cross Field, Cross Struct, Map, Slice and Array diving

    I use github.com/go-playground/validator/v10 for validation, and it's simple enough.

  15. simple_gopher

    Boilerplate for writing Go applications without framework using hexagonal application development approach

  16. goqu

    SQL builder and query library for golang

    https://github.com/doug-martin/goqu for building SQL queries. Supports MySQL and Postgres at least - super handy!

  17. micro

    Discontinued A microservices platform (by micro)

    https://micro.mu/ - a framework based approach that selects the core stuff you need.

  18. twirp

    A simple RPC framework with protobuf service definitions

    I'm a big fan of [Twirp RPC](https://github.com/twitchtv/twirp), and [go-chi/chi](https://github.com/go-chi/chi) if I need to provide REST endpoints, authentication or other routing middleware. The "gorilla" set of packages are also useful, I always reach for gorilla/websocket if I need to do some websocket work. You can look at an example service in [go-bridget/notify](https://github.com/go-bridget/notify) - the main files to look at are under rpc/notify/notify.proto/.go, and the implementation which you write is under server/notify. If you'd create database drivers, I'd create a package under server/notify/mysql (for example), and then implement an interface for data retrieval/settings. It's on the todolist, if I'll ever need to implement anything other than JWT, or Redis. Comment if you have any questions or notes.

  19. notify

    A microservice using Redis to enable a stateful multi-channel notification system (by go-bridget)

    I'm a big fan of [Twirp RPC](https://github.com/twitchtv/twirp), and [go-chi/chi](https://github.com/go-chi/chi) if I need to provide REST endpoints, authentication or other routing middleware. The "gorilla" set of packages are also useful, I always reach for gorilla/websocket if I need to do some websocket work. You can look at an example service in [go-bridget/notify](https://github.com/go-bridget/notify) - the main files to look at are under rpc/notify/notify.proto/.go, and the implementation which you write is under server/notify. If you'd create database drivers, I'd create a package under server/notify/mysql (for example), and then implement an interface for data retrieval/settings. It's on the todolist, if I'll ever need to implement anything other than JWT, or Redis. Comment if you have any questions or notes.

  20. upper.io/db

    Data Access Layer (DAL) for PostgreSQL, CockroachDB, MySQL, SQLite and MongoDB with ORM-like features.

    upper.io is a viable alternative to GORM. Just a suggestion.

  21. mongo-go-driver

    The Official Golang driver for MongoDB

    Mgo has been unmaintained for years. Use the official https://github.com/mongodb/mongo-go-driver

  22. SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts

  • ORM FOR GO

    12 projects | /r/golang | 17 Mar 2021
  • I made SQL easy in Go

    2 projects | dev.to | 2 Feb 2025
  • GORM, PostgreSQL & Atlas

    4 projects | dev.to | 12 Aug 2024
  • TypeScript dev tools in the Golang world

    1 project | dev.to | 1 May 2024
  • Prisma Client Go: Typesafe Database Client for Golang

    1 project | news.ycombinator.com | 20 Jan 2024

Did you know that Go is
the 4th most popular programming language
based on number of references?