{"id":21658569,"url":"https://github.com/get-ion/ion","last_synced_at":"2026-01-17T03:49:13.873Z","repository":{"id":57483362,"uuid":"95349185","full_name":"get-ion/ion","owner":"get-ion","description":"A fast, cross-platform micro web framework. A successor of Iris v8","archived":false,"fork":false,"pushed_at":"2017-08-09T14:09:29.000Z","size":6117,"stargazers_count":91,"open_issues_count":0,"forks_count":11,"subscribers_count":16,"default_branch":"master","last_synced_at":"2024-06-20T10:19:33.612Z","etag":null,"topics":["get-ion","golang","high-performance","http2","ion","ion-golang","web-framework-application"],"latest_commit_sha":null,"homepage":"https://ion.beta.gitbook.com","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/get-ion.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null}},"created_at":"2017-06-25T09:04:45.000Z","updated_at":"2024-01-29T14:39:21.000Z","dependencies_parsed_at":"2022-08-28T17:40:46.955Z","dependency_job_id":null,"html_url":"https://github.com/get-ion/ion","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/get-ion%2Fion","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/get-ion%2Fion/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/get-ion%2Fion/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/get-ion%2Fion/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/get-ion","download_url":"https://codeload.github.com/get-ion/ion/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":226304809,"owners_count":17603688,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["get-ion","golang","high-performance","http2","ion","ion-golang","web-framework-application"],"created_at":"2024-11-25T09:29:29.526Z","updated_at":"2026-01-17T03:49:13.857Z","avatar_url":"https://github.com/get-ion.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"[![ion](https://user-images.githubusercontent.com/29665371/27510063-3b9587da-5912-11e7-89e4-d0c53fd09bd4.png)](https://get-invite.herokuapp.com)\n\n\u003cp align=\"center\"\u003e\n\t\u003ca href=\"https://travis-ci.org/get-ion/ion\"\u003e\n\t\t\u003cimg src=\"https://img.shields.io/travis/get-ion/ion/master.svg?style=flat-square\" alt=\"build status\"\u003e\n\t\u003c/a\u003e\n\t\u003ca href=\"http://goreportcard.com/report/get-ion/ion\"\u003e\n\t\t\u003cimg src=\"https://img.shields.io/badge/report%20card-a%2B-ff3333.svg?style=flat-square\" alt=\"report card\"\u003e\n\t\u003c/a\u003e\n\t\u003ca href=\"https://godoc.org/github.com/get-ion/ion\"\u003e\n\t\t\u003cimg src=\"https://img.shields.io/badge/godocs-1.1.x-0366d6.svg?style=flat-square\" alt=\"godocs\"\u003e\n\t\u003c/a\u003e\n\t\u003ca href=\"https://github.com/get-ion/issues-v1/issues\"\u003e\n\t\t\u003cimg src=\"https://img.shields.io/badge/get-support-cccc00.svg?style=flat-square\" alt=\"get support\"\u003e\n\t\u003c/a\u003e\n\t\u003ca href=\"https://github.com/get-ion/ion/tree/master/_examples\"\u003e\n\t\t\u003cimg src=\"https://img.shields.io/badge/learn%20by-examples-0077b3.svg?style=flat-square\" alt=\"view examples\"\u003e\n\t\u003c/a\u003e\n\t\u003ca href=\"https://get-invite.herokuapp.com\"\u003e\n\t\t\u003cimg src=\"https://get-invite.herokuapp.com/badge.svg?style=flat-square\" alt=\"ion channel on slack\"\u003e\n\t\u003c/a\u003e\n\t\u003ca href=\"http://webchat.freenode.net?channels=get-ion\"\u003e\n\t\t\u003cimg src=\"https://img.shields.io/badge/irc-%23get--ion%20-61DAFB.svg?style=flat-square\" alt=\"#get-ion on freenode\"\u003e\n\t\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cbr/\u003e\n\n\u003c!--\n[![build status](https://img.shields.io/travis/get-ion/ion/master.svg?style=flat-square)](https://travis-ci.org/get-ion/ion)\n[![report card](https://img.shields.io/badge/report%20card-a%2B-ff3333.svg?style=flat-square)](http://goreportcard.com/report/get-ion/ion)\n[![godocs](https://img.shields.io/badge/godocs-1.1.x-0366d6.svg?style=flat-square)](https://godoc.org/github.com/get-ion/ion)\n[![get support](https://img.shields.io/badge/get-support-cccc00.svg?style=flat-square)](https://github.com/get-ion/issues-v1/issues)\n[![view examples](https://img.shields.io/badge/learn%20by-examples-0077b3.svg?style=flat-square)](https://github.com/get-ion/ion/tree/master/_examples)\n[![ion channel on slack](https://get-invite.herokuapp.com/badge.svg?style=flat-square)](https://get-invite.herokuapp.com)\n[![#get-ion on freenode](https://img.shields.io/badge/irc-%23get--ion%20-61DAFB.svg?style=flat-square)](http://webchat.freenode.net?channels=get-ion)\n--\u003e\n\nIon is a fast, simple and efficient micro web framework for Go. It provides a beautifully expressive and easy to use foundation for your next website, API, or distributed app.\n\n\u003c!--| Feature | Awesome |\n| -----------|-------------|\n| [Core](_examples/) | \u0026#10003; |\n| [Custom Context Registry](_examples/#routing-grouping-dynamic-path-parameters-macros-and-custom-context) | \u0026#10003; |\n| [View Engine](_examples/#view) | \u0026#10003; |\n| [Sessions](https://github.com/get-ion/sessions) | \u0026#10003; |\n| [Websockets](https://github.com/get-ion/websocket) | \u0026#10003; |\n| [Caching](https://github.com/get-ion/cache) | \u0026#10003; |\n| [Typescript Tools](https://github.com/get-ion/typescript) | \u0026#10003; |\n| [Test Framework](_examples/#testing) | \u0026#10003; |\n| [STD `net/http` compatibility](_examples/#convert-httphandlerhandlerfunc) | \u0026#10003; |--\u003e\n\n\n### 📑 Table of contents\n\n* [Installation](#-installation)\n* [Learn](#-learn)\n\t* [HTTP Listening](_examples/#http-listening)\n\t* [Configuration](_examples/#configuration)\n\t* [Routing, Grouping, Dynamic Path Parameters, \"Macros\" and Custom Context](_examples/#routing-grouping-dynamic-path-parameters-macros-and-custom-context)\n\t* [Subdomains](_examples/#subdomains)\n\t* [Wrap `http.Handler/HandlerFunc`](_examples/#convert-httphandlerhandlerfunc)\n\t* [View](_examples/#view)\n\t* [Authentication](_examples/#authentication)\n\t* [File Server](_examples/#file-server)\n\t* [How to Read from `context.Request() *http.Request`](_examples/#how-to-read-from-contextrequest-httprequest)\n\t* [How to Write to `context.ResponseWriter() http.ResponseWriter`](_examples/#how-to-write-to-contextresponsewriter-httpresponsewriter)\n\t* [Test](_examples/#testing)\t\n\t* [Cache](cache/#table-of-contents)\n\t* [Sessions](sessions/#table-of-contents)\n\t* [Websockets](websocket/#table-of-contents)\n\t* [Miscellaneous](_examples/#miscellaneous)\n\t* [Typescript Automation Tools](typescript/#table-of-contents)\n\t* [Tutorial: Online Visitors](_examples/tutorial/online-visitors)\n\t* [Tutorial: URL Shortener using BoltDB](_examples/tutorial/url-shortener)\n* [Middleware](middleware/)\n* [Dockerize](https://github.com/hiveminded/cloud-native-go)\n* [Support](#-support)\n* [People](#-people)\n\n### 🚀 Installation\n\nThe only requirement is the [Go Programming Language](https://golang.org/dl/), at least version 1.8.x\n\n```sh\n$ go get github.com/get-ion/ion\n```\n\n\u003e _ion_ takes advantage of the [vendor directory](https://docs.google.com/document/d/1Bz5-UB7g2uPBdOx-rw5t9MxJwkfpx90cqG9AFL0JAYo) feature. You get truly reproducible builds, as this method guards against upstream renames and deletes.\n\n```go\n// file: main.go\npackage main\nimport (\n    \"github.com/get-ion/ion\"\n    \"github.com/get-ion/ion/context\"\n)\nfunc main() {\n    app := ion.New()\n    // Load all templates from the \"./templates\" folder\n    // where extension is \".html\" and parse them\n    // using the standard `html/template` package.\n    app.RegisterView(ion.HTML(\"./templates\", \".html\"))\n\n    // Method:    GET\n    // Resource:  http://localhost:8080\n    app.Get(\"/\", func(ctx context.Context) {\n        // Bind: {{.message}} with \"Hello world!\"\n        ctx.ViewData(\"message\", \"Hello world!\")\n        // Render template file: ./templates/hello.html\n        ctx.View(\"hello.html\")\n    })\n\n    // Start the server using a network address and block.\n    app.Run(ion.Addr(\":8080\"))\n}\n```\n```html\n\u003c!-- file: ./templates/hello.html --\u003e\n\u003chtml\u003e\n\u003chead\u003e\n    \u003ctitle\u003eHello Page\u003c/title\u003e\n\u003c/head\u003e\n\u003cbody\u003e\n    \u003ch1\u003e{{.message}}\u003c/h1\u003e\n\u003c/body\u003e\n\u003c/html\u003e\n```\n\n```sh \n$ go run main.go\n\u003e Now listening on: http://localhost:8080\n\u003e Application started. Press CTRL+C to shut down.\n```\n\n\u003cdetails\u003e\n\u003csummary\u003eHello World with Go 1.9\u003c/summary\u003e\n\nIf you've installed Go 1.9 then you can omit the `github.com/get-ion/ion/context` package from the imports statement.\n\n```go\n// +build go1.9\n\npackage main\n\nimport \"github.com/get-ion/ion\"\n\nfunc main() {\n\tapp := ion.New()\n\tapp.RegisterView(ion.HTML(\"./templates\", \".html\"))\n\t\n\tapp.Get(\"/\", func(ctx ion.Context) {\n\t\tctx.ViewData(\"message\", \"Hello world!\")\n\t\tctx.View(\"hello.html\")\n\t})\n\n\tapp.Run(ion.Addr(\":8080\"))\n}\n```\n\nWe expect Go version 1.9 to be released in August, however you can install Go 1.9 beta today.\n\n### Installing Go 1.9beta2\n \n1. Go to https://golang.org/dl/#go1.9beta2\n2. Download a compatible, with your OS, archieve, i.e `go1.9beta2.windows-amd64.zip`\n3. Unzip the contents of `go1.9beta2.windows-amd64.zip/go` folder to your $GOROOT, i.e `C:\\Go`\n4. Open a terminal and execute `go version`, it should output the go1.9beta2 version, i.e:\n```sh\nC:\\Users\\hiveminded\u003ego version\ngo version go1.9beta2 windows/amd64\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eWhy another new web framework?\u003c/summary\u003e\n\n_ion_ is easy, it has a familiar API while in the same has far more features than [Gin](https://github.com/gin-gonic/gin) or [Martini](https://github.com/go-martini/martini).\n\nYou own your code —it will never generate (unfamiliar) code for you, like [Beego](https://github.com/astaxie/beego), [Revel](https://github.com/revel/revel) and [Buffalo](https://github.com/gobuffalo/buffalo) do.\n\nIt's not just-another-router but its overall performance is equivalent with something like [httprouter](https://github.com/julienschmidt/httprouter).\n\nUnlike [fasthttp](https://github.com/valyala/fasthttp), ion provides full HTTP/2 support for free.\n\nCompared to the rest open source projects, this one is very active and you get answers almost immediately.\n\n\u003c/details\u003e\n\n### 👥 Community\n\nJoin the welcoming community of fellow _ion_ developers in [slack](https://get-invite.herokuapp.com).\n\n### 🏫 Learn\n\nThe awesome _ion_ community is always adding new examples, [_examples](_examples/) is a great place to get started!\n\nRead the [godocs](https://godoc.org/github.com/get-ion/ion) for a better understanding.\n\n### 💙 Support\n\n- [Post](https://github.com/get-ion/issues-v1/issues) a feature request or report a bug\n- :star: and watch [the public repository](https://github.com/get-ion/ion/stargazers), will keep you up to date\n- :earth_americas: publish [an article](https://medium.com/search?q=ionframework) or share a [tweet](https://twitter.com/hashtag/ionframework) about your personal experience with ion\n\n### 🥇 People\n\nThe current lead maintainer is [Bill Qeras, Jr.](https://github.com/hiveminded)\n\n[List of all contributors](https://github.com/get-ion/ion/graphs/contributors)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fget-ion%2Fion","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fget-ion%2Fion","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fget-ion%2Fion/lists"}