Teable 使用简单的类电子表格界面创建强大的数据库应用程序。与您的团队实时协作,可扩展至数百万行数据
在 teable.ai 体验我们的托管版本
首页 | 帮助 | 博客 | 模板 | API | 路线图 | Discord | Twitter
- 想要快速体验?从模板中心选择一个场景并点击"使用此模板"
- 追求高性能?试试百万行数据演示感受 Teable 的速度
- 想要自己部署?点击 在 Railway 上部署
开箱即用的完整功能:
- 聚合统计
- 附件预览
- 批量编辑
- 图表展示
- 评论功能
- 自定义列
- 字段转换
- 数据过滤
- 格式化
- 公式支持
- 分组功能
- 历史记录
- 导入/导出
- 百万行数据
- 插件系统
- 实时协作
- 搜索功能
- 排序功能
- SQL 查询
- 撤销/重做
- 数据验证
以最适合特定任务的各种方式可视化和交互数据:
- 表格视图
- 表单视图
- 看板视图
- 画廊视图
- 日历视图
更多功能即将推出,查看我们的路线图
.
├── apps/ # 应用程序目录 (AGPL 3.0)
│ ├── nextjs-app/ # 前端应用 (Next.js)
│ │ ├── src/ # 源代码
│ │ ├── public/ # 静态资源
│ │ └── package.json # 依赖配置
│ └── nestjs-backend/ # 后端应用 (NestJS)
│ ├── src/ # 源代码
│ │ ├── features/ # 功能模块
│ │ ├── core/ # 核心模块
│ │ └── main.ts # 入口文件
│ └── package.json # 依赖配置
│
├── packages/ # 共享包目录 (MIT)
│ ├── common-i18n/ # 国际化资源
│ │ └── src/locales/ # 多语言文件
│ ├── core/ # 核心共享代码和接口
│ │ ├── src/ # 类型定义、工具函数
│ │ └── models/ # 数据模型
│ ├── sdk/ # SDK(用于扩展开发)
│ │ ├── src/ # SDK 源代码
│ │ └── components/ # 可复用组件
│ ├── db-main-prisma/ # 数据库层
│ │ ├── prisma/ # Prisma schema 和迁移
│ │ │ ├── sqlite/ # SQLite 配置
│ │ │ ├── postgres/ # PostgreSQL 配置
│ │ │ └── migrations/ # 数据库迁移文件
│ │ └── src/ # 数据库客户端
│ ├── openapi/ # OpenAPI 规范和类型
│ ├── icons/ # 图标库
│ ├── ui-lib/ # UI 组件库
│ │ ├── src/ # 组件源代码
│ │ └── components/ # 可复用 UI 组件
│ └── eslint-config-bases/ # 共享的 ESLint 配置
│
├── plugins/ # 插件目录 (AGPL 3.0)
│ ├── src/
│ │ ├── app/ # 插件页面
│ │ │ ├── chart/ # 图表插件
│ │ │ └── sheet-form/ # 表单插件
│ │ ├── components/ # 共享组件
│ │ └── locales/ # 插件国际化
│ └── package.json
│
├── dockers/ # Docker 配置
│ ├── examples/ # 部署示例
│ │ ├── standalone/ # 单机部署
│ │ ├── cluster/ # 集群部署
│ │ └── docker-swarm/ # Docker Swarm 部署
│ ├── teable/ # Teable 镜像配置
│ ├── database-postgres.yml # PostgreSQL 服务
│ ├── cache-redis.yml # Redis 缓存服务
│ └── storage-minio.yml # MinIO 存储服务
│
├── scripts/ # 构建和部署脚本
│ ├── build-image.mjs # 镜像构建脚本
│ ├── db-migrate.mjs # 数据库迁移脚本
│ ├── publish.mjs # 发布脚本
│ └── wait-for # 服务等待脚本
│
├── static/ # 静态资源
│ └── assets/ # 图片等资源文件
│
├── .github/ # GitHub 配置
│ ├── workflows/ # CI/CD 工作流
│ └── actions/ # 自定义 Actions
│
├── .vscode/ # VS Code 配置
├── .husky/ # Git hooks
├── package.json # 根项目配置
├── pnpm-workspace.yaml # pnpm 工作空间配置
├── tsconfig.base.json # TypeScript 基础配置
├── Makefile # Make 命令集合
├── README.md # 英文文档
├── README.zh-CN.md # 中文文档(本文件)
├── LICENSE # 许可证
└── CONTRIBUTING.md # 贡献指南
- 框架: Next.js 14 (App Router)
- UI 库: React 18.3
- 样式: TailwindCSS
- 状态管理: Zustand
- 数据请求: TanStack Query (React Query)
- 表格组件: @glideapps/glide-data-grid
- 图表: ECharts, Recharts
- 拖拽: @dnd-kit, @hello-pangea/dnd
- 国际化: next-i18next
- 表单: react-hook-form + zod
- 框架: NestJS 10
- 运行时: Node.js 20+
- 数据库 ORM: Prisma 6
- 数据库: PostgreSQL 15 / SQLite (开发)
- 缓存: Redis (ioredis)
- 队列: BullMQ
- 认证: Passport (JWT, OAuth2)
- 文件存储: MinIO / AWS S3
- 实时协作: ShareDB + WebSocket
- AI 集成: 多个 AI SDK (@ai-sdk/*)
- 日志: Pino
- 监控: OpenTelemetry
- 生产环境: PostgreSQL 15.4+
- 开发环境: SQLite (可选)
- 迁移工具: Prisma Migrate
- 查询构建: Knex.js
- 包管理器: pnpm 9.13+
- 代码检查: ESLint
- 代码格式化: Prettier
- 测试: Vitest
- E2E 测试: Playwright
- 提交规范: Commitlint + Husky
- 类型检查: TypeScript 5.4
最简单的部署方式是使用 Docker Compose:
cd dockers/examples/standalone/
docker-compose up -d更多详细信息,请参阅安装 Teable
这些平台支持一键部署,并提供免费额度:
- Node.js: >= 20.0.0
- pnpm: >= 9.13.0
- 数据库: PostgreSQL 15+ 或 SQLite (仅开发)
- Redis: 7.2+ (可选,用于缓存)
# 启用 pnpm 包管理器
corepack enable
# 安装项目依赖
pnpm install我们目前支持 sqlite(仅开发)和 postgres,可以通过以下命令切换:
make switch-db-mode执行后会提示选择:
1或sqlite: 使用 SQLite(轻量级,适合开发)2或postgres或pg: 使用 PostgreSQL(生产推荐)
如果您选择了 postgres 模式,请按照以下步骤启动和初始化数据库:
-
启动容器:
make docker.up teable-postgres
-
同步数据库模式: 执行此命令会自动生成 Prisma Client 并运行所有数据库迁移。
make postgres.mode
-
(可选) 填充初始数据: 如果您需要测试数据,可以运行 Seed 脚本。
pnpm -F @teable/db-main-prisma prisma-db-seed
cd apps/nextjs-app
cp .env.development .env.development.local在 .env.development.local 中可以覆盖默认配置。
只需启动后端服务,它会自动启动前端服务器,文件更改会自动重新加载:
cd apps/nestjs-backend
pnpm dev默认情况下,插件开发服务器不会启动。要预览和开发插件,请运行:
# 构建 packages
pnpm build:packages
# 启动插件开发服务器
cd plugins
pnpm dev这将在端口 3002 上启动插件开发服务器。
- 前端: http://localhost:3000
- 后端 API: http://localhost:3000/api
- API 文档: http://localhost:3000/api/docs
- 插件开发: http://localhost:3002
# 构建所有 packages
pnpm build:packages
# 构建所有项目
pnpm g:build
# 运行所有测试
pnpm g:test
# 运行单元测试
pnpm g:test-unit
# 运行 E2E 测试
pnpm g:test-e2e
# 代码检查
pnpm g:lint
# 类型检查
pnpm g:typecheck
# 清理所有构建产物
pnpm g:clean
# 检查依赖更新
pnpm deps:check
# 更新依赖
pnpm deps:update# 切换数据库模式
make switch-db-mode
# 生成 Prisma schema
make gen-prisma-schema
# 推送数据库变更(开发)
make db.push
# 创建数据库迁移
make db-migration
# SQLite 模式
make sqlite.mode
# PostgreSQL 模式
make postgres.mode# 创建网络
make docker.create.network
# 启动服务
make docker.up [service]
# 停止服务
make docker.down
# 查看服务状态
make docker.status
# 构建应用镜像
make build.app
# 构建数据库迁移镜像
make build.db-migrate-
PostgreSQL (生产推荐)
- 版本: 15.4+
- 特点: 强大且可扩展,适合复杂的企业需求
- 连接字符串示例:
postgresql://user:password@localhost:5432/teable?schema=public&statement_cache_size=1
-
SQLite (仅开发)
- 特点: 轻量级嵌入式,易于集成
- 连接字符串示例:
file:../../db/main.db
项目使用 Prisma Migrate 管理数据库迁移:
# 创建新迁移
make db-migration
# 应用迁移(SQLite)
make sqlite.mode
# 应用迁移(PostgreSQL)
make postgres.mode迁移文件位于 packages/db-main-prisma/prisma/migrations/
Teable 支持强大的插件系统,允许扩展应用功能。
插件可以集成到两个主要位置:
- Dashboard: 仪表板插件
- View: 视图插件
- 在
plugins/src/app/下创建插件目录 - 添加插件配置到
apps/nestjs-backend/src/features/plugin/official/config/ - 添加国际化文件到
plugins/src/locales/[plugin-name]/
详细的插件开发指南请参阅 plugins/README.md
# 运行所有单元测试
pnpm g:test-unit
# 运行单元测试并生成覆盖率
pnpm g:test-unit-cover
# 运行特定包的测试
cd apps/nestjs-backend
pnpm test-unit# 运行所有 E2E 测试
pnpm g:test-e2e
# SQLite E2E 测试
make sqlite.integration.test
# PostgreSQL E2E 测试
make postgres.integration.test无代码工具极大地加快了我们完成工作的速度,使非技术用户能够构建出色的应用程序,并改变了许多人的工作和生活方式。人们喜欢使用类似电子表格的 UI 来处理数据,因为它简单、灵活,并且非常适合团队协作。他们还喜欢设计自己的应用程序界面,而不是被笨重的模板所束缚。
让非技术人员能够创建自己的软件听起来很令人兴奋。但这只是开始:
- 随着业务扩展,数据需求会增加。没有人希望听到,一旦订单达到 10 万条,他们就会超出当前界面的承载能力。然而,许多无代码平台在这种规模下都会出现问题。
- 大多数无代码平台都是基于云的。这意味着您的重要数据存储在提供商那里,切换到另一个平台可能会很麻烦。
- 有时,无代码工具由于其局限性而无法满足您的需求,使用户陷入困境。
- 如果一个工具变得必不可少,您最终将需要一些技术专业知识。但开发人员经常发现这些平台很棘手。
- 对于开发人员来说,维护具有复杂设置的系统可能很困难,尤其是如果这些系统不是使用通用软件标准构建的。
- 不使用这些标准的系统可能需要改造或更换,从长远来看成本更高。这甚至可能意味着放弃无代码路线,回到传统编码。
- 任何人都可以使用的界面,轻松构建应用程序
- 轻松访问数据,让用户随意获取、移动和重用信息
- 数据隐私和选择,无论是在云端、本地还是仅在本地
- 它也需要为开发人员工作,而不仅仅是非技术用户
- 它应该能够处理大量数据,以便随着业务增长而扩展
- 灵活地与其他软件集成,结合优势完成工作
- 最后,原生 AI 集成将可用性提升到新的水平
本质上,Teable 不仅仅是另一个无代码解决方案,它是对现代软件开发不断发展的需求的全面回答,确保每个人,无论其技术熟练程度如何,都有一个适合其需求的平台。
我们欢迎所有形式的贡献!请阅读我们的贡献指南了解更多信息。
- Fork 本仓库
- 创建您的特性分支 (
git checkout -b feature/AmazingFeature) - 提交您的更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启一个 Pull Request
我们使用 Conventional Commits 规范:
feat: 新功能
fix: 修复 bug
docs: 文档更新
style: 代码格式调整
refactor: 重构
test: 测试相关
chore: 构建/工具链相关
Teable 社区版 (CE) 在 AGPL 许可证下免费用于自托管。详见 ./LICENSE。
Teable 企业版 (EE) 包括高级功能,如 AI、权限矩阵、自动化和高级管理。有关详细信息和定价,请访问定价页面。
- Discord: 加入我们的 Discord 社区
- Twitter: @teableio
- 帮助文档: help.teable.ai
- 博客: blog.teable.ai
- 问题反馈: GitHub Issues
感谢所有为 Teable 做出贡献的开发者和用户!