# train
**Repository Path**: leijmdas/train
## Basic Information
- **Project Name**: train
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-11-21
- **Last Updated**: 2025-11-30
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# learn
[](https://goreportcard.com/report/github.com/blue/learn)
[](https://codecov.io/gh/blue/learn)
[](https://github.com/blue/learn/blob/master/LICENSE)
---
> [English](README.md) | 中文
learn是一个基于Go + Vue3实现的Web应用模板,支持前后端,拥有完整的认证、存储、Restful API、应用管理(docker)功能,主要技术栈包括Go、Vue3、Gin、gorm、redis、postgres、ElementPlus、vite、websocket等。
预览效果:[Demo](https://qingwave.github.io/learn/).
## 功能
后端支持的功能包括:
- Restful API,通过Gin实现
- MVC架构
- Postgres存储,通过gorm
- Swagger文档支持
- 结构化日志,由logrus实现
- Prometheus及监控
- 支持PProf性能分析
- 优雅中止服务
- JWT认证
- 服务限流,支持Server级、IP或者User
- 支持OAuth登录(Github等),密码加密保存
- Redis缓存
- RBAC授权策略
- 博客管理
前端支持的功能包括:
- Vue3开发,使用组合式API
- Element-plus框架
- 使用vite快速编译
- 图标功能, 集成echarts
- Windi CSS,原子化CSS
- OAuth登录
## 快速开始
### Demo
预览效果: https://dev.super-study.com
通过Docker快速运行前端服务(不包含服务器和数据库)
```bash
docker run -d -p 8080:80 --name learn-frontend blue/learn-frontend:mock
```
开始之前,确保安装了基础环境[golang](https://go.dev/), [docker](https://docs.docker.com/engine/install/) 与 [nodejs](https://nodejs.org/en/download/)。
### 运行后端服务
环境:
- golang (1.18之后)
安装依赖 postgresql, redis, swag
```bash
make init
```
本地运行服务
```bash
make run
```
开发模式服务
```bash
vscode 开发模式运行 "Launch main.go"
```
> 对于Windows环境, [Makefile](./Makefile)中的脚本
容器中运行
```bash
# docker image
make docker-docker-server
# run server
make docker-run-server
```
### 测试API
查看所有API http://localhost:8080/index
查看Swagger http://localhost:8080/swagger/index.html#/
注册用户
```bash
curl -XPOST http://localhost:8080/api/v1/auth/user -d '{"name":"张三","phone":"13700002222","password":"123456","email":"test1@example.com"}'
```
获取jwt令牌
> 初始状态只有admin用户可以访问所有接口, 其他用户必须创建RBAC规则
```bash
curl -XPOST http://localhost:8080/api/v1/auth/token -d '{"phone": "13700001111", "password": "123456"}'
```
返回如下, 将token添加到HTTP `Authorization` Header中
```json
{
"code": 200,
"msg": "success",
"data": {
"token": "xxx",
"describe": "set token in Authorization Header, [Authorization: Bearer {token}]",
"role": "C"
}
}
```
获取所有用户接口
```bash
token=xxx # 上个步骤中获取的token
curl -X 'GET' 'http://localhost:8080/api/v1/users' -H "Authorization: Bearer $token"
```
更新接口文档(swagger)
> 新增接口后执行
```
make swagger
```
### 运行后台管理web
安装`Nodejs`(>=v16), 建议通过[nvm](https://github.com/nvm-sh/nvm#install--update-script)
如果前端不在本地部署, 需要改动[vite.config.js](./web/vite.config.js)中的`server.host`与`server.https`,本项目中涉及后端设置Cookie,必须开启Https。
运行前端
```bash
cd web
pnpm i
pnpm run dev
```
默认admin用户/密码:`13700001111/123456`
demo用户 `13700001112/123456`
在Docker中运行
```bash
# docker image
make docker-docker-ui
# run frontend
make docker-run-ui
```
> 初始状态只有admin用户可以访问所有接口, 其他用户必须创建RBAC规则
打开 http://127.0.0.1:8081
更多界面参考 [img](./document/img/)
- 登录页面

- 学员

- 领学礼堂

### 运行领学前端H5
安装`Nodejs`(>=v16), 建议通过[nvm](https://github.com/nvm-sh/nvm#install--update-script)
如果前端不在本地部署, 需要改动[vite.config.js](./web/vite.config.js)中的`server.host`与`server.https`,本项目中涉及后端设置Cookie,必须开启Https。
运行前端
```bash
cd h5
pnpm i
pnpm run dev
```
默认学员帐号/密码:`13700008001/123456`
领学师 `13700009002/123456`
> 初始状态只有13700008001
打开 http://localhost:5173
更多界面参考 [img](./document/img/)
- 登录页面

- 学员个中心

- 单词筛查

### 文档
- [Contributing](./CONTRIBUTING.md),为此项目提交贡献
- [Config](./config/app.yaml), 配置对应功能是否开启
- [总体结构](./document/readme.md)
- [用户、单词管理](./document/user-words.md)
- [训练、研值管理](./document/train-credits.md)
- [前端H5](./document/h5.md)
- [构建部署&服务器](./document/cicd.md)
- [OAuth](./document/oauth.md)
- [RBAC](./document/authentication.md)