logo
logo

项目地址:biyuehu/moehub

演示网站:m.hotaru.icu

本网站设计初衷为自用,专门用于整理自己推过的 Galgame 中喜爱的角色。前端基于 React 实现,后端基于 Koa.js + Prisma 组合,值得一提的是 Koa.js 并非使用的正常模式,而是使用的 inversify-koa-utilsinversify 构建的 AOP + Dependency Injection 架构,类似于 Nest.js,至于为何此次不直接用 Nest.js 主要是为以后使用 Nest.js 作为后端重构博客打点基础,不至于到时上手 Nest.js 一头雾水。话又说回来,Koa.js 除了自带 types 和异步风格我是真不明白它哪点比 Express.js 强,轻量过头以至于 static、请求体解析这些东西都要单独装个包,一装下也轻量不到哪去,更不用提有些需求(比如说请求体解析)在 NPM 上有好几个不同实现,还一个比一个老。Prisma 在 Node.js 的 ORM 框架中表现是不错的,对 TypeScript 类型支持也极为友好(除了偶尔不知怎么地会发病)。项目结构依旧是喜闻乐见的基于 pnpm 实现的 monorepo 结构,顺带把以前用的 eslint 和 prettier 全删了,转而使用 Biome.js,前面那俩速度太慢了配置文件还多,不过换成 Biome.js 后开发 Kotori 时我意识到这似乎不是 lint 工具到上限了,而是 VSCode 到上限了,下次得考虑用 WebStorm 了。国际化实现当然是使用的 Kotori 的 @kotori-bot/i18n,更值得一提的是,这是首次与 Kotori-Bot 的联动,MoeHub 的后端控制台自带一个简约的交互式命令行,正是基于 @kotori-bot/core + @kotori-bot/kotori-plugin-helper 实现,不过在 Kotori 文档 中也提到过,@kotori-bot/core 作为 Kotori 的核心包,它完全支持在浏览器环境运行,实质上是支持任何支持 ES2021 及以上标准的环境,至于为什么偏偏是 2021,因为我特么写到后面发现字符串的 .replaceAll() 方法是这个版本才加的,而这点将在接下来的项目 Misakura 中实现,包括日志记录器 @kotori-bot/logger (实际上 Misakura 这项目在年初的时候就开始企划并动工了,不过后面跑去写 Kotori 了,在六月份的时候 MoeHub 的企划也出来了,所以 Misakura 一直没啥进度)。

细节

支持的角色类型

  • 动画角色
  • 漫画角色
  • 游戏角色
  • 视觉小说角色
  • 轻小说角色
  • 其它角色

国际化支持

  • 日本語
  • English
  • 繁体中文
  • 简体中文

CLI 支持

@kotori-bot/core 驱动

角色生日提醒

支持多种邮箱账号,支持自定义提醒模板

使用方法

  1. 下载 Github Release 版本
  2. 解压下载文件
  3. 安装依赖项(任选一条执行)
npm install
yarn
pnpm install
  1. 设置 .env 文件与数据库
DATABASE_URL="mysql://username:password@host:port/database"

# MoeHub server port

PORT=5000

# MoeHub logger level

LOG_LEVEL=30
  1. 导入 data.sql 到数据库
  2. 启动服务器(任选一个执行)
npm run serve
yarn serve
pnpm serve
  1. 登录 http://your-domain:5000/#/admin/settings 并设置你的网站