ASSBBS Web 是一个基于 Bun + Hono 的轻量级论坛系统。
- RT: Bun - 一个快速的 JavaScript 运行时和工具链
- JS: Hono - 轻量级、快速的 Web 框架
- DB: LibSQL - 分布式 SQLite 数据库
- ORM: Drizzle - 类型安全的 ORM
- CSS: daisyUI - 简易 Tailwind CSS 框架
- Regex: XRegExp - 增强的正则表达式库
assbbs-web/
├── app/ # 主应用代码目录
│ ├── app.ts # 应用入口文件
│ ├── base.ts # 数据库模型定义
│ ├── core.ts # 基础配置和工具函数
│ ├── iAuth.ts # 认证相关
│ ├── iConf.ts # 配置相关
│ ├── iData.ts # 用户数据处理
│ ├── pData.ts # 帖子数据处理
│ ├── pEdit.ts # 帖子编辑
│ ├── pList.ts # 帖子列表
│ ├── tData.ts # 主题数据处理
│ └── tList.ts # 主题列表
├── bare/ # 静态资源目录
├── const/ # 常量和配置文件
├── migrations/ # 数据库迁移文件
└── init.ts # 数据库初始化脚本
系统使用 SQLite 数据库,通过 Drizzle ORM 进行管理,主要包含以下表:
-
conf: 系统配置表
key: 配置键(主键)value: 配置值(JSON ��式)
-
user: 用户表
uid: 用户 ID(主键)gid: 用户组 IDmail: 邮箱(唯一)name: 用户名(唯一)hash: 密码哈希salt: 密码盐值threads: 发帖数posts: 回帖数credits: 积分golds: 金币time: 注册时间
-
thread: 主题表
tid: 主题 ID(主键)uid: 发帖用户 IDsubject: 主题标题access: 访问权限is_top: 是否置顶time: 创建时间last_time: 最后回复时间last_uid: 最后回复用户 IDposts: 回复数量
-
post: 帖子表
pid: 帖子 ID(主键)tid: 主题 IDuid: 发帖用户 IDcontent: 帖子内容access: 访问权限time: 发帖时间quote_pid: 引用帖子 ID
- 前端使用 MD5 对密码进行加密后传输
- 后端存储 MD5(MD5(password)+salt)
- 登录时比对 hash 值进行验证
- 所有配置值统一使用 JSON 格式存储
- 配置读取时会尝试 JSON.parse
- 如果解析失败则使用原始值
- 包含 secret_key 用于 JWT 签名
- 安装依赖:
bun install- 初始化数据库:
# 生成数据库迁移文件
bun run db:generate
# 应用数据库变更
bun run db:push
# 初始化基础数据
bun run db:init- 启动开发服务器:
bun run dev服务器将在 http://localhost:3000 启动。
系统初始化后会创建以下账号:
-
管理员账号
- 邮箱:admin@example.com
- 密码:admin123
- 权限:管理员组(gid=99)
- 2025.03.02 目前管理员组 gid 还是 1 这是沿用 xiuno
-
测试账号
- 邮箱:test@example.com
- 密码:test123
- 权限:普通用户组(gid=0)
系统的主要配置存储在 conf 表中,包括:
site_name: 站点名称site_description: 站点描述register_enable: 是否开放注册post_interval: 发帖间隔(秒)credits_initial: 新用户初始积分credits_login: 登录奖励积分credits_post: 发帖奖励积分theme: 主题设置(JSON 格式)secret_key: JWT 签名密钥friend_link: 友情链接列表(JSON 格式)
# 安装依赖
bun install
# 应用数据库迁移
bun run db:push
# 数据库初始化
bun run db:init
# 启动服务器
bun run dev建议定期备份 app.db 文件以保护数据安全。
- Fork 项目
- 创建特性分支
- 提交变更
- 推送到分支
- 创建 Pull Request
MIT License