{"id":16673676,"url":"https://github.com/nathan-fiscaletti/galago","last_synced_at":"2026-08-13T14:32:17.808Z","repository":{"id":57547082,"uuid":"249250175","full_name":"nathan-fiscaletti/galago","owner":"nathan-fiscaletti","description":"☝️ A simple REST framework written in Go","archived":false,"fork":false,"pushed_at":"2022-02-04T10:25:23.000Z","size":193,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-01-13T17:28:31.266Z","etag":null,"topics":["api","api-framework","go","golang","golang-api","golang-libraries","golang-library","rest","rest-api","restful"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nathan-fiscaletti.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-03-22T18:47:52.000Z","updated_at":"2022-07-28T22:32:42.000Z","dependencies_parsed_at":"2022-09-26T18:40:44.449Z","dependency_job_id":null,"html_url":"https://github.com/nathan-fiscaletti/galago","commit_stats":null,"previous_names":["nathan-fiscaletti/flamingo"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/nathan-fiscaletti/galago","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nathan-fiscaletti%2Fgalago","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nathan-fiscaletti%2Fgalago/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nathan-fiscaletti%2Fgalago/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nathan-fiscaletti%2Fgalago/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nathan-fiscaletti","download_url":"https://codeload.github.com/nathan-fiscaletti/galago/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nathan-fiscaletti%2Fgalago/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":36612262,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-08-06T04:43:03.162Z","status":"online","status_checked_at":"2026-08-13T02:00:06.325Z","response_time":111,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","api-framework","go","golang","golang-api","golang-libraries","golang-library","rest","rest-api","restful"],"created_at":"2024-10-12T12:27:45.169Z","updated_at":"2026-08-13T14:32:17.793Z","avatar_url":"https://github.com/nathan-fiscaletti.png","language":"Go","funding_links":["https://github.com/sponsors/nathan-fiscaletti"],"categories":[],"sub_categories":[],"readme":"# GalaGo\n\n[![Sponsor Me!](https://img.shields.io/badge/%F0%9F%92%B8-Sponsor%20Me!-blue)](https://github.com/sponsors/nathan-fiscaletti)\n[![Go Report Card](https://goreportcard.com/badge/github.com/nathan-fiscaletti/galago?p=0)](https://goreportcard.com/report/github.com/nathan-fiscaletti/galago)\n[![GoDoc](https://godoc.org/github.com/nathan-fiscaletti/galago?status.svg)](https://godoc.org/github.com/nathan-fiscaletti/galago)\n\u003cimg src=\"./logo.png\" align=\"right\" /\u003e\n\nGalaGo is a simple HTTP REST framework written in [Go](https://golang.org).\n\nGalaGo aims to be a streamlined, fast and simple building block for use with any web application written in Go. See [Performance](#performance) for more information. \n\nIt's important to keep in mind that GalaGo is a high level abstraction of a lot of the built in HTTP logic provided by Go off the shelf. The main purpose of GalaGo is to work as a supporting library to those already existing features, and to abstract some of their logic to make it easier to consume. GalaGo makes a large effort to ensure that all of the lower level structures already provided by Go are always exposed through the layer of abstraction.\n\n## Installation\n\n```sh\n$ go get github.com/nathan-fiscaletti/galago\n```\n\n```go\npackage main\n\nimport(\n   \"github.com/nathan-fiscaletti/galago\"\n)\n```\n\n## Features\n\n- **Written in Go**\n\n  Writing the framework in Go allows for several performance enhancements that would not regularly be available. Namely, the ability to compile directly to machine code. See [Performance](#performance) for more information. GalaGo attempts to maintain as much simplicity as possible while still providing the easiest implementation available.\n\n- **HTTP / HTTPS**\n\n   Both HTTP and HTTPS are supported by GalaGo out of the box. See [Configure GalaGo for TLS](./tutorials/tls.md) for more information on using GalaGo with HTTPS.\n\n- **REST Components**\n\n   GalaGo supports several generic REST components that are not regularly available in the Go HTTP libraries. These include Middleware, Routing, Controllers, Serialization and Downloads. See the [Example File](./example/) for more information.\n   \n- **Consumable as a Library**\n\n   GalaGo does not require you to run it as a stand alone binary. Importing GalaGo as a library into your existing HTTP project can be done quickly and easily to provide the same set of features available in GalaGo to your existing web package.\n\n## Documentation, Examples \u0026 Tutorials\n\nI've tried to compile several useful tutorials and examples for those interested in using GalaGo. Outside of that, it is kept documented to the best of my abilities.\n\n|||\n|---|---|\n|[My First GalaGo Application](./tutorials/getting-started.md)|A starter application for beginners interested in learning more about GalaGo|\n|[Documentation](https://godoc.org/github.com/nathan-fiscaletti/galago/)|Library documentation covering all available data structures and functions.|\n|[Example File](./example/)|A file demonstrating many of the features available in GalaGo|\n|[Tutorials](./tutorials)|Several tutorials going over implementing GalaGo and using GalaGo in different environments and with different Configurations.|\n\n## Why Go?\n\nThe older version of this framework was written in PHP. This was purely based on research around what languages were most commonly used for this type of framework at the time _(nearly five years ago)_. While using PHP did allow for some more in depth configuration and for features such as editing the code without re-compiling, coupled with the bloat and other annoyances of the older framework, it did not offer the raw performance you will get out of compiling your REST API down to machine code.\n\n## What about [mod-go](https://github.com/idaunis/mod_go)?\n\nIn the future I hope to add support for mod-go, however the project has been abandoned for quite some time and I'm still on the fence about whether or not I will add support for it.\n\n## What about an ORM?\n\nIf you'd like to use an ORM with GalaGo to link in your database, I highly recommend looking into [gorm](https://github.com/jinzhu/gorm). It's a well maintained and highly recommended ORM for Go with over 17,000 stars. Since this library already exists and has a decent feature set and user base, I see no reason to write a new ORM for use with GalaGo.\n\n## Performance\n\nAll tests run using a simple Hello World GalaGo application and plain HTTP.\n\n[**Baton**](https://github.com/americanexpress/baton)\n\n```\n$ ./baton -r 200000 -c 5 -u http://localhost:8080/hello/world\nConfiguring to send GET requests to: http://localhost:8080/hello/world\nGenerating the requests...\nFinished generating the requests\nSending the requests to the server...\nFinished sending the requests\nProcessing the results...\n\n\n====================== Results ======================\nTotal requests:                                200000\nTime taken to complete requests:          3.93532484s\nRequests per second:                            50822\n===================== Breakdown =====================\nNumber of connection errors:                        0\nNumber of 1xx responses:                            0\nNumber of 2xx responses:                       200000\nNumber of 3xx responses:                            0\nNumber of 4xx responses:                            0\nNumber of 5xx responses:                            0\n=====================================================\n```\n\n[**Bombardier**](https://github.com/codesenberg/bombardier)\n\n```\n$ ./bombardier-darwin-amd64 -c 5 -n 200000 -l http://localhost:8080/hello/world\nBombarding http://localhost:8080/hello/world with 200000 request(s) using 5 connection(s)\n 200000 / 200000 [==============================================================================================================================================================] 100.00% 42772/s 4s\nDone!\nStatistics        Avg      Stdev        Max\n  Reqs/sec     44110.31    3090.28   49656.00\n  Latency      111.53us    16.32us     2.35ms\n  Latency Distribution\n     50%   108.00us\n     75%   119.00us\n     90%   133.00us\n     95%   147.00us\n     99%   215.00us\n  HTTP codes:\n    1xx - 0, 2xx - 200000, 3xx - 0, 4xx - 0, 5xx - 0\n    others - 0\n  Throughput:     8.75MB/s\n```\n\n## License\n\nGalaGo is licensed under the Apache 2.0 License. See [LICENSE](./LICENSE) for more information.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnathan-fiscaletti%2Fgalago","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnathan-fiscaletti%2Fgalago","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnathan-fiscaletti%2Fgalago/lists"}