{"id":15095924,"url":"https://github.com/qingwave/weave","last_synced_at":"2025-04-07T18:11:26.171Z","repository":{"id":37642684,"uuid":"226754403","full_name":"qingwave/weave","owner":"qingwave","description":"Golang+Vue3 application starter,  Simple but functional.","archived":false,"fork":false,"pushed_at":"2024-09-26T18:54:57.000Z","size":41650,"stargazers_count":565,"open_issues_count":27,"forks_count":126,"subscribers_count":14,"default_branch":"master","last_synced_at":"2025-03-31T17:09:26.255Z","etag":null,"topics":["docker","element-plus","gin","go","golang","jwt","kuerbentes","postgres","rbac","redis","restful","swagger","vue","vue3"],"latest_commit_sha":null,"homepage":"https://qingwave.github.io/weave/","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/qingwave.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"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":"2019-12-09T00:43:32.000Z","updated_at":"2025-03-31T07:59:52.000Z","dependencies_parsed_at":"2023-02-17T01:46:09.845Z","dependency_job_id":"a4186f1c-1033-4bb1-b587-9a4d2ae7b0c9","html_url":"https://github.com/qingwave/weave","commit_stats":{"total_commits":69,"total_committers":3,"mean_commits":23.0,"dds":0.2753623188405797,"last_synced_commit":"ef6d6c539bd4b6cd0ab7396edf49f92d1f7cd410"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qingwave%2Fweave","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qingwave%2Fweave/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qingwave%2Fweave/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qingwave%2Fweave/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/qingwave","download_url":"https://codeload.github.com/qingwave/weave/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247704569,"owners_count":20982298,"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":["docker","element-plus","gin","go","golang","jwt","kuerbentes","postgres","rbac","redis","restful","swagger","vue","vue3"],"created_at":"2024-09-25T15:43:59.279Z","updated_at":"2025-04-07T18:11:26.135Z","avatar_url":"https://github.com/qingwave.png","language":"Go","readme":"# Weave\n\n[![workflows](https://github.com/qingwave/weave/workflows/weave/badge.svg)](https://github.com/qingwave/weave/actions?query=workflow%3Aweave)\n[![Go Report Card](https://goreportcard.com/badge/github.com/qingwave/weave)](https://goreportcard.com/report/github.com/qingwave/weave)\n[![codecov](https://codecov.io/gh/qingwave/weave/branch/master/graph/badge.svg?token=B93TcvKqA6)](https://codecov.io/gh/qingwave/weave)\n[![GitHub license](https://img.shields.io/github/license/qingwave/weave)](https://github.com/qingwave/weave/blob/master/LICENSE)\n\n\u003cimg src=\"web/src/assets/weave.png\" width=\"50px\"\u003e\n\n---\n\n\u003e English | [中文](README_zh.md)\n\nWeave is a Go + Vue3 application starter, simple but functional, supported by gin, gorm, redis, postgres, vue, element-plus, websocket and much more.\n\nSee [Demo](https://qingwave.github.io/weave/).\n\n\u003ctable\u003e\n  \u003ctr\u003e\n     \u003ctd width=\"50%\" align=\"center\"\u003e\u003cb\u003eLogin\u003c/b\u003e\u003c/td\u003e\n     \u003ctd width=\"50%\" align=\"center\"\u003e\u003cb\u003eHome\u003c/b\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n     \u003ctd\u003e\u003cimg src=\"document/img/login.png\"/\u003e\u003c/td\u003e\n     \u003ctd\u003e\u003cimg src=\"document/img/hello.png\"/\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n      \u003ctd width=\"50%\" align=\"center\"\u003e\u003cb\u003eDashboard\u003c/b\u003e\u003c/td\u003e\n      \u003ctd width=\"50%\" align=\"center\"\u003e\u003cb\u003eApp\u003c/b\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n     \u003ctd\u003e\u003cimg src=\"document/img/dashboard.png\"/\u003e\u003c/td\u003e\n     \u003ctd\u003e\u003cimg src=\"document/img/app.png\"/\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n      \u003ctd width=\"50%\" align=\"center\"\u003e\u003cb\u003eWeb Shell\u003c/b\u003e\u003c/td\u003e\n      \u003ctd width=\"50%\" align=\"center\"\u003e\u003cb\u003eWeb Code Editor\u003c/b\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n     \u003ctd\u003e\u003cimg src=\"document/img/webshell.png\"/\u003e\u003c/td\u003e\n     \u003ctd\u003e\u003cimg src=\"document/img/log.png\"/\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n## Demo\n\nDemo website: see https://qingwave.github.io/weave/\n\nRun ui with docker(no server and databases)\n```bash\ndocker run -d -p 8080:80 --name weave-frontend qingwave/weave-frontend:mock\n```\n\n## Features\nServer support features:\n- Restful api, write by gin\n- MVC structure\n- Postgres storage, via gorm\n- Swagger doc, support by swag\n- Structured log, support by logrus\n- Prometheus monitor\n- PProf debug\n- Graceful shutdown\n- Authentication, support jwt\n- Request rate limit, server level or user ip\n- OAuth Login and store hashed password\n- Redis cache\n- RBAC supported\n- Container application management, support docker and kubernetes\n- Post management\n\nFrontend support features:\n- Vue3 supported\n- UI with element-plus\n- Build with vite\n- Charts integration, support by echarts\n- WebShell supported\n- Windi CSS\n- OAuth Login\n- Web code editor, support by codemirror\n- MarkDown preview and editor\n\nTODOs\n- [x] Redis cache\n- [x] Request rate limit\n- [x] Authentication\n- [x] WebSocket\n- [x] Trace\n- [x] UI\n- [x] WebShell\n- [ ] Dark theme\n- [ ] Mobile UI \n## Get started\nBefore starting, you should already install [golang](https://go.dev/), [docker](https://docs.docker.com/engine/install/) and [nodejs](https://nodejs.org/en/download/) in your develop env.\n### Run server\n\nEnv:\n- golang (1.18 or later)\n\nInstall dependencies, postgresql, redis, swag \n```bash\nmake init\n```\n\nrun locally\n```bash\nmake run\n```\n\nrun server in docker\n```bash\n# build image\nmake docker-build-server\n# run server\nmake docker-run-server\n```\n\n\u003e For Windows, you can run script in [Makefile](./Makefile) manually\n\n### Test api\nSee more api in http://localhost:8080/index\nSee swagger http://localhost:8080/swagger/index.html#/\n\nRegister user\n```bash\ncurl -XPOST http://localhost:8080/api/v1/auth/user -d '{\"name\": \"zhang3\", \"email\": \"zhang3@t.com\",\"password\": \"123456\"}'\n```\n\nLogin, get jwt token\n\u003e Only admin user can access any apis, other user need create RBAC policy\n```bash\ncurl -XPOST http://localhost:8080/api/v1/auth/token -d '{\"name\": \"admin\", \"password\": \"123456\"}'\n```\nResponse as follows, set token in `Authorization` Header\n```json\n{\n  \"code\": 200,\n  \"msg\": \"success\",\n  \"data\": {\n    \"token\": \"xxx\",\n    \"describe\": \"set token in Authorization Header, [Authorization: Bearer {token}]\"\n  }\n}\n```\n\nGet users\n```bash\ntoken=xxx\ncurl -X 'GET' 'http://localhost:8080/api/v1/users' -H \"Authorization: Bearer $token\"\n```\n\n### Run UI\nAssume you have installed `Nodejs`, if not, install it by [nvm](https://github.com/nvm-sh/nvm#install--update-script)\n\nRun ui with mockjs\n```bash\ncd web\nnpm run mock\n```\n\nIf your frontend deploy in the remote, please change `server.host` and `server.https` in [vite.config.js](./web/vite.config.js).\n\nRun ui with command `make ui` or\n```bash\ncd web\nnpm i\nnpm run dev \n```\n\nDefault admin user `admin/123456`\nor demo user `demo/123456`\n\n\u003e Only admin user can access all api, other user must config RBAC at first\n\nExplore in http://127.0.0.1:8081\n\nrun frontend in docker\n```bash\n# build image\nmake docker-build-ui\n# run frontend\nmake docker-run-ui\n```\n\nMore ui in [img](./document/img/)\n\n- Login page\n![login](./document/img/login.png)\n\n- Dashboard page\n![dashboard](./document/img/dashboard.png)\n\n- App page\n![app](./document/img/app.png)\n\n- Webshell page\n![webshell](./document/img/webshell.png)\n\n- Blog list\n![Blog](./document/img/blog.png)\n\n- Article\n![article](./document/img/document.png)\n\n### Documents\n- [Contributing](./CONTRIBUTING.md), contributing details\n- [Config](./config/app.yaml), your can enable docker/kubernetes in config\n- [OAuth](./document/oauth.md)\n- [RBAC](./document/authentication.md)\n","funding_links":[],"categories":["运维管理平台"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqingwave%2Fweave","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fqingwave%2Fweave","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqingwave%2Fweave/lists"}