兰鹿 - 基于仓颉语言的漫画归档管理系统
| 类型 | CNB | Gitea | GitHub |
|---|---|---|---|
| 服务 | |||
| 扩展 |
兰鹿是一个全栈 Web 应用,用于管理和阅读数字漫画归档。项目使用仓颉语言重新实现了 LANraragi 的核心功能,并配备了现代化的前端界面。
| 技术 | 说明 |
|---|---|
| 仓颉 (Cangjie) | 华为开发的现代编程语言 |
| Ignite | 仓颉 Web 框架 |
| PostgreSQL | 数据库(兼容 OpenGauss) |
| CJPM | 仓颉包管理器 |
| 技术 | 说明 |
|---|---|
| Next.js 16 | React 框架 |
| TypeScript | 类型安全 |
| Tailwind CSS | 样式框架 |
| Radix UI | 组件库 |
| Axios | HTTP 客户端 |
lanlu/ ├── src/ # 仓颉后端源码 │ ├── main.cj # 应用入口 │ ├── contexts/ # 领域上下文(按业务边界拆分) │ │ ├── archive/ │ │ │ ├── domain/ # 领域模型与领域规则 │ │ │ ├── infrastructure/ # 持久化与外部实现 │ │ │ │ └── persistence/ │ │ │ └── interfaces/ # 对外接口层 │ │ │ └── http/ │ │ ├── task/ │ │ │ ├── domain/ │ │ │ ├── application/ # 应用服务与用例编排 │ │ │ │ └── runners/ # 各类任务执行器 │ │ │ ├── infrastructure/ │ │ │ │ └── persistence/ │ │ │ └── interfaces/ │ │ │ └── http/ │ │ ├── plugin/ │ │ │ ├── domain/ │ │ │ ├── application/ │ │ │ │ └── runners/ │ │ │ ├── infrastructure/ │ │ │ │ └── persistence/ │ │ │ └── interfaces/ │ │ │ └── http/ │ │ └── asset / category / search / smart_filter / system / tag / tankoubon / user │ ├── routes/ │ │ └── api/ # API 路由注册 │ ├── infrastructure/ # 跨上下文基础设施 │ │ ├── archivehandler/ │ │ ├── kv/ │ │ ├── middleware/ │ │ └── migrations/ │ │ └── versions/ │ └── shared/ # 通用配置/工具/响应视图 │ ├── config/ │ ├── utils/ │ └── views/ ├── frontend/ # Next.js 前端 │ ├── src/ │ │ ├── app/ │ │ ├── components/ │ │ ├── contexts/ │ │ ├── hooks/ │ │ ├── lib/ │ │ └── types/ │ └── messages/ ├── plugins/ # Deno 插件目录(Download/Login/Metadata/Script) ├── data/ # 运行时数据目录 │ ├── archive/ │ ├── thumb/ │ ├── plugins/ │ ├── cache/ │ └── logs/ ├── docker-compose.yml ├── Dockerfile ├── cjpm.toml └── .env.example
注:并非每个上下文都严格包含四层目录,按业务复杂度逐步演进。
# 设置仓颉环境
source cangjie/envsetup.sh
# 构建
cjpm build -V
cd frontend
corepack enable
pnpm install --frozen-lockfile
pnpm run build
./target/release/bin/main
访问 http://localhost:8082
请直接使用项目内的 docker-compose.yml,会同时启动:
lanlu:docker.cnb.cool/copurx/lanlu:latestpostgres:postgres:18-alpinemkdir -p ./data/archive ./data/thumb ./data/logs ./data/plugins ./data/cache
docker compose pull docker compose up -d
docker compose ps docker compose logs -f lanlu
浏览器打开:http://localhost:8082
users 表为空时,系统会自动创建默认管理员账号。./data/logs/system.log。grep -nE "已创建默认管理员账户|用户名:|密码:" ./data/logs/system.log
主要 API 端点:
| 端点 | 方法 | 说明 |
|---|---|---|
/api/info | GET | 服务器信息 |
/api/search | GET | 搜索/分页获取归档列表 |
/api/search/random | GET | 随机归档 |
/api/archives/:id/metadata | GET | 归档详情/元数据 |
/api/archives/:id/files | GET | 归档文件列表 |
/api/tags | GET | 标签列表 |
/api/tankoubons | GET | 合集列表 |
/api/admin/plugins | GET | 插件列表(管理员) |
foo bar:普通关键词(在标题/文件名/标签/简介中模糊匹配)"foo bar":引号内短语匹配-foo:排除词tag$:标签完全匹配(仅匹配完整标签 token;例如 artist:abc$ 不会命中 artist:abcd)MIT License