Skip to content

Commit

Permalink
添加turbo依赖;更新说明文档;调整命令;
Browse files Browse the repository at this point in the history
  • Loading branch information
cxOrz committed Mar 1, 2023
1 parent 7f04146 commit 38dbca0
Show file tree
Hide file tree
Showing 9 changed files with 186 additions and 114 deletions.
3 changes: 0 additions & 3 deletions .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,5 @@ module.exports = {
// This tells ESLint to load the config from the package `eslint-config-custom`
extends: ["custom"],
settings: {
next: {
rootDir: ["apps/*/"],
},
},
};
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ dist
# misc
.DS_Store
*.pem
stats.html

# debug
npm-debug.log*
Expand Down
92 changes: 22 additions & 70 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

安卓手机上可以用 Termux 来运行NodeJS程序,[查看Termux教程](./apps/server/src/docs/termux.md)

苹果手机请查看 [高级](https://github.com/cxOrz/chaoxing-sign-cli#%E9%AB%98%E7%BA%A7-) 部分,通过这种方式来使用,当然这种方式也适用于其他。
苹果手机请查看 [高级](#高级-🎲) 部分,通过这种方式来使用,当然这种方式也适用于其他。

## 部署 🛠

Expand All @@ -36,18 +36,26 @@ pnpm install
### 命令解释

根目录下:
- `pnpm build`:转译源码,输出到 build 文件夹;必须先转译才能运行程序;
- `pnpm serve`:启动接口、前端服务;
- `pnpm dev:serve`:以开发模式启动接口、启动前端服务并自动在浏览器打开页面;
- `pnpm build`:构建前端页面、转译后端代码;
- `pnpm serve`:启动前端页面、运行后端接口;
- `pnpm start`:运行手动签到功能;
- `pnpm monitor`:启动监听模式,检测到签到将自动签上,无需人工干预;

apps/server 目录下:
- `pnpm start`:运行程序,若有签到则手动完成,若无则退出程序;
- `pnpm build`:转译代码;
- `pnpm start`:运行手动签到功能,若有签到则手动完成,若无则退出程序;
- `pnpm serve`:启动接口;
- `pnpm monitor`:监听模式,检测到签到将自动签上,无需人工干预;
- `pnpm monitor`:启动监听模式,检测到签到将自动签上,无需人工干预;

apps/web 目录下:
- `pnpm serve`:运行 Web 服务;
- `pnpm build`:构建静态页面;

### 基本使用方式

更新仓库代码之后,先构建
进入 `apps/server` 目录下,执行以下步骤:

构建代码
```bash
pnpm build
```
Expand All @@ -56,8 +64,6 @@ pnpm build
pnpm start
```

【注意】对 apps/server/src 目录下任何文件做出修改后,需重新构建才可生效!

## 使用须知 📄

为了节约资源,只对2小时以内的活动签到。若同时有多个有效签到活动,只签最新发布的。将结束的课程移入其他文件夹,减少根目录的课程能够提高活动检测速度。
Expand All @@ -80,76 +86,22 @@ pnpm start

### 监听模式

每次需要时启用2-4小时较为合适,请勿挂着不关。
每次需要时启用 2 - 4 小时较为合适,请勿挂着不关。

## 高级 🎲

以上内容介绍了最基本的用法,接下来介绍一些稍高级一些的使用方法。

### 前端界面

访问 [这里](https://github.com/cxOrz/chaoxing-sign-ui) 查看前端代码如何部署,使用前端页面需要部署好接口才能正常工作。

### 接口服务

运行 `pnpm serve` 将启动接口服务,接下来描述每个接口的参数以及调用方式:

<details>
<summary>展开接口详情</summary>

|路径|请求方式|参数|内容类型|返回内容|
|-|-|-|-|-|
|/|GET|||\< String \>|
|/login|POST|phone, password|JSON|\< String \>|
|/activity|POST|uf, _d, vc3, uid|JSON|JSON|
|/uvtoken|POST|uf, _d, vc3, uid|JSON|\< String \>|
|/qrcode|POST|uf, _d, vc3, name, activeId, uid, fid, enc|JSON|待填|
|/location|POST|uf, _d, vc3, name, activeId, uid, fid, address, lat, lon|JSON|待填|
|/general|POST|uf, _d, vc3, name, activeId, uid, fid|JSON|待填|
|/photo|POST|uf, _d, vc3, name, activeId, uid, fid, objectId|JSON|待填|
|/upload|POST|uf, _d, vc3, uid, file, ?_token|multipart/form-data|待填|
|/qrocr|POST|file|multipart/form-data|\< String \>|
|/monitor/status|POST|phone|JSON|JSON|
|/monitor/start|POST|phone, uf, _d, vc3, uid, lv, fid|JSON|JSON|
|/monitor/stop|POST|phone|JSON|JSON|
除了简单的 `pnpm start` 来手动签到,也可以部署到服务器使用网页版本,别忘了这也是个 Web 项目。

</details>

### 最佳实践

在这里介绍部署接口的最佳方式,前端部署的最佳实践请到它对应的仓库查看。

部署在服务器,步骤如下:

1. 安装 Node 环境,推荐使用 LTS 版本
2. 克隆代码 `git clone https://github.com/cxOrz/chaoxing-sign-cli.git`
3. 进入项目根目录,安装依赖
4. 配置项目的 env.json 文件(可选)
5. 转译源码 `pnpm build`
6. 最后,使用 GNU Screen 或者 PM2 运行接口服务

还有一些事情必需知道:

- 如果要通过UI点击按钮启动监听功能,则要在运行接口服务之前,先运行多次 `pnpm monitor` 来配置每一个使用监听的用户的信息(一个用户一份配置,不配置无法使用UI启动监听),看到 "监听中",即可终止程序,该用户信息已经写入本地。配置完成后,就可以运行 `pnpm serve` 来启动接口了。
- 如果使用腾讯文字识别来解析二维码,请在 `src/env.json` 文件中配置 secretId 和 secretKey,然后重新构建代码。

<details>
<summary>使用云函数注意事项</summary>

1. 此项目可以运行在 AWS Lambda 和 腾讯云函数上运行(均不支持监听)。如有需求运行在 Serverless 容器,请修改 `src/env.json` 中的 `SERVERLESS``true`,然后重新构建代码。
2. 如使用腾讯云函数,请仔细按云函数文档操作,对代码稍作调整,安装依赖、转译源码,并配置云函数启动文件 scf_bootstrap 内容为如下命令
``` bash
#!/bin/bash
/var/lang/node16/bin/node apps/server/build/serve.js
```
- 前端界面,查看 [前端](/apps/web) 的部署方式。
- 后端服务,查看 [服务端](/apps/server) 的部署方式。

</details>
### 一键运行

至此,部署完成,可通过域名或服务器 IP 访问接口的默认路径 `/` ,看到欢迎页面
根目录下执行 `pnpm build` 将自动构建前后端代码,然后执行 `pnpm serve` 将运行前后端服务,并在浏览器弹出项目首页

### 展示

演示地址:https://prod.d6afmntd8nh5y.amplifyapp.com部署在香港,较慢,功能阉割版仅供演示
演示地址:https://prod.d6afmntd8nh5y.amplifyapp.com海外服务器较慢,功能阉割仅供演示UI

![](https://cxorz.blob.core.windows.net/static-files/ui-start.png)
![](https://cxorz.blob.core.windows.net/static-files/ui-qrcode-sign.png)
Expand Down
74 changes: 74 additions & 0 deletions apps/server/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
## 命令解释

- `pnpm build`:转译源码,输出到 build 文件夹;必须先转译才能运行程序;
- `pnpm start`:运行程序,若有签到则手动完成,若无则退出程序;
- `pnpm serve`:启动接口服务;
- `pnpm monitor`:监听模式,检测到签到将自动签上,无需人工干预;

## 基本使用方式

更新仓库代码之后,先构建
```bash
pnpm build
```
构建完成,后续的运行直至下次变更代码,不需要再构建,可以直接运行
```bash
pnpm start
```

【注意】对 src 目录下任何文件做出修改后,需重新构建才可生效!

## 接口服务

运行 `pnpm serve` 将启动接口服务,接下来描述每个接口的参数以及调用方式:

<details>
<summary>展开接口详情</summary>

|路径|请求方式|参数|内容类型|返回内容|
|-|-|-|-|-|
|/|GET|||\< String \>|
|/login|POST|phone, password|JSON|\< String \>|
|/activity|POST|uf, _d, vc3, uid|JSON|JSON|
|/uvtoken|POST|uf, _d, vc3, uid|JSON|\< String \>|
|/qrcode|POST|uf, _d, vc3, name, activeId, uid, fid, enc|JSON|待填|
|/location|POST|uf, _d, vc3, name, activeId, uid, fid, address, lat, lon|JSON|待填|
|/general|POST|uf, _d, vc3, name, activeId, uid, fid|JSON|待填|
|/photo|POST|uf, _d, vc3, name, activeId, uid, fid, objectId|JSON|待填|
|/upload|POST|uf, _d, vc3, uid, file, ?_token|multipart/form-data|待填|
|/qrocr|POST|file|multipart/form-data|\< String \>|
|/monitor/status|POST|phone|JSON|JSON|
|/monitor/start|POST|phone, uf, _d, vc3, uid, lv, fid|JSON|JSON|
|/monitor/stop|POST|phone|JSON|JSON|

</details>

## 最佳实践

部署在服务器,步骤如下:

1. 安装 Node 环境,推荐使用 LTS 版本
2. 克隆代码 `git clone https://github.com/cxOrz/chaoxing-sign-cli.git`
3. 进入项目目录,安装依赖
4. 配置项目的 env.json 文件(可选)
5. 转译源码 `pnpm build`
6. 最后,使用 GNU Screen 或者 PM2 运行接口服务

还有一些事情必需知道:

- 如果要通过UI点击按钮启动监听功能,则要在运行接口服务之前,先运行多次 `pnpm monitor` 来配置每一个使用监听的用户的信息(一个用户一份配置,不配置无法使用UI启动监听),看到 "监听中",即可终止程序,该用户信息已经写入本地。配置完成后,就可以运行 `pnpm serve` 来启动接口了。
- 如果使用腾讯文字识别来解析二维码,请在 `src/env.json` 文件中配置 secretId 和 secretKey,然后重新构建代码。

<details>
<summary>使用云函数注意事项</summary>

1. 此项目可以运行在 AWS Lambda 和 腾讯云函数上运行(均不支持监听)。如有需求运行在 Serverless 容器,请修改 `src/env.json` 中的 `SERVERLESS``true`,然后重新构建代码。
2. 如使用腾讯云函数,请仔细按云函数文档操作,对代码稍作调整,安装依赖、转译源码,并配置云函数启动文件 scf_bootstrap 内容为如下命令
``` bash
#!/bin/bash
/var/lang/node16/bin/node build/serve.js
```

</details>

至此,部署完成,可通过域名或服务器 IP 访问接口的默认路径 `/` ,看到欢迎页面。
33 changes: 5 additions & 28 deletions apps/web/README.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,10 @@
# chaoxing-sign-ui

基于 React.js, 使用 Material UI 组件库构建。作为 [chaoxing-sign-cli](https://github.com/cxOrz/chaoxing-sign-cli) 的客户端,欢迎对本仓库代码进行二次开发。
## 命令

> 注意:本页面只针对此前端项目进行介绍,如需搭配服务端使用,请移步 [这里](https://github.com/cxOrz/chaoxing-sign-cli#%E8%BF%90%E8%A1%8C%E6%8E%A5%E5%8F%A3%E6%9C%8D%E5%8A%A1)
## 描述

流程:克隆项目 -> 安装依赖 -> 构建项目 -> 部署

命令描述:

- `yarn install` ,安装依赖,如果时间太长请尝试挂代理或使用淘宝源。
- `yarn dev` ,启动开发服务器,不要忘记把接口服务(另一个仓库)也运行起来。
- `yarn build` ,构建项目,输出到 dist 文件夹。
- `pnpm install` ,安装依赖,如果时间太长请尝试挂代理或使用淘宝源。
- `pnpm serve` ,启动开发服务器,不要忘记把接口服务也运行起来。
- `pnpm build` ,构建项目,输出到 dist 文件夹。

## 配置

Expand All @@ -26,23 +18,8 @@

步骤:
1. 确认已进行过必要的配置,例如接口地址、文字识别服务。
2. 在本地的项目目录下运行 `yarn build``npm run build` ,将构建网页并输出到 dist 目录下。
2. 在 web 目录下运行 `pnpm build`,将构建网页并输出到 web/dist 目录下。
3. 将 dist 目录内的所有内容(不包括dist文件夹),在静态网站托管页面上传。
4. 通过云开发的默认域名即可访问。

![](https://cxorz.blob.core.windows.net/static-files/tcb-hosting.png)

## 贡献

本项目按照个人意愿进行开发,一些功能以及设计带有个人主观的想法。发起 pr 之前务必先发起issue进行讨论,之后新建一个分支(以提供的功能命名),并在此分支完成你的代码即可提交 pr。请务必保持代码整洁和 commit 规范。

## 展示

演示地址:https://prod.d6afmntd8nh5y.amplifyapp.com (部署在香港,较慢,仅供演示)

![](https://cxorz.blob.core.windows.net/static-files/ui-start.png)
![](https://cxorz.blob.core.windows.net/static-files/ui-qrcode-sign.png)

## 免责声明

本项目仅作为交流学习使用,通过本项目加深网络通信、接口编写、交互设计等方面知识的理解,请勿用作商业用途,任何人或组织使用项目中代码进行的任何违法行为与本人无关。
3 changes: 1 addition & 2 deletions apps/web/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,8 @@
"private": true,
"type": "module",
"scripts": {
"serve": "vite",
"serve": "vite --open",
"build": "tsc && vite build",
"dev:serve": "vite --open true",
"preview": "vite preview"
},
"dependencies": {
Expand Down
10 changes: 7 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "chaoxing-sign",
"version": "3.8.9",
"version": "4.1.0",
"description": "超星学习通签到项目",
"workspaces": [
"apps/*",
Expand All @@ -9,13 +9,17 @@
"scripts": {
"build": "turbo run build",
"serve": "turbo run serve",
"dev:serve": "turbo run dev:serve"
"start": "node ./apps/server/build/index.js",
"monitor": "node ./apps/server/build/monitor.js"
},
"repository": "https://github.com/cxOrz/chaoxing-sign-cli.git",
"author": "mcx",
"license": "MIT",
"engines": {
"node": ">=18.0.0"
},
"packageManager": "[email protected]"
"packageManager": "[email protected]",
"devDependencies": {
"turbo": "^1.8.3"
}
}
66 changes: 65 additions & 1 deletion pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 38dbca0

Please sign in to comment.