它解决什么问题
小团队经常把图片、APK、安装包、临时文件散落在服务器目录、网盘和聊天记录里。静态资源中心把这些东西收进一个可检索的控制台:文件有分类、有缩略图、有分享链接,App 更新包也有独立的发布状态。
后端是 NestJS + SQLite,前端是 Vue 3 + Naive UI。SQLite 的选择很务实:单机静态资源站,零外部依赖,拷一个库文件就能备份;代价是并发写和大数据量受限。
值得说的细节
- 文件系统是真相,数据库是索引:启动全量扫描、定时增量、根目录变更触发刷新,避免“库里有、盘上没有”。
- 分片上传 + SHA-256 合并校验:APK 与视频动辄数百 MB,整包上传容易断;分片让失败只影响一个块。
- 分享用 HMAC 短期令牌:链接本身不暴露真实路径,密码不落明文。
- 更新中心是独立模块:与兰台的更新服务功能重叠,长期需要收敛;当前保留两套实现是历史包袱。
现状
作为内部工具持续使用中。后台涉及真实文件与账号信息,官网只展示结构与能力,不公开管理入口。
02 / CAPABILITIES
它能做什么。
01
多根目录
一个后台管理多个资源根目录,按分类浏览、搜索、排序,文件系统仍是最终事实。
02
分片上传
大文件切 5MB 分片,支持断点续传与合并校验,弱网下不用整包重来。
03
分享链接
单文件或多文件聚合分享,支持有效期、访问次数与访问密码,链接不暴露真实路径。
04
图片处理
基于 Sharp 的缩放、格式转换与磁盘缩略图缓存,避免每次请求都重新解码。
05
更新中心
APK 上传、四态发布、灰度分桶、强更与回滚,客户端按设备稳定命中。
06
审计与指标
登录、上传、删除、发布、分享等关键动作落审计日志,指标页看 QPS 与存储量。
03 / RELATED
相关的项目。
01平台
维护中
ADMIN
CLOUD
兰台
LANTAI / VAKAO PLATFORM
一套后端,三端前台,单文件交付。
GoGoFrameVue 3持续迭代
02开源库
维护中
@vakao-uiTYPESCRIPT
import { createClient } from '@vakao-ui/axios' const client = createClient({ baseURL: '/api/v1', refresh: true, }) // 统一信封、401 单飞刷新、重复请求取消
axiossocket-systemscripts-utils
VaKao UI
VAKAO UI / INTERNAL LIBS
四个小库,把团队项目里重复的脏活收掉。
TypeScriptaxiosSocket.IO持续维护