Initialize AutoLibrary website with Gitea deployment
This commit is contained in:
commit
18216953e7
101 files changed
+12581
No files matched your search
@@ -0,0 +1,97 @@
|
||||
# AutoLibrary Website
|
||||
|
||||
北京建筑大学图书馆自动化工具的官网、软件下载中心与社区主题市场。
|
||||
|
||||
- 产品仓库:<https://gitea.kenanzhu.com/KenanZhu/AutoLibrary>
|
||||
- 用户手册:<https://manuals.autolibrary.kenanzhu.com>
|
||||
- 发行版本:<https://gitea.kenanzhu.com/KenanZhu/AutoLibrary/releases>
|
||||
|
||||
## 架构
|
||||
|
||||
前端采用 Vue 3、TypeScript、Vite、Vue Router、Pinia 和 Lucide 图标。所有字体、图标和图片随构建产物提供,无需第三方 CDN。页面使用统一的布局、表单和状态组件,深浅主题由 CSS 语义变量管理。
|
||||
|
||||
Go/Gin 前端服务提供构建产物并将 `/api/*` 代理到后端;后端保留 GORM/SQLite、Casdoor 和本地主题文件存储。既可一起启动,也可分别部署。当前面向单实例运行。
|
||||
|
||||
```text
|
||||
frontend/
|
||||
src/
|
||||
api/ # 请求、响应、下载和错误处理
|
||||
components/ # 全站与业务共享组件
|
||||
composables/ # 画廊等可复用交互逻辑
|
||||
pages/ # 按路由拆分的页面
|
||||
stores/ # 账户与外观状态
|
||||
styles/ # 页面专用样式
|
||||
site.ts # 项目链接、URL 和日期工具
|
||||
types.ts # API 数据类型
|
||||
styles.css # 双主题变量与响应式样式
|
||||
public/assets/ # 原有品牌标识与实机截图
|
||||
dist/ # 生产构建产物(生成)
|
||||
backend/
|
||||
handlers/themes_handler/ # 认证、查询、上传、更新、审核、下载
|
||||
services/ # 主题打包、文件存储、事务协调、用户缓存
|
||||
database/ # SQLite 初始化
|
||||
models/ # 数据模型
|
||||
```
|
||||
|
||||
## 本地开发
|
||||
|
||||
需要 Go 1.25.6+ 和 Node.js 22.13+(推荐当前 Node LTS,Vite 要求 Node 22.12+,ESLint 要求 22.13+)。从项目根目录运行:
|
||||
|
||||
```sh
|
||||
# 首次配置;已有 config.json 时保留原文件
|
||||
cp config.example.json config.json
|
||||
npm --prefix frontend ci
|
||||
go run . backend
|
||||
```
|
||||
|
||||
在另一个终端启动前端:
|
||||
|
||||
```sh
|
||||
npm --prefix frontend run dev
|
||||
```
|
||||
|
||||
开发地址为 `http://127.0.0.1:5173`。默认代理到 `http://127.0.0.1:8080`;后端端口不同时,在 `frontend/.env.local` 设置 `API_PROXY_TARGET=http://127.0.0.1:实际端口`。无需在前端添加服务器密钥。
|
||||
|
||||
登录与注册需要配置并启动 Casdoor。未配置时,浏览下载和主题市场仍可用;账户操作会显示服务未启用。管理员审核统一使用 Casdoor 管理员账户。
|
||||
|
||||
## 构建与检查
|
||||
|
||||
```sh
|
||||
npm --prefix frontend run typecheck
|
||||
npm --prefix frontend run check
|
||||
npm --prefix frontend run build
|
||||
go test ./...
|
||||
go build -o webserver .
|
||||
./webserver start
|
||||
```
|
||||
|
||||
`build` 已包含类型、ESLint 和 Prettier 检查,产物位于 `frontend/dist`。使用 `npm --prefix frontend run format` 统一前端源码格式。没有增加测试用例或测试工具链。Go 检查用于验证已有包可以编译。
|
||||
|
||||
生产环境默认访问 `http://127.0.0.1:3000`,实际地址以 `config.json` 为准。`frontend` 和 `backend` 子命令支持独立启动,均可使用 `--config /absolute/path/config.json`。请将工作目录设置为项目部署目录。
|
||||
|
||||
## 发行与下载数据
|
||||
|
||||
版本数据库是官网版本信息的唯一来源。首页通过 `GET /api/download/latest` 获取最新已发布的稳定版(按 `releaseDate`、ID 降序;无稳定版时 `data: null`),下载列表保持原有分页接口。`/api` 前缀由 Go 前端或 Vite 代理移除,直接访问后端时使用 `/download/latest` 等路径。
|
||||
|
||||
版本模型新增以下字段,启动时由 GORM 增量添加列,不删除原字段或数据:
|
||||
|
||||
| JSON 字段 | 用途 |
|
||||
| --- | --- |
|
||||
| `giteaZipUrl` | Gitea Windows 便携包 |
|
||||
| `giteaInstallerUrl` | Gitea Windows 安装程序 |
|
||||
| `giteaDmgUrl` | Gitea macOS 安装包 |
|
||||
| `releaseNotesUrl` | 对应版本的发行说明 |
|
||||
|
||||
使用已有受 API Key 保护的 `POST/PUT /download/versions` 接口维护这些字段。提供真实的 Gitea 附件地址;不要仅将历史 GitHub URL 替换域名。新页面没有可用附件地址时,提供 Gitea 发行列表入口,云盘下载照常保留。原 `github*Url` 字段继续供已有 API 调用使用,新页面不再展示 GitHub 下载入口。
|
||||
|
||||
独立更新日志已移除,`/changelog` 永久跳转 `/downloads`。发行说明在 Gitea 查看;公告接口及其数据库保留。个人下载历史尚未实现,本次没有扩展该功能。
|
||||
|
||||
## 发布与维护
|
||||
|
||||
网站源码推送到 Gitea 的 `main` 后,由生产 Runner 构建、部署并检查服务。首次接入见 [Gitea 自动部署](docs/gitea-deployment.md)。
|
||||
|
||||
完整部署、备份和回滚步骤见 [Ubuntu 部署说明](docs/migration-to-ubuntu.md)。配置和运行时数据与前端构建分开保存;本地现有数据库、主题文件和 Casdoor 配置不需要重建。
|
||||
|
||||
迁移前的静态页面、脚本和混淆工具已保存在项目内 `.legacy/`,不参与构建或运行,可用于核对历史内容。
|
||||
|
||||
主题上传支持最大 8 MB 的 `.qss` 和最大 4 MB 的 PNG/JPG 预览图,后端总请求体上限 16 MB。主题和打包文件一起保存;文件、元数据或预览更新后重新进入审核队列。退出时先停止接收请求,再关闭数据库。
|
||||
Reference in new issue
Block a user