Thanks to visit codestin.com
Credit goes to github.com

Skip to content
/ teable Public
forked from teableio/teable

✨ The Next Gen Airtable Alternative: No-Code Postgres

License

Unknown, AGPL-3.0 licenses found

Licenses found

Unknown
LICENSE
AGPL-3.0
AGPL_LICENSE
Notifications You must be signed in to change notification settings

ak47947/teable

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2,671 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

teable logo

管理您的数据 & 连接您的团队

Teable 使用简单的类电子表格界面创建强大的数据库应用程序。与您的团队实时协作,可扩展至数百万行数据

teable.ai 体验我们的托管版本

English | 简体中文 | 项目结构详解 | 开发部署指南

teableio%2Fteable | Trendshift

首页 | 帮助 | 博客 | 模板 | API | 路线图 | Discord | Twitter

build Codefactor Coverage Codacy grade GitHub top language Gurubase

teable interface

快速开始

  1. 想要快速体验?从模板中心选择一个场景并点击"使用此模板"
  2. 追求高性能?试试百万行数据演示感受 Teable 的速度
  3. 想要自己部署?点击 在 Railway 上部署

✨ 功能特性

🍺 功能丰富

开箱即用的完整功能:

  • 聚合统计
  • 附件预览
  • 批量编辑
  • 图表展示
  • 评论功能
  • 自定义列
  • 字段转换
  • 数据过滤
  • 格式化
  • 公式支持
  • 分组功能
  • 历史记录
  • 导入/导出
  • 百万行数据
  • 插件系统
  • 实时协作
  • 搜索功能
  • 排序功能
  • SQL 查询
  • 撤销/重做
  • 数据验证

🏞️ 多种视图

以最适合特定任务的各种方式可视化和交互数据:

  • 表格视图
  • 表单视图
  • 看板视图
  • 画廊视图
  • 日历视图
Grid View Search
Calendar View Gallery View
Kanban View Form View
Comments Record history

📊 图表 & 仪表板

Teable Dashboard

更多功能即将推出,查看我们的路线图


项目结构

Open in Gitpod

目录说明

.
├── 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            # 贡献指南

技术栈

前端 (nextjs-app)

  • 框架: 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-backend)

  • 框架: 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 部署

最简单的部署方式是使用 Docker Compose:

cd dockers/examples/standalone/
docker-compose up -d

更多详细信息,请参阅安装 Teable

一键部署

这些平台支持一键部署,并提供免费额度:

Deploy on Railway

Deploy on Sealos

Deploy on Zeabur

Deploy to RepoCloud

Deploy on Elestio

Deploy on AlibabaCloud ComputeNest


开发指南

环境要求

  • Node.js: >= 20.0.0
  • pnpm: >= 9.13.0
  • 数据库: PostgreSQL 15+ 或 SQLite (仅开发)
  • Redis: 7.2+ (可选,用于缓存)

1. 初始化项目

# 启用 pnpm 包管理器
corepack enable

# 安装项目依赖
pnpm install

2. 选择数据库

我们目前支持 sqlite(仅开发)和 postgres,可以通过以下命令切换:

make switch-db-mode

执行后会提示选择:

  • 1sqlite: 使用 SQLite(轻量级,适合开发)
  • 2postgrespg: 使用 PostgreSQL(生产推荐)

3. 启动并初始化 PostgreSQL (推荐)

如果您选择了 postgres 模式,请按照以下步骤启动和初始化数据库:

  1. 启动容器

    make docker.up teable-postgres
  2. 同步数据库模式: 执行此命令会自动生成 Prisma Client 并运行所有数据库迁移。

    make postgres.mode
  3. (可选) 填充初始数据: 如果您需要测试数据,可以运行 Seed 脚本。

    pnpm -F @teable/db-main-prisma prisma-db-seed

4. 自定义环境变量 (可选)

cd apps/nextjs-app
cp .env.development .env.development.local

.env.development.local 中可以覆盖默认配置。

5. 运行开发服务器

只需启动后端服务,它会自动启动前端服务器,文件更改会自动重新加载:

cd apps/nestjs-backend
pnpm dev

默认情况下,插件开发服务器不会启动。要预览和开发插件,请运行:

# 构建 packages
pnpm build:packages

# 启动插件开发服务器
cd plugins
pnpm dev

这将在端口 3002 上启动插件开发服务器。

6. 访问应用


常用命令

根目录命令

# 构建所有 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

Docker 命令

# 创建网络
make docker.create.network

# 启动服务
make docker.up [service]

# 停止服务
make docker.down

# 查看服务状态
make docker.status

# 构建应用镜像
make build.app

# 构建数据库迁移镜像
make build.db-migrate

数据库架构

支持的数据库

  1. PostgreSQL (生产推荐)

    • 版本: 15.4+
    • 特点: 强大且可扩展,适合复杂的企业需求
    • 连接字符串示例: postgresql://user:password@localhost:5432/teable?schema=public&statement_cache_size=1
  2. 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: 视图插件

创建插件

  1. plugins/src/app/ 下创建插件目录
  2. 添加插件配置到 apps/nestjs-backend/src/features/plugin/official/config/
  3. 添加国际化文件到 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 测试

# 运行所有 E2E 测试
pnpm g:test-e2e

# SQLite E2E 测试
make sqlite.integration.test

# PostgreSQL E2E 测试
make postgres.integration.test

为什么选择 Teable?

无代码工具极大地加快了我们完成工作的速度,使非技术用户能够构建出色的应用程序,并改变了许多人的工作和生活方式。人们喜欢使用类似电子表格的 UI 来处理数据,因为它简单、灵活,并且非常适合团队协作。他们还喜欢设计自己的应用程序界面,而不是被笨重的模板所束缚。

让非技术人员能够创建自己的软件听起来很令人兴奋。但这只是开始:

  • 随着业务扩展,数据需求会增加。没有人希望听到,一旦订单达到 10 万条,他们就会超出当前界面的承载能力。然而,许多无代码平台在这种规模下都会出现问题。
  • 大多数无代码平台都是基于云的。这意味着您的重要数据存储在提供商那里,切换到另一个平台可能会很麻烦。
  • 有时,无代码工具由于其局限性而无法满足您的需求,使用户陷入困境。
  • 如果一个工具变得必不可少,您最终将需要一些技术专业知识。但开发人员经常发现这些平台很棘手。
  • 对于开发人员来说,维护具有复杂设置的系统可能很困难,尤其是如果这些系统不是使用通用软件标准构建的。
  • 不使用这些标准的系统可能需要改造或更换,从长远来看成本更高。这甚至可能意味着放弃无代码路线,回到传统编码。

我们认为无代码产品的未来应该是什么样的

  • 任何人都可以使用的界面,轻松构建应用程序
  • 轻松访问数据,让用户随意获取、移动和重用信息
  • 数据隐私和选择,无论是在云端、本地还是仅在本地
  • 它也需要为开发人员工作,而不仅仅是非技术用户
  • 它应该能够处理大量数据,以便随着业务增长而扩展
  • 灵活地与其他软件集成,结合优势完成工作
  • 最后,原生 AI 集成将可用性提升到新的水平

本质上,Teable 不仅仅是另一个无代码解决方案,它是对现代软件开发不断发展的需求的全面回答,确保每个人,无论其技术熟练程度如何,都有一个适合其需求的平台。


贡献

我们欢迎所有形式的贡献!请阅读我们的贡献指南了解更多信息。

开发流程

  1. Fork 本仓库
  2. 创建您的特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交您的更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启一个 Pull Request

提交规范

我们使用 Conventional Commits 规范:

feat: 新功能
fix: 修复 bug
docs: 文档更新
style: 代码格式调整
refactor: 重构
test: 测试相关
chore: 构建/工具链相关

许可证

Teable 社区版 (CE) 在 AGPL 许可证下免费用于自托管。详见 ./LICENSE

Teable 企业版 (EE) 包括高级功能,如 AI、权限矩阵、自动化和高级管理。有关详细信息和定价,请访问定价页面


社区与支持


致谢

感谢所有为 Teable 做出贡献的开发者和用户!

About

✨ The Next Gen Airtable Alternative: No-Code Postgres

Resources

License

Unknown, AGPL-3.0 licenses found

Licenses found

Unknown
LICENSE
AGPL-3.0
AGPL_LICENSE

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 98.1%
  • JavaScript 1.1%
  • CSS 0.3%
  • PLpgSQL 0.1%
  • ANTLR 0.1%
  • Makefile 0.1%
  • Other 0.2%