一款轻量的 Memo 记录程序,基于 Bun + Hono + MongoDB 构建
适用于个人笔记、碎片知识记录或通过 Webhook 同步社交媒体内容聚合展示
- 极度精简,仅支持
Markdown
笔记和标签功能 - 仅支持 API 进行笔记发布、查询、删除等操作,无前端管理后台
- 服务端渲染,SEO 友好
bun install
- 提前在 MongoDB 中创建好对应的数据库
- 复制
.env.example
为.env
- 修改
.env
中的环境变量
# .env
PORT="8848" # 运行端口
MONGO_URI="mongodb://127.0.0.1:27017/quest" # mongoDB 连接地址
JWT_SECRET="your-secret-key" # JWT 密钥,请务必修改
TOKEN_EXPIRE_TIME="0" # API Token 生成有效期
ADMIN_USERNAME="admin" # 获取 Token 用户名
ADMIN_PASSWORD="admin" # 获取 Token 密码
TITLE="Quest" # 标题
SUB_TITLE="A Simple Memo Site" # 副标题标题
DESCRIPTION="Quest your interesting" # 描述
KEYWORDS="Quest, Memo, Simple" # SEO 关键词
INDEX_PAGE_SIZE="10" # 每页展示 Memos 数量
CACHE_SECONDS="3600" # 访问内容服务端缓存
FONT_SCRIPT_URL="https://fonts.googleapis.com/css?family=Mono" # Google 字体地址
UMAMI_URL="https://cloud.umami.is/script.js" # Umami 统计托管地址(留空则不使用)
UMAMI_WEBSITE_ID="" # Umami 统计ID(留空则不使用)
# dev
bun run dev
# start
bun run start
# nohup 守护运行
nohup bun run start > output.log 2>&1 & # 退出终端后守护运行,请使用 exit 退出
# 克隆项目到本地
git clone https://github.com/jakholuo/quest.git
# 修改 .env 文件中的站点基础信息和数据库链接地址等
# 如本地无 MongoDB 数据库的建议可以注册使用免费的 MongoDB 云数据库
# 构建 docker 镜像
docker build -t quest .
# 运行
docker run -p 8848:8848 -d quest
# 通过 http://localhost:8848 访问
星号标注接口需要鉴权,采用JWT
形式鉴权,即需要在请求header
中添加Authorization
的值为Bearer ${token}
。
- 获取 Token
[POST] /api/users/token
参数名 | 类型 | 必填 | 描述 |
---|---|---|---|
name | string | 是 | 用户名 |
password | string | 是 | 密码 |
- 获取 Memo 列表
[POST] /api/memo/list
参数名 | 类型 | 必填 | 描述 |
---|---|---|---|
size | number | 是 | 每页数量 |
prev | string | 否 | 上一个 memo 的 id,用于分页加载 |
tags | array | 是 | 标签 |
- 创建 Memo
*[POST] /api/memo/create
参数名 | 类型 | 必填 | 描述 |
---|---|---|---|
content | string | 是 | 内容 |
tags | array | 是 | 标签 |
- 修改 Memo
*[POST] /api/memo/update
参数名 | 类型 | 必填 | 描述 |
---|---|---|---|
id | string | 是 | 要修改的 memo 的 id |
content | string | 是 | 内容 |
tags | array | 是 | 标签 |
- 删除 Memo
*[POST] /api/memo/delete
参数名 | 类型 | 必填 | 描述 |
---|---|---|---|
id | string | 是 | 要删除的 memo 的 id |
- 支持 Android / IOS 客户端发布管理内容
- 内容缓存机制