这个仓库名为 gitdiagram,其主要功能是能在数秒内将任意 GitHub 仓库转化为交互式图表,方便用户对仓库结构进行可视化。以下是对该仓库的详细介绍:
功能特性
- 即时可视化:可将任意 GitHub 仓库结构转换为系统设计或架构图。
- 交互性:用户点击图表中的组件,能够直接跳转到对应的源文件和相关目录。
- 快速生成:借助 OpenAI o4 - mini 模型,实现快速且准确的图表生成。
- 可定制化:支持用户通过自定义指令对图表进行修改和重新生成。
- API 访问:提供公共 API 用于集成,不过此功能仍在开发中(WIP)。
技术栈
- 前端:采用 Next.js、TypeScript、Tailwind CSS 和 ShadCN 构建。
- 后端:使用 FastAPI、Python 和 Server Actions 实现。
- 数据库:采用 PostgreSQL 数据库,并通过 Drizzle ORM 进行操作。
- AI:运用 OpenAI o4 - mini 模型。
- 部署:前端部署在 Vercel 平台,后端部署在 EC2 上。
- CI/CD:借助 GitHub Actions 实现持续集成和持续部署。
- 分析:使用 PostHog 和 Api - Analytics 进行数据分析。
代码结构
- 后端:位于
backend目录下,包含 Dockerfile、应用代码、部署脚本、Nginx 配置和依赖文件requirements.txt。 - 前端:
src目录是前端代码的主要存放处,涵盖了app、components、hooks、lib、server和styles等子目录。 - 配置文件:包含
.env.example、.eslintrc.cjs、.gitignore、drizzle.config.ts、next.config.js、package.json、pnpm - lock.yaml等,用于项目的配置和依赖管理。 - 脚本文件:
start - database.sh用于启动本地开发数据库的 Docker 容器。
关键代码片段
- GitHub 服务:
gitdiagram/backend/app/services/github_service.py文件中的GitHubService类,负责与 GitHub API 进行交互,包括检查仓库是否存在、获取默认分支、获取文件路径列表以及读取 README 文件等功能。 - 缓存操作:
gitdiagram/src/app/_actions/cache.ts文件包含了缓存图表和解释信息的函数,以及获取缓存解释信息的函数。 - 图表生成:
gitdiagram/src/app/[username]/[repo]/page.tsx文件中的Repo组件,负责显示仓库的图表、处理错误和加载状态,并提供一些操作按钮,如修改、重新生成、复制和导出图像等。
本地开发步骤
- 克隆仓库
git clone https://github.com/ahmedkhaleel2004/gitdiagram.git
cd gitdiagram
- 安装依赖
pnpm i
- 设置环境变量
cp .env.example .env
然后编辑 .env 文件,添加 Anthropic API 密钥和可选的 GitHub 个人访问令牌。
4. 运行后端
docker-compose up --build -d
可通过 docker - compose logs -f 查看日志,FastAPI 服务器将在 localhost:8000 上运行。
5. 启动本地数据库
chmod +x start-database.sh
./start-database.sh
当提示生成随机密码时,输入 yes,Postgres 数据库将在 localhost:5432 的容器中启动。
6. 初始化数据库模式
pnpm db:push
可使用 pnpm db:studio 查看和操作数据库。
7. 运行前端
pnpm dev
通过上述步骤,开发者可以在本地环境中搭建并运行该项目。