{"id":13692264,"url":"https://github.com/rookie-ninja/rk-boot","last_synced_at":"2025-05-15T16:08:31.389Z","repository":{"id":37008795,"uuid":"283924511","full_name":"rookie-ninja/rk-boot","owner":"rookie-ninja","description":"Build microservice with rk-boot and let the team take over clean and tidy code.","archived":false,"fork":false,"pushed_at":"2024-10-04T14:51:20.000Z","size":7474,"stargazers_count":531,"open_issues_count":14,"forks_count":58,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-04-11T23:04:32.989Z","etag":null,"topics":["echo","echo-middleware","gin","gin-middleware","go","go-project-structure","golang","gorilla-mux","grpc","grpc-middleware","middleware"],"latest_commit_sha":null,"homepage":"https://rk.mofcloud.com","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rookie-ninja.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-07-31T02:36:56.000Z","updated_at":"2025-03-30T15:43:18.000Z","dependencies_parsed_at":"2024-01-08T16:08:49.947Z","dependency_job_id":"2a8fdb4a-636f-4df2-93c6-3ff3ecf87803","html_url":"https://github.com/rookie-ninja/rk-boot","commit_stats":{"total_commits":209,"total_committers":11,"mean_commits":19.0,"dds":"0.39234449760765555","last_synced_commit":"1edec08fd446757e40f6b664dbbabf76aae3f666"},"previous_names":[],"tags_count":156,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rookie-ninja%2Frk-boot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rookie-ninja%2Frk-boot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rookie-ninja%2Frk-boot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rookie-ninja%2Frk-boot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rookie-ninja","download_url":"https://codeload.github.com/rookie-ninja/rk-boot/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254374475,"owners_count":22060611,"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":["echo","echo-middleware","gin","gin-middleware","go","go-project-structure","golang","gorilla-mux","grpc","grpc-middleware","middleware"],"created_at":"2024-08-02T17:00:55.353Z","updated_at":"2025-05-15T16:08:26.379Z","avatar_url":"https://github.com/rookie-ninja.png","language":"Go","funding_links":[],"categories":["开源类库","Web框架","Open source library","Web Frameworks","Utility"],"sub_categories":["Web 框架","实用程序/Miscellaneous","Web Framework","Utility/Miscellaneous","Fail injection","HTTP Clients"],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://rkdev.info\"\u003e\u003cimg src=\"docs/img/rk-boot-logo.png\" alt=\"rk-boot\" width=\"298\" /\u003e\u003c/a\u003e \n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  Build microservice with rk-boot and let the team take over clean and tidy code.\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n \u003ca href=\"https://github.com/rookie-ninja/rk-boot/actions/workflows/ci.yml\"\u003e\u003cimg src=\"https://github.com/rookie-ninja/rk-boot/actions/workflows/ci.yml/badge.svg\"\u003e\u003c/a\u003e\n \u003ca href=\"https://codecov.io/gh/rookie-ninja/rk-boot\"\u003e\u003cimg src=\"https://codecov.io/gh/rookie-ninja/rk-boot/branch/master/graph/badge.svg?token=BZ6KWGAXNP\"\u003e\u003c/a\u003e\n \u003ca href=\"https://goreportcard.com/report/github.com/rookie-ninja/rk-boot\"\u003e\u003cimg src=\"https://goreportcard.com/badge/github.com/rookie-ninja/rk-boot\"\u003e\u003c/a\u003e\n \u003ca href=\"https://sourcegraph.com/github.com/rookie-ninja/rk-boot?badge\"\u003e\u003cimg src=\"https://sourcegraph.com/github.com/rookie-ninja/rk-boot/-/badge.svg\"\u003e\u003c/a\u003e\n \u003ca href=\"https://godoc.org/github.com/rookie-ninja/rk-boot\"\u003e\u003cimg src=\"https://godoc.org/github.com/rookie-ninja/rk-boot?status.svg\"\u003e\u003c/a\u003e\n \u003ca href=\"https://github.com/rookie-ninja/rk-boot/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/release/rookie-ninja/rk-boot.svg?style=flat-square\"\u003e\u003c/a\u003e\n \u003ca href=\"https://opensource.org/licenses/Apache-2.0\"\u003e\u003cimg src=\"https://img.shields.io/badge/License-Apache%202.0-blue.svg\"\u003e\u003c/a\u003e\n\u003cp\u003e\n\n\u003cdiv id=\"badges\" align=\"center\"\u003e\n  \u003ca href=\"https://medium.com/@pointgoal\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Medium-12100E?style=for-the-badge\u0026logo=medium\u0026logoColor=white\" alt=\"Medium Badge\"/\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://rkdev.info\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Official Site-blue?logo=mdbook\u0026logoColor=white\u0026style=for-the-badge\" alt=\"Docs Badge\"/\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://rk-syz1767.slack.com/\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Slack-4A154B?style=for-the-badge\u0026logo=slack\u0026logoColor=white\" alt=\"Docs Badge\"/\u003e\n  \u003c/a\u003e\n\u003c/div\u003e\n\n\u003cp align=\"center\"\u003e\n \u003ca href=\"\"\u003e\u003cimg src=\"docs/img/rk-op.gif\"\u003e\u003c/a\u003e\n\u003cp\u003e\n\n## Concept\nrk-boot is a library which can manage backend service dependencies with YAML.\n\nStandardize, unify and simplify microservice is huge challenge when project are getting bigger. Build microservice with rk-boot and let the team take over clean and tidy code.\n\n![image](docs/img/boot-arch.png)\n\n## Quick Start\nWe will start [gin-gonic/gin](https://github.com/gin-gonic/gin) server with rk-boot.\n\n### Install \n\n```shell\ngo get github.com/rookie-ninja/rk-boot/v2\ngo get github.com/rookie-ninja/rk-gin/v2\n```\n\n### Code\n\n\u003cdetails\u003e\n  \u003csummary\u003eboot.yaml\u003c/summary\u003e\n\n```yaml\n---\ngin:\n  - name: greeter                                          # Required\n    port: 8080                                             # Required\n    enabled: true                                          # Required\n    sw:\n      enabled: true                                        # Optional, default: false\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003emain.go\u003c/summary\u003e\n\n```go\n// Copyright (c) 2021 rookie-ninja\n//\n// Use of this source code is governed by an Apache-style\n// license that can be found in the LICENSE file.\n\npackage main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"github.com/gin-gonic/gin\"\n\t\"github.com/rookie-ninja/rk-boot/v2\"\n\t\"github.com/rookie-ninja/rk-gin/v2/boot\"\n\t\"net/http\"\n)\n\n// @title Swagger Example API\n// @version 1.0\n// @description This is a sample rk-demo server.\n// @termsOfService http://swagger.io/terms/\n\n// @securityDefinitions.basic BasicAuth\n\n// @contact.name API Support\n// @contact.url http://www.swagger.io/support\n// @contact.email support@swagger.io\n\n// @license.name Apache 2.0\n// @license.url http://www.apache.org/licenses/LICENSE-2.0.html\nfunc main() {\n\t// Create a new boot instance.\n\tboot := rkboot.NewBoot()\n\n\t// Register handler\n\tentry := rkgin.GetGinEntry(\"greeter\")\n\tentry.Router.GET(\"/v1/greeter\", Greeter)\n\n\t// Bootstrap\n\tboot.Bootstrap(context.TODO())\n\n\tboot.WaitForShutdownSig(context.TODO())\n}\n\n// Greeter handler\n// @Summary Greeter\n// @Id 1\n// @Tags Hello\n// @version 1.0\n// @Param name query string true \"name\"\n// @produce application/json\n// @Success 200 {object} GreeterResponse\n// @Router /v1/greeter [get]\nfunc Greeter(ctx *gin.Context) {\n\tctx.JSON(http.StatusOK, \u0026GreeterResponse{\n\t\tMessage: fmt.Sprintf(\"Hello %s!\", ctx.Query(\"name\")),\n\t})\n}\n\ntype GreeterResponse struct {\n\tMessage string\n}\n```\n\u003c/details\u003e\n\n### Validate\n\n\u003cdetails\u003e\n  \u003csummary\u003eCheck API\u003c/summary\u003e\n\n```shell script\n$ go run main.go\n\n$ curl -X GET localhost:8080/v1/greeter?name=rk-dev\n{\"Message\":\"Hello rk-dev!\"}\n\n$ curl -X GET localhost:8080/rk/v1/ready\n{\n  \"ready\": true\n}\n\n$ curl -X GET localhost:8080/rk/v1/alive\n{\n  \"alive\": true\n}\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003eCheck Swagger UI\u003c/summary\u003e\n\nSwagger UI: [http://localhost:8080/sw](http://localhost:8080/sw)\n\n![image](example/web/gin/docs/img/simple-sw.png)\n\u003c/details\u003e\n\n## Supported plugins\n\u003ctable\u003e\n    \u003ctr\u003e\n        \u003ctd align=\"center\" valign=\"middle\"\u003e\u003ca href=\"https://rkdocs.mofcloud.com/getting-started/web/gin/\" target=\"_blank\"\u003e\u003cimg src=\"https://rk.mofcloud.com/images/grpc.svg\" width=\"110\" valign=\"middle\" /\u003e\u003c/a\u003e\u003c/td\u003e\n        \u003ctd align=\"center\" valign=\"middle\"\u003e\u003ca href=\"https://rkdocs.mofcloud.com/getting-started/web/grpc/\" target=\"_blank\"\u003e\u003cimg src=\"https://rk.mofcloud.com/images/gin.svg\" width=\"110\" height=\"100\" valign=\"middle\" /\u003e\u003c/a\u003e\u003c/td\u003e\n        \u003ctd align=\"center\" valign=\"middle\"\u003e\u003ca href=\"https://rkdocs.mofcloud.com/getting-started/web/echo/\" target=\"_blank\"\u003e\u003cimg src=\"https://rk.mofcloud.com/images/echo.svg\" width=\"110\" height=\"100\" valign=\"middle\" /\u003e\u003c/a\u003e\u003c/td\u003e\n        \u003ctd align=\"center\" valign=\"middle\"\u003e\u003ca href=\"https://rkdocs.mofcloud.com/getting-started/web/gf/\" target=\"_blank\"\u003e\u003cimg src=\"https://rk.mofcloud.com/images/goframe.svg\" width=\"110\" height=\"100\" valign=\"middle\" /\u003e\u003c/a\u003e\u003c/td\u003e\n        \u003ctd align=\"center\" valign=\"middle\"\u003e\u003ca href=\"https://rkdocs.mofcloud.com/getting-started/web/fiber/\" target=\"_blank\"\u003e\u003cimg src=\"https://rk.mofcloud.com/images/fiber.svg\" width=\"110\" height=\"100\" valign=\"middle\" /\u003e\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd align=\"center\" valign=\"middle\"\u003e\u003ca href=\"https://rkdocs.mofcloud.com/getting-started/web/zero/\" target=\"_blank\"\u003e\u003cimg src=\"https://www.rk.mofcloud.com/images/go-zero.svg\" width=\"110\" height=\"100\" valign=\"middle\" /\u003e\u003c/a\u003e\u003c/td\u003e\n        \u003ctd align=\"center\" valign=\"middle\"\u003e\u003ca href=\"https://rkdocs.mofcloud.com/getting-started/web/mux/\" target=\"_blank\"\u003e\u003cimg src=\"https://rk.mofcloud.com/images/mux.svg\" width=\"110\" height=\"100\" valign=\"middle\" /\u003e\u003c/a\u003e\u003c/td\u003e\n        \u003ctd align=\"center\" valign=\"middle\"\u003e\u003ca href=\"https://rkdocs.mofcloud.com/getting-started/database/mysql/\" target=\"_blank\"\u003e\u003cimg src=\"https://rk.mofcloud.com/images/mysql.svg\" width=\"110\" height=\"100\" valign=\"middle\" /\u003e\u003c/a\u003e\u003c/td\u003e\n        \u003ctd align=\"center\" valign=\"middle\"\u003e\u003ca href=\"https://rkdocs.mofcloud.com/getting-started/database/sqlite/\" target=\"_blank\"\u003e\u003cimg src=\"https://rk.mofcloud.com/images/sqlite.svg\" width=\"110\" height=\"100\" valign=\"middle\" /\u003e\u003c/a\u003e\u003c/td\u003e\n        \u003ctd align=\"center\" valign=\"middle\"\u003e\u003ca href=\"https://rkdocs.mofcloud.com/getting-started/database/sqlserver/\" target=\"_blank\"\u003e\u003cimg src=\"https://rk.mofcloud.com/images/sqlserver.svg\" width=\"110\" height=\"100\" valign=\"middle\" /\u003e\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd align=\"center\" valign=\"middle\"\u003e\u003ca href=\"https://rkdocs.mofcloud.com/rk-boot/getting-started/database/postgres/\" target=\"_blank\"\u003e\u003cimg src=\"https://rk.mofcloud.com/images/postgresql.svg\" width=\"110\" height=\"100\" valign=\"middle\" /\u003e\u003c/a\u003e\u003c/td\u003e\n        \u003ctd align=\"center\" valign=\"middle\"\u003e\u003ca href=\"https://rkdocs.mofcloud.com/rk-boot/getting-started/database/clickhouse/\" target=\"_blank\"\u003e\u003cimg src=\"https://rk.mofcloud.com/images/clickhouse.svg\" width=\"110\" height=\"100\" valign=\"middle\" /\u003e\u003c/a\u003e\u003c/td\u003e\n        \u003ctd align=\"center\" valign=\"middle\"\u003e\u003ca href=\"https://rkdocs.mofcloud.com/rk-boot/getting-started/database/mongodb/\" target=\"_blank\"\u003e\u003cimg src=\"https://rk.mofcloud.com/images/mongodb.svg\" width=\"110\" height=\"100\" valign=\"middle\" /\u003e\u003c/a\u003e\u003c/td\u003e\n        \u003ctd align=\"center\" valign=\"middle\"\u003e\u003ca href=\"https://rkdocs.mofcloud.com/rk-boot/getting-started/database/redis/\" target=\"_blank\"\u003e\u003cimg src=\"https://rk.mofcloud.com/images/redis.svg\" width=\"110\" height=\"100\" valign=\"middle\" /\u003e\u003c/a\u003e\u003c/td\u003e\n        \u003ctd align=\"center\" valign=\"middle\"\u003e\u003ca href=\"https://github.com/rookie-ninja/rk-cloud\" target=\"_blank\"\u003e\u003cimg src=\"https://rk.mofcloud.com/images/aws.svg\" width=\"110\" height=\"100\" valign=\"middle\" /\u003e\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd align=\"center\" valign=\"middle\"\u003e\u003ca href=\"https://github.com/rookie-ninja/rk-cloud\" target=\"_blank\"\u003e\u003cimg src=\"https://rk.mofcloud.com/images/tencentcloud.svg\" width=\"110\" height=\"100\" valign=\"middle\" /\u003e\u003c/a\u003e\u003c/td\u003e\n        \u003ctd align=\"center\" valign=\"middle\"\u003e\u003ca href=\"https://rkdocs.mofcloud.com/user-guide/gin/basic/swagger-ui/\" target=\"_blank\"\u003e\u003cimg src=\"https://rk.mofcloud.com/images/swagger.svg\" width=\"110\" height=\"100\" valign=\"middle\" /\u003e\u003c/a\u003e\u003c/td\u003e\n        \u003ctd align=\"center\" valign=\"middle\"\u003e\u003ca href=\"https://rkdocs.mofcloud.com/user-guide/gin/basic/prometheus-client/\" target=\"_blank\"\u003e\u003cimg src=\"https://rk.mofcloud.com/images/prom.svg\" width=\"110\" height=\"100\" valign=\"middle\" /\u003e\u003c/a\u003e\u003c/td\u003e\n        \u003ctd align=\"center\" valign=\"middle\"\u003e\u003ca href=\"https://rkdocs.mofcloud.com/user-guide/gin/basic/docs-ui/\" target=\"_blank\"\u003e\u003cimg src=\"https://rk.mofcloud.com/images/rapi.svg\" width=\"110\" height=\"100\" valign=\"middle\" /\u003e\u003c/a\u003e\u003c/td\u003e\n        \u003ctd align=\"center\" valign=\"middle\"\u003e\u003ca href=\"https://rkdocs.mofcloud.com/user-guide/gin/basic/pprof/\" target=\"_blank\"\u003e\u003cimg src=\"https://rk.mofcloud.com/images/pprof.svg\" width=\"110\" height=\"100\" valign=\"middle\" /\u003e\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd align=\"center\" valign=\"middle\"\u003e\u003ca href=\"https://rkdocs.mofcloud.com/user-guide/gin/advanced/config/\" target=\"_blank\"\u003e\u003cimg src=\"https://rk.mofcloud.com/images/viper.svg\" width=\"110\" height=\"100\" valign=\"middle\" /\u003e\u003c/a\u003e\u003c/td\u003e\n        \u003ctd align=\"center\" valign=\"middle\"\u003e\u003ca href=\"https://rkdocs.mofcloud.com/user-guide/gin/advanced/logging/\" target=\"_blank\"\u003e\u003cimg src=\"https://rk.mofcloud.com/images/zap.svg\" width=\"110\" height=\"100\" valign=\"middle\" /\u003e\u003c/a\u003e\u003c/td\u003e\n        \u003ctd align=\"center\" valign=\"middle\"\u003e\u003ca href=\"https://rkdocs.mofcloud.com/user-guide/gin/advanced/tls/\" target=\"_blank\"\u003e\u003cimg src=\"https://rk.mofcloud.com/images/tls.svg\" width=\"110\" height=\"100\" valign=\"middle\" /\u003e\u003c/a\u003e\u003c/td\u003e\n        \u003ctd align=\"center\" valign=\"middle\"\u003e\u003ca href=\"https://rkdocs.mofcloud.com/user-guide/gin/basic/middleware-gzip/\" target=\"_blank\"\u003e\u003cimg src=\"https://rk.mofcloud.com/images/gzip.svg\" width=\"110\" height=\"100\" valign=\"middle\" /\u003e\u003c/a\u003e\u003c/td\u003e\n        \u003ctd align=\"center\" valign=\"middle\"\u003e\u003ca href=\"https://rkdocs.mofcloud.com/user-guide/gin/basic/middleware-timeout/\" target=\"_blank\"\u003e\u003cimg src=\"https://rk.mofcloud.com/images/timeout.svg\" width=\"110\" height=\"100\" valign=\"middle\" /\u003e\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd align=\"center\" valign=\"middle\"\u003e\u003ca href=\"https://rkdocs.mofcloud.com/user-guide/gin/basic/middleware-csrf/\" target=\"_blank\"\u003e\u003cimg src=\"https://rk.mofcloud.com/images/csrf.svg\" width=\"110\" height=\"100\" valign=\"middle\" /\u003e\u003c/a\u003e\u003c/td\u003e\n        \u003ctd align=\"center\" valign=\"middle\"\u003e\u003ca href=\"https://rkdocs.mofcloud.com/user-guide/gin/basic/middleware-cors/\" target=\"_blank\"\u003e\u003cimg src=\"https://rk.mofcloud.com/images/cors.svg\" width=\"110\" height=\"100\" valign=\"middle\" /\u003e\u003c/a\u003e\u003c/td\u003e\n        \u003ctd align=\"center\" valign=\"middle\"\u003e\u003ca href=\"https://rkdocs.mofcloud.com/user-guide/gin/basic/middleware-jwt/\" target=\"_blank\"\u003e\u003cimg src=\"https://rk.mofcloud.com/images/jwt.svg\" width=\"110\" height=\"100\" valign=\"middle\" /\u003e\u003c/a\u003e\u003c/td\u003e\n        \u003ctd align=\"center\" valign=\"middle\"\u003e\u003ca href=\"https://rkdocs.mofcloud.com/user-guide/gin/basic/middleware-auth/\" target=\"_blank\"\u003e\u003cimg src=\"https://rk.mofcloud.com/images/auth.svg\" width=\"110\" height=\"100\" valign=\"middle\" /\u003e\u003c/a\u003e\u003c/td\u003e\n        \u003ctd align=\"center\" valign=\"middle\"\u003e\u003ca href=\"https://rkdocs.mofcloud.com/user-guide/gin/basic/middleware-tracing/\" target=\"_blank\"\u003e\u003cimg src=\"https://rk.mofcloud.com/images/trace.svg\" width=\"110\" height=\"100\" valign=\"middle\" /\u003e\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n\u003c/table\u003e\n\n## Development Status: Stable\n\n## Build instruction\nSimply run make all to validate your changes. Or run codes in example/ folder.\n\n- make all\n  If proto or files in boot/assets were modified, then we need to run it.\n\n## Test instruction\nRun unit test with **make test** command.\n\ngithub workflow will automatically run unit test and golangci-lint for testing and lint validation.\n\n## Contributing\nWe encourage and support an active, healthy community of contributors \u0026mdash;\nincluding you! Details are in the [contribution guide](CONTRIBUTING.md) and\nthe [code of conduct](CODE_OF_CONDUCT.md). The rk maintainers keep an eye on\nissues and pull requests, but you can also report any negative conduct to\nlark@rkdev.info.\n\n## License\nIn compliance with open-source standards, this project is released and distributed under the terms of the [Apache 2.0 License](LICENSE)\n\n## Join discussing channel\n| Channel                 | Code                                             |\n|-------------------------|--------------------------------------------------|\n| Wechat group (Chinese)  | ![image](docs/img/wechat-group-cn.png)           |\n| Slack channel (English) | [#rk-boot](https://rk-syz1767.slack.com/) |\n\n## Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=rookie-ninja/rk-boot\u0026type=Date)](https://star-history.com/#rookie-ninja/rk-boot\u0026Date)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frookie-ninja%2Frk-boot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frookie-ninja%2Frk-boot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frookie-ninja%2Frk-boot/lists"}