Skip to content
/ CatWiki Public

A fully functional knowledge base platform offering robust content management, AI-powered intelligent Q&A, and a modern user experience 一个功能完善的知识库平台,提供强大的内容管理、AI 智能问答和现代化的用户体验

License

Notifications You must be signed in to change notification settings

bulolo/CatWiki

Repository files navigation

CatWiki

企业级AI知识库

企业级全栈 AI 知识库平台,集成了现代化的内容管理、深度 AI 智能问答与极致的用户交互体验。

FastAPI Next.js TypeScript PostgreSQL

English | 简体中文

Star

如果这个项目对你有帮助,请点击右上角 ⭐ Star 支持一下,这是对开发者最大的鼓励!


🚀 最近更新

2026-01-18 ⚡ 全新文档站点

  • 🌐 文档站点上线: 集成了全新的 VitePress 文档站点 (2026-01-18)
  • 📝 多语言对齐: 重新对齐了中英文 README 说明
  • 🔧 架构清理: 优化了项目目录结构和 Docker 配置

🎯 项目亮点

  • 开箱即用: Docker Compose 一键启动,自动初始化数据库和演示数据
  • 双端架构: 独立的管理后台和客户端,职责清晰
  • 类型安全: 前后端全面使用 TypeScript 和 Pydantic,类型安全有保障
  • 现代技术栈: FastAPI + Next.js 14 + SQLAlchemy 2.0,使用最新技术
  • AI 集成: 内置 AI 智能问答,基于 Vercel AI SDK
  • 热更新: 开发环境支持前后端代码热更新
  • 自动生成 SDK: 后端 API 变更后自动生成 TypeScript SDK
  • 完善的文档: 详细的 API 文档和使用指南

📸 应用截图

🎯 管理后台

运营概览

运营概览
实时查看站点运行状态和关键指标

文档管理

文档管理
层级目录结构,支持批量操作

用户管理

用户管理
完整的用户权限和角色管理

系统设置

系统设置
灵活的 AI 模型配置

💬 客户端

AI 智能问答

AI 智能问答 - 基于知识库内容的智能对话助手,支持上下文理解


✨ 核心特性

🎯 管理后台

  • 📝 富文本编辑: 基于 Markdown 的文档编辑器,支持实时预览
  • 🗂️ 文档管理: 层级目录结构,支持拖拽排序
  • 👥 用户管理: 完整的用户权限和角色管理
  • 🌐 多站点支持: 支持创建和管理多个独立的知识库站点
  • 🤖 AI 配置: 灵活的 AI 模型和机器人配置

💬 客户端

  • 🔍 智能搜索: 快速查找所需文档和内容
  • 🤖 AI 问答: 基于知识库内容的智能对话助手
  • 📱 响应式设计: 完美适配桌面端和移动端
  • 🎨 现代化 UI: 使用 shadcn/ui 构建的优雅界面

🏗️ 技术架构

后端技术栈

  • 框架: FastAPI
  • 数据库: PostgreSQL + SQLAlchemy 2.0
  • 迁移工具: Alembic
  • 包管理: uv (高性能 Python 包管理器)
  • 身份认证: JWT + PassLib
  • Python 版本: >= 3.10

前端技术栈

  • 框架: Next.js 14 (App Router)
  • 语言: TypeScript 5.3+
  • 样式: Tailwind CSS
  • 组件库: shadcn/ui (基于 Radix UI)
  • 状态管理: React Hooks
  • 包管理: pnpm

特色功能库

  • 拖拽排序: @dnd-kit/core + @dnd-kit/sortable (管理后台)
  • Markdown 编辑: md-editor-rt (管理后台)
  • AI 集成: Vercel AI SDK (ai + @ai-sdk/react) (客户端)
  • Markdown 渲染: streamdown (客户端)
  • 通知系统: Sonner (前端通用)

📁 项目结构

catWiki/
├── backend/                      # 🐍 FastAPI 后端服务
│   ├── app/
│   │   ├── api/                 # API 路由 (Admin/Client)
│   │   ├── core/                # 核心配置、中间件、工具
│   │   ├── crud/                # 数据库 CRUD 操作
│   │   ├── models/              # SQLAlchemy ORM 模型
│   │   ├── schemas/             # Pydantic 验证模式
│   │   └── main.py              # 应用入口
│   ├── scripts/                 # 工具脚本(同步 SDK、初始化数据)
│   ├── Dockerfile.dev           # 开发环境镜像
│   └── pyproject.toml           # 依赖管理(uv)
│
├── frontend/
│   ├── admin/                   # 🎯 管理后台 (Next.js, 8001)
│   ├── client/                  # 💬 客户端 (Next.js, 8002)
│   └── docs/                    # 📚 文档站点 (VitePress, 8003)
│
├── deploy/                      # 🚀 生产环境部署
├── docker-compose.dev.yml       # 开发环境一键启动
├── Makefile                      # 项目管理脚本
└── README.md                    # 项目主文档

核心目录说明

目录 说明 技术栈
backend/ 后端 API 服务 FastAPI + PostgreSQL + SQLAlchemy
frontend/admin/ 管理后台(内部使用) Next.js 14 + shadcn/ui + Tailwind
frontend/client/ 客户端(对外展示) Next.js 14 + AI 问答 + 搜索
frontend/docs/ 文档站点(项目说明) VitePress + Markdown

⚡ 快速开始(5 分钟)

一键启动完整开发环境

# 克隆项目
git clone https://github.com/bulolo/CatWiki.git
cd catWiki

# 1. 初始化配置
make dev-init

# 2. 修改配置 (重要!)
# 编辑 backend/.env 填入 OpenAI API Key 等信息
# vim backend/.env

# 3. 启动开发环境
make dev-up

Warning

关于 make dev-init: 它会重新从模板复制 .env 文件,这会覆盖您已有的配置。

  • 第一次运行: 请务必先运行 make dev-init,然后修改配置文件。
  • 后续开发: 请直接使用 make dev-up

等待 2-3 分钟,所有服务启动完成后,访问:

就这么简单!🎉


🚀 安装与配置

前置要求

  • Docker >= 20.10
  • Docker Compose >= 2.0
  • Make (系统自带或通过包管理器安装)

🏗️ 项目管理 (Makefile)

本项目根目录提供了 Makefile 工具,将复杂的 Docker 维护命令封装为简单的指令。

核心命令

通用命令

命令 说明
make gen-sdk 生成 SDK:触发后端 API 自动生成前端 SDK
make help 预览命令:显示所有可用指令及其说明

开发环境

命令 说明
make dev-init 初始化环境配置:清理并重新从 .env.example 复制配置文件
make dev-up 开发启动:构建镜像并在前台启动,实时查看所有服务日志
make dev-down 优雅停止:停止并移除容器,保留数据库存储卷
make dev-restart 快捷重启:仅重启后端应用容器
make dev-logs 实时日志:查看后端核心服务的实时运行日志
make dev-db-migrate m="msg" 生成迁移脚本:生成新的数据库迁移脚本(需提供备注 m
make dev-db-psql 数据库终端:进入 PostgreSQL 交互式终端
make dev-clean 深度重置:停止容器并删除所有数据卷(清空数据库和存储,⚠️ 危险操作)

生产环境

命令 说明
make prod-init 生产初始化:初始化生产环境配置文件模板
make prod-up 生产启动:在后台启动生产环境所有服务
make prod-down 生产停止:停止并移除生产环境容器
make prod-restart 重启后端:仅重启生产环境后端应用容器
make prod-logs 实时日志:查看生产环境容器日志
make prod-clean 深度重置:停止容器并删除生产所有数据卷⚠️ 危险操作)

🏗️ 技术细节

初始化机制

项目采用 独立初始化容器 (backend-init) 模式:

  • 自我检测: 启动时自动检查数据库版本。
  • 自动迁移: 自动执行 Alembic 脚本。
  • 预置数据: 自动创建管理员 (admin@example.com / admin123) 及医学演示站点。

自动 SDK 同步

后端 API 变更后,只需一行命令即可更新前端 SDK:

make gen-sdk

📦 生产环境部署

项目提供了标准化的生产环境部署流程,通过 make prod-xxx 系列命令即可快速管理。

1. 初始化配置

# 生成生产环境配置文件模板 (位于 deploy/docker/ 目录)
make prod-init

2. 修改敏感信息

编辑以下文件,填入正式的域名、数据库密码、JWT 密钥等:

  • deploy/docker/.env.backend
  • deploy/docker/.env.admin
  • deploy/docker/.env.client

3. 启动服务

# 在后台启动所有生产环境容器
make prod-up

Important

详细的安全配置建议(如证书配置、对象存储对接等)请参考: 👉 生产环境完整部署指南 (deploy/docker/README.md)



❓ 常见问题 (FAQ)

Tip

遇到问题时,通常 make dev-clean + make dev-up 能解决 90% 的本地环境异常。

Q: 为什么启动后报错 "Database not initialized"?

A: 请确认是否运行了 make dev-init。如果数据库已损坏,请使用 make dev-clean 重置。

Q: 如何修改默认服务端口? A: 直接在根目录的 docker-compose.dev.yml 中修改对应的 ports 映射即可。

Q: 客户端 API 报 404? A: 确保你的访问路径包含站点域名后缀,例如:http://localhost:8002/medical


📚 文档

� 快速导航


📄 许可证

本项目采用 GNU Affero General Public License v3.0 (AGPL-3.0) 许可证。

📋 许可证说明

  • 自由使用: 你可以自由使用、修改和分发本软件
  • 开源要求: 你必须以相同的许可证开源你的修改
  • 网络服务: 如果你通过网络提供服务,也必须开源你的代码
  • 商业使用: 允许商业使用,但需要遵守相同的开源要求

这意味着如果你:

  • 🔧 修改了代码: 必须开源修改后的代码
  • 🌐 提供 SaaS 服务: 必须向用户提供完整源代码
  • 💼 商业化运营: 可以,但必须保持开源

详见 LICENSE 文件获取完整许可证文本。

🤔 为什么选择 AGPL-3.0?

我们选择 AGPL-3.0 是为了:

  1. 保护开源社区的利益,防止闭源商业化
  2. 确保所有改进都能回馈给社区
  3. 即使是网络服务形式,用户也能获得源代码

📮 联系方式


⭐ 如果这个项目对您有帮助,请给我们一个 Star!

Made with ❤️ by CatWiki Team

About

A fully functional knowledge base platform offering robust content management, AI-powered intelligent Q&A, and a modern user experience 一个功能完善的知识库平台,提供强大的内容管理、AI 智能问答和现代化的用户体验

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published