概述
Kira CMS (Kira OP) 是 Kira 的运营后台系统,基于 Payload CMS 构建,用于管理用户数据和执行运营操作。技术栈
| 类别 | 技术 | 说明 |
|---|---|---|
| CMS 框架 | Payload CMS 3.x | Headless CMS |
| 运行时 | Bun | JavaScript 运行时 |
| 前端框架 | Next.js 15 | React 全栈框架 |
| 数据库 | PostgreSQL | 通过 Neon 托管 |
| 存储 | S3 | 媒体文件存储 |
| 邮件 | Resend | 邮件发送服务 |
| 部署 | Fly.io | 容器化部署 |
项目结构
kira-cms
src
payload.config.ts
payload-types.ts
app
(payload)
admin
api
cached
home-cards
route.ts
announcements
route.ts
translate
route.ts
lark-notify
route.ts
layout.tsx
(frontend)
collections
Users.ts
Media.ts
DeletionLogs.ts
operation
Announcements.ts
HomeCards.ts
lib
lark.ts
components
NavLinks.tsx
Logo.tsx
Icon.tsx
views
DeleteAccount.tsx
DeleteAccountForm.tsx
| 目录 | 说明 |
|---|---|
payload.config.ts | Payload CMS 主配置 |
collections/ | 数据集合定义 (Collections) |
operation/ | 运营数据定义 (Globals — 全局单例,区别于 Collections 的多记录集合) |
lib/ | 工具库 (lark.ts — Lark webhook 通知) |
components/ | 自定义 Admin UI 组件 |
components/views/ | 自定义视图页面 |
app/(payload)/ | Payload Admin 路由 |
app/(frontend)/ | 前端公开页面 |
数据集合
Users
管理员用户账户,用于登录 CMS 后台。Media
媒体文件管理,存储到 S3。DeletionLogs
用户删除操作日志记录。架构图
功能模块
运营功能 (Operation)
| 功能 | 说明 |
|---|---|
| Home Cards | 首页功能卡片管理,配置 AI 功能入口 |
| Announcements | 首页公告横幅管理 |
| Delete Account | 用户账户删除 |
通用能力
自动翻译:所有多语言内容支持一键从英文翻译为 11 种语言(中文简繁体、日韩德法西意俄葡马来语) Arcade 教程引导:Home Cards 支持配置 Arcade 教程链接,用户可通过?guide={cardId} 访问交互式教程
部署
- 运行在 Fly.io
- 使用 Dockerfile 构建
- 环境变量:
DATABASE_URL- PostgreSQL 连接PAYLOAD_SECRET- Payload 密钥S3_*- S3 存储配置RESEND_API_KEY- 邮件服务RESEND_FROM_EMAIL- 邮件发送地址NEXT_PUBLIC_API_URL- Kira Backend URLREDIS_URL- Redis KV 缓存 (kira-dragonfly)OPENAI_API_KEY- 翻译 API (gpt-5.2)
Redis KV 缓存
使用@payloadcms/kv-redis 实现 Redis KV 缓存,连接 kira-dragonfly 实例。
缓存策略
| 策略 | 说明 |
|---|---|
| Write-through | 数据变更时通过 Payload afterChange hooks 自动写入 Redis 缓存 |
| Read-through | /api/cached/* 路由优先从 Redis 读取,缓存未命中时查询数据库并回填缓存 |
缓存路由
| 路由 | 说明 |
|---|---|
/api/cached/home-cards | 首页功能卡片数据 |
/api/cached/announcements | 首页公告数据 |