Skip to content

nbclass123/weave

 
 

Repository files navigation

Weave

workflows Go Report Card codecov GitHub license

Simple but functional Go+Vue application starter, supported by gin, gorm, redis, postgres, vue, element-plus, websocket and much more.

Login Home
Dashboard App
Web Shell Web Code Editor

Features

Server support features:

  • Restful api, write by gin
  • MVC structure
  • Postgres storage, via gorm
  • Swagger doc, support by swag
  • Structured log, support by logrus
  • Prometheus monitor
  • PProf debug
  • Graceful shutdown
  • Authentication, support jwt
  • Request rate limit, server level or user ip
  • Redis cache
  • RBAC, support by casbin
  • Container application management, support docker and kubernetes
  • Post management

Frontend support features:

  • Vue3 supported
  • UI with element-plus
  • Build with vite
  • Charts integration, support by echarts
  • WebShell supported
  • Windi CSS
  • OAuth Login
  • Web code editor, support by codemirror
  • MarkDown preview and editor

TODOs

  • Redis cache
  • Request rate limit
  • Authentication
  • WebSocket
  • Trace
  • UI
  • WebShell
  • Dark theme
  • Mobile UI

Get started

Before starting, you should already install golang, docker and nodejs in your develop env.

Run server

Install dependencies, postgresql, redis, swag

make init

run locally

make run

For Windows, you can run script in Makefile manually

See http://localhost:8080

Test api

See more in swagger http://localhost:8080/swagger/index.html#/

Register user

curl -XPOST http://localhost:8080/api/v1/auth/user -d '{"name": "zhang3", "email": "zhang3@t.com","password": "123456"}'

Login, get jwt token

curl -XPOST http://localhost:8080/api/v1/auth/token -d '{"name": "zhang3", "password": "123456"}'

Response as follows, set token in Authorization Header

{
  "code": 200,
  "msg": "success",
  "data": {
    "token": "xxx",
    "describe": "set token in Authorization Header, [Authorization: Bearer {token}]"
  }
}

Get users

token=xxx
curl -X 'GET' 'http://localhost:8080/api/v1/users' -H "Authorization: Bearer $token"

Container web shell

  1. login in swagger http://localhost:8080/swagger/index.html#/auth/post_login
  2. create container http://localhost:8080/swagger/index.html#/user/post_api_v1_users
{
  "cmd": [
    "top"
  ],
  "image": "alpine",
  "name": "myapp"
}
  1. open cloudshell http://localhost:8080/api/v1/containers/{:containerid}/terminal

Run UI

Assume you have installed Nodejs, if not, install it by nvm

cd web
npm i
npm run dev 

Default admin user admin/123456 or demo user demo/123456

Explore in http://127.0.0.1:8081

More ui in img

Login page login

Dashboard page dashboard

App page app

Webshell page webshell

Blog list Blog

Article article

Documents

About

Golang+Vue3 application starter, Simple but functional.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 50.3%
  • Vue 43.7%
  • JavaScript 4.0%
  • HTML 1.3%
  • Makefile 0.6%
  • SCSS 0.1%