# makegraph
**Repository Path**: meetqy/makegraph
## Basic Information
- **Project Name**: makegraph
- **Description**: MakeGraph - Free Online Chart Maker
- **Primary Language**: TypeScript
- **License**: AGPL-3.0
- **Default Branch**: main
- **Homepage**: https://makegraph.org
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-06-13
- **Last Updated**: 2026-07-02
## Categories & Tags
**Categories**: Uncategorized
**Tags**: React, nextjs
## README
# MakeGraph
[English](README.md) | [中文](README_ZH.md)
MakeGraph 是 [makegraph.org](https://makegraph.org) 的代码仓库。它是一个适用于 Excel 和 CSV 数据的免费在线图表制作工具,基于 Next.js、TypeScript 和 React 构建。

## 项目概览
MakeGraph 关注一条非常明确的链路:上传或粘贴电子表格数据,在大约 1 分钟内生成清晰图表,并尽量降低使用门槛。
当前仓库包含:
- 面向电子表格数据输入和实时预览的交互式图表编辑器
- 围绕柱状图、折线图、饼图等核心需求展开的图表页面与说明文案
- 面向 PNG、SVG 导出表达的产品和内容文案
- 与图表互相关联的博客、模板页
- 通用 UI 组件、图表工具函数和表格编辑能力
- 后续产品能力可复用的鉴权与数据库基础设施
## 功能概览
- 面向 Excel 和 CSV 工作流的数据上传或粘贴
- 全屏图表编辑器与实时预览
- 面向柱状图、折线图等核心类型的快速出图流程
- 图表内容导出为 PNG,并在产品定位文案中统一强调 SVG 导出
- 基于 `next-intl` 的多语言图表页面
- 可复用的数据表格编辑能力
- 图表页、博客页、模板页之间的关联能力
- 面向落地页和编辑面板的共享 UI 体系
## 预览
当前已存在的统计图预览如下。
| | | |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| [](https://makegraph.org/charts/bar-chart)
[柱状图](https://makegraph.org/charts/bar-chart) | [](https://makegraph.org/charts/bar-chart-race)
[柱状图竞赛](https://makegraph.org/charts/bar-chart-race) | [](https://makegraph.org/charts/double-bar-chart)
[双向柱状图](https://makegraph.org/charts/double-bar-chart) |
| [](https://makegraph.org/charts/line-chart)
[折线图](https://makegraph.org/charts/line-chart) | [](https://makegraph.org/charts/radar-chart)
[雷达图](https://makegraph.org/charts/radar-chart) | [](https://makegraph.org/charts/scatter-chart)
[散点图](https://makegraph.org/charts/scatter-chart) |
| [](https://makegraph.org/charts/stacked-bar-chart)
[堆叠柱状图](https://makegraph.org/charts/stacked-bar-chart) | [](https://makegraph.org/charts/tree-map-chart)
[矩形树图](https://makegraph.org/charts/tree-map-chart) | [](https://makegraph.org/charts/waterfall-bar-chart)
[瀑布柱状图](https://makegraph.org/charts/waterfall-bar-chart) |
`置信区间面积图`、`相关矩阵`、`马里梅科图`、`旭日图`、`乐队座位图`、`帕累托图` 和 `人口金字塔图` 页面也已接入:`https://makegraph.org/charts/confidence-interval-area-chart`、`https://makegraph.org/charts/correlation-matrix-chart`、`https://makegraph.org/charts/marimekko-chart`、`https://makegraph.org/charts/sunburst-chart`、`https://makegraph.org/charts/band-seating-chart`、`https://makegraph.org/charts/pareto-chart` 与 `https://makegraph.org/charts/population-pyramid`。对应的 OG 预览图路径已在代码中预留,后续可再补充到 `public/charts/`。
## 技术栈
- Next.js 16 App Router
- React 19
- TypeScript
- Tailwind CSS 4
- ECharts 与 Recharts
- next-intl
- tRPC
- Drizzle ORM
- Better Auth
- PostgreSQL
- Biome
## 当前包含的图表页面
目前仓库中已经实现或接入的图表页面包括:
- 乐队座位图
- 柱状图
- 柱状图竞赛
- 置信区间面积图
- 相关矩阵
- 双向柱状图
- 折线图
- 马里梅科图
- 人口金字塔图
- 雷达图
- 散点图
- 堆叠柱状图
- 旭日图
- 矩形树图
- 瀑布柱状图
- 交错正负轴标签柱状图
- 帕累托图
## 环境变量
复制 `.env.example` 为 `.env` 后,至少需要配置以下变量:
- `DATABASE_URL`:PostgreSQL 连接字符串
- `BETTER_AUTH_SECRET`:Better Auth 使用的密钥
- `NEXT_PUBLIC_SITE_URL`:站点公开访问地址,例如 `http://localhost:3001`
- `NEXT_PUBLIC_GOOGLE_ANALYTICS_ID`:可选的分析统计 ID
## 本地开发
### 1. 安装依赖
```bash
pnpm install
```
### 2. 创建本地环境变量
```bash
cp .env.example .env
```
至少需要根据本地环境配置以下变量:
- `DATABASE_URL`
- `BETTER_AUTH_SECRET`
- `NEXT_PUBLIC_SITE_URL`
### 3. 准备数据库
如果你本地使用 PostgreSQL,可先推送当前 schema:
```bash
pnpm db:push
```
### 4. 启动开发服务器
```bash
pnpm dev
```
默认访问地址为 `http://localhost:3001`。
## 部署说明
这个项目本质上是一个依赖 PostgreSQL 的标准 Next.js 应用。
- 在部署平台中配置必需的环境变量
- 确保目标数据库可访问
- 生产环境构建使用 `pnpm build`
- 将 `NEXT_PUBLIC_SITE_URL` 设置为实际部署域名
## 常用脚本
- `pnpm dev`:启动开发服务器,端口为 `3001`
- `pnpm build`:生成 Drizzle 产物并构建生产包
- `pnpm start`:启动生产环境服务
- `pnpm preview`:构建并启动预览环境
- `pnpm check`:执行 Biome 检查
- `pnpm check:write`:执行 Biome 检查并自动写入安全修复
- `pnpm typecheck`:执行 TypeScript 类型检查
- `pnpm db:generate`:生成 Drizzle 文件
- `pnpm db:push`:将 schema 推送到当前数据库
- `pnpm db:migrate`:执行数据库迁移
- `pnpm db:studio`:打开 Drizzle Studio
## 目录结构
```text
.
├── docs/ # 产品、SEO、营销等说明文档
├── drizzle/ # 数据库迁移文件
├── messages/ # 全局多语言消息
├── public/ # 静态资源
├── src/
│ ├── app/ # Next.js 路由与页面内容
│ ├── components/ # 通用 UI 和图表组件
│ ├── config/ # 图表和博客配置
│ ├── i18n/ # 语言路由与请求工具
│ ├── lib/ # 共享工具与站点配置
│ ├── server/ # 鉴权、数据库与 tRPC 服务端代码
│ └── styles/ # 全局样式
├── .env.example
└── package.json
```
## 文档说明
- 图表专属 markdown 文档放在对应 chart 目录中,例如 `src/app/[locale]/charts/*`
- 非页面类的产品规划、SEO、营销资料统一放在 `docs/`
- 原先偏营销风格的 README 已移动到:
- `docs/marketing/README.md`
- `docs/marketing/README_ZH.md`
## 后续方向
- 在保持编辑器轻量的前提下继续补充更多图表类型
- 增加更多可复用的模板页面和示例
- 继续完善图表页文案、SEO 和站内关联
- 逐步接入现有的鉴权和数据库基础设施,承载后续产品流程
## 参与开发
1. 执行 `pnpm install`
2. 复制 `.env.example` 为 `.env`
3. 完成代码或文档修改
4. 执行 `pnpm check:write`
5. 提交变更并发起 PR
## License
本项目采用 GNU Affero General Public License v3.0 许可证 - 详见 [LICENSE](LICENSE) 文件。