{"id":50359839,"url":"https://github.com/thecodearcher/limen","last_synced_at":"2026-05-30T01:03:14.134Z","repository":{"id":351171632,"uuid":"1041054736","full_name":"thecodearcher/limen","owner":"thecodearcher","description":"Modern, composable authentication for Go","archived":false,"fork":false,"pushed_at":"2026-05-12T01:06:57.000Z","size":668,"stargazers_count":171,"open_issues_count":0,"forks_count":5,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-05-12T03:08:58.188Z","etag":null,"topics":["auth","authentication","better-auth","golang","oauth","oauth2","oidc"],"latest_commit_sha":null,"homepage":"https://limenauth.dev","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thecodearcher.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":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-19T23:11:18.000Z","updated_at":"2026-05-12T01:07:02.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/thecodearcher/limen","commit_stats":null,"previous_names":["thecodearcher/limen"],"tags_count":82,"template":false,"template_full_name":null,"purl":"pkg:github/thecodearcher/limen","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thecodearcher%2Flimen","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thecodearcher%2Flimen/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thecodearcher%2Flimen/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thecodearcher%2Flimen/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thecodearcher","download_url":"https://codeload.github.com/thecodearcher/limen/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thecodearcher%2Flimen/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33676192,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-29T02:00:06.066Z","response_time":107,"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":["auth","authentication","better-auth","golang","oauth","oauth2","oidc"],"created_at":"2026-05-30T01:03:13.617Z","updated_at":"2026-05-30T01:03:14.123Z","avatar_url":"https://github.com/thecodearcher.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://limenauth.dev\"\u003e\n    \u003cimg src=\"./banner.svg\" alt=\"Limen — Composable authentication for Go\" width=\"640\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  A modern, composable authentication library for Go, inspired by \u003ca href=\"https://www.better-auth.com/\"\u003ebetter-auth\u003c/a\u003e.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://limenauth.dev\"\u003eDocumentation\u003c/a\u003e\n  ·\n  \u003ca href=\"https://github.com/thecodearcher/limen/issues\"\u003eIssues\u003c/a\u003e\n  ·\n  \u003ca href=\"https://x.com/limenauth\"\u003eX (@limenauth)\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://pkg.go.dev/github.com/thecodearcher/limen\"\u003e\u003cimg src=\"https://img.shields.io/badge/reference-pkg.go.dev-ffffff?style=flat\u0026colorA=000000\u0026colorB=000000\u0026logo=go\u0026logoColor=white\" alt=\"Go reference\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/thecodearcher/limen/stargazers\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/thecodearcher/limen?style=flat\u0026colorA=000000\u0026colorB=000000\u0026logo=github\" alt=\"GitHub stars\" /\u003e\u003c/a\u003e\n\n\u003c/p\u003e\n\nLimen is a modular authentication library for Go that takes a **plugin-first** approach — the core ships with interfaces, session management, and security primitives, while every authentication method lives in its own importable Go module. You compose exactly the auth stack your application needs without pulling in code/dependencies you don't use.\n\nOut of the box, Limen provides:\n\n- Credential/password authentication\n- OAuth 2.0\n- Two-factor authentication\n- Session management\n- ...and more\n\nBring your own database, bring your own framework — Limen adapts to your stack, not the other way around.\n\n## Documentation\n\nFull guides, configuration reference, and plugin documentation are available at **[limenauth.dev](https://limenauth.dev)**.\n\n## Requirements\n\n- Go 1.25+\n\n## Installation\n\n```bash\ngo get github.com/thecodearcher/limen\n```\n\nThen add the adapter and plugins your application needs:\n\n```bash\ngo get github.com/thecodearcher/limen/adapters/gorm\ngo get github.com/thecodearcher/limen/plugins/credential-password\n```\n\n## Quick Start\n\n```go\npackage main\n\nimport (\n\t\"log\"\n\t\"net/http\"\n\n\t\"gorm.io/driver/postgres\"\n\t\"gorm.io/gorm\"\n\n\t\"github.com/thecodearcher/limen\"\n\tgormadapter \"github.com/thecodearcher/limen/adapters/gorm\"\n\tcredentialpassword \"github.com/thecodearcher/limen/plugins/credential-password\"\n)\n\nfunc main() {\n\tdb, err := gorm.Open(postgres.Open(\"your-dsn\"), \u0026gorm.Config{})\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\tauth, err := limen.New(\u0026limen.Config{\n\t\tBaseURL:  \"http://localhost:8080\",\n\t\tDatabase: gormadapter.New(db),\n\t\tSecret:   []byte(\"your-32-byte-secret-key-here!!!!\"),\n\t\tPlugins: []limen.Plugin{\n\t\t\tcredentialpassword.New(),\n\t\t},\n\t})\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\tmux := http.NewServeMux()\n\tmux.Handle(\"/api/auth/\", auth.Handler())\n\n\tlog.Println(\"listening on :8080\")\n\tlog.Fatal(http.ListenAndServe(\":8080\", mux))\n}\n```\n\nAlternatively, set the `LIMEN_SECRET` environment variable and omit the `Secret` from the struct.\n\nFor a more complete example with OAuth providers, two-factor auth, and Gin integration, see the [examples](examples/).\n\nFor full configuration options, usage, and plugin APIs, visit **[limenauth.dev](https://limenauth.dev)**.\n\n## Contributing\n\nContributions are welcome! Please open an issue or submit a pull request.\n\n## Security\n\nFound a security issue? Please **do not** open a public issue. Email\n[security@limenauth.dev](mailto:security@limenauth.dev) instead. See\n[SECURITY.md](SECURITY.md) for full details on our disclosure process.\n\n## License\n\nMIT License — see [LICENSE](LICENSE) for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthecodearcher%2Flimen","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthecodearcher%2Flimen","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthecodearcher%2Flimen/lists"}