Skip to content

Repository files navigation

NeoCat

中文 · English

NeoCat 是一个轻量、local-first 的桌面数据库客户端,当前支持 MySQL、PostgreSQL 和本地 SQLite 文件。它使用 Tauri 将 Rust 后端与 Svelte 前端组合在一起,重点覆盖连接、Schema 浏览、SQL 查询、结果查看以及带安全保护的数据修改流程。

项目目前处于早期 Alpha 阶段。界面、数据结构和命令接口仍可能变化,请不要把它当作生产数据库审批或权限系统的替代品。

特性

数据库连接

  • MySQL / PostgreSQL 直连。
  • 本地 SQLite 文件:打开已有文件或创建新文件。
  • SSH 本地端口转发,支持密码、私钥文件和 SSH Agent。
  • SSH 主机指纹探测、known_hosts 匹配和首次连接确认。
  • MySQL / PostgreSQL TLS required 模式。
  • 已保存的非秘密连接配置可在启动后恢复。

Schema 和 SQL

  • 浏览 MySQL 数据库或 PostgreSQL Schema 下的表、视图、字段、索引和主键信息。
  • 浏览 SQLite 的 maintemp 及已加载 Schema。
  • CodeMirror 6 SQL 编辑器,按连接切换 MySQL/PostgreSQL/SQLite 方言。
  • 当前语句、选中语句和编辑器中全部语句的执行入口。
  • SQL 格式化、可配置键盘快捷键、查询取消和超时控制。
  • 默认单次查询超时 30 秒,可配置范围为 1 秒至 5 分钟。
  • 默认最多加载 1,000 行,后端上限为 10,000 行。
  • 查询、写入、DDL、提交和回滚操作历史。

写入安全

  • 新连接默认开启 Safe mode。
  • 显式开启 Write mode 后才允许写操作。
  • 有主键的查询结果支持安全行编辑。
  • 写入使用显式事务,可 Commit 或 Rollback。
  • 没有 WHEREUPDATE/DELETE、DDL 等高风险操作需要二次确认。
  • Rust 后端会再次执行 SQL 分类、单语句检查和危险操作拦截;客户端提示不能替代数据库权限控制。

结果和导出

  • 结果表格支持列宽调整、行查看、字段查看以及复制为 TSV/JSON。
  • 查询结果可以导出为 SQL INSERT 文件。
  • 查询结果可以导出为 XLSX 工作簿。
  • 桌面端通过系统保存对话框选择导出位置。

可选 AI 能力

  • 配置 OpenAI-compatible API Base URL、模型名和用户自己的 API Key。
  • API Key 只写入操作系统 Keychain,不写入普通应用配置。
  • 根据用户指令和选中的表结构生成 SQL 草稿。
  • AI 输出只进入编辑器草稿区,不会直接执行 SQL。
  • AI 功能默认关闭,属于可选的实验性能力;发送请求前请确认目标服务商和数据范围。

工作区体验

  • 单窗口、多 SQL 标签页。
  • 连接级 SQL workspace 恢复。
  • 查询历史查看和清理。
  • 深色、浅色和跟随系统主题。
  • 浏览器预览模式,便于快速查看界面;数据库、Keychain 和文件系统能力需要桌面运行时。

技术栈

  • Tauri 2
  • Rust + Tokio
  • Svelte 5 + TypeScript
  • Vite 6
  • CodeMirror 6
  • SQLx:MySQL、PostgreSQL、SQLite
  • SSH2:SSH 隧道与主机指纹处理
  • 系统 Keychain/Secret Service:秘密字段保存

项目结构

.
├── src/                         # Svelte 前端和交互逻辑
├── src-tauri/                   # Rust 后端、Tauri 命令和桌面配置
├── demo/                        # 静态界面原型
├── docs/                        # PRD、技术设计和 UI 状态规范
├── .github/workflows/           # GitHub Actions 发布流程
├── package.json
├── pnpm-lock.yaml
└── README.en.md                # English README

环境要求

通用开发环境:

  • Node.js 22
  • pnpm 10
  • Rust stable 和 Cargo

Tauri 桌面开发还需要对应平台的原生工具链:

  • macOS:Xcode Command Line Tools。
  • Windows:Microsoft C++ Build Tools 和 WebView2 Runtime。
  • Linux:WebKitGTK、AppIndicator、librsvg、patchelf 等开发包。仓库中的发布 workflow 已包含 Ubuntu 22.04 的安装步骤。

快速开始

安装前端依赖:

pnpm install

启动浏览器预览:

pnpm dev

默认地址为 http://127.0.0.1:1420/。浏览器预览主要用于 UI 开发,连接数据库和系统 Keychain 等原生功能需要桌面运行时。

启动 Tauri 桌面应用:

pnpm tauri:dev

构建和验证

构建前端生产文件:

pnpm build

构建本机桌面发行包:

pnpm tauri:build

运行 Rust 格式检查、单元测试和类型检查:

cargo fmt --manifest-path src-tauri/Cargo.toml -- --check
cargo test --manifest-path src-tauri/Cargo.toml
cargo check --manifest-path src-tauri/Cargo.toml

GitHub Actions 发布

跨平台发布流程位于 release.yml。它使用 Tauri Action 并行构建以下目标:

平台 Runner Target
Linux x64 Ubuntu 22.04 x86_64-unknown-linux-gnu
Windows x64 Windows latest x86_64-pc-windows-msvc
macOS Intel macOS latest x86_64-apple-darwin
macOS Apple Silicon macOS latest aarch64-apple-darwin

推送版本标签即可触发发布:

git tag v0.1.0
git push origin v0.1.0

标签必须与 package.json 中的版本一致。当前 workflow 会创建 Draft Release,构建完成后请在 GitHub Releases 页面检查并手动发布。也可以在 GitHub Actions 页面手动运行 workflow,并填写版本标签。

当前流程生成的是未签名、未公证的桌面安装包;仓库尚未配置 Apple Developer、Windows 证书或自动更新服务。正式分发前应补充代码签名、公证和更新策略。

数据和安全边界

  • 项目没有账号系统,也没有内置遥测或默认云端同步。
  • MySQL/PostgreSQL 密码、SSH 密码、私钥口令和 AI API Key 使用操作系统安全存储。
  • 桌面运行时会在 Tauri 应用数据目录中保存本地 nova.db,其中可能包含非秘密连接配置、SQL workspace、查询历史、SQL 文本、错误信息和用户设置。该文件名是为兼容既有安装保留的内部标识。
  • 本地 nova.db 不等于加密保险箱;共享电脑或备份应用数据目录时应按敏感数据处理。
  • AI 仅在用户主动配置并触发时请求外部 API。请求可能包含用户输入、选中的表名、字段定义和数据库方言,请在发送前确认服务商的数据处理策略。
  • 客户端的 Safe mode、事务和高风险 SQL 确认是额外防护,不替代数据库账号权限、网络隔离、备份和生产审批。

当前限制

  • 当前支持 MySQL、PostgreSQL 和本地 SQLite 文件;不承诺 MariaDB 的完整兼容性。
  • PostgreSQL 当前以 Schema 为对象命名空间,复杂扩展类型、存储过程、函数、触发器和事件管理仍不在范围内。
  • 暂不支持远程 SQLite、SQLCipher、SQLite 扩展加载和 ATTACH 管理界面。
  • 暂不支持连接配置导入/导出。
  • 文件导出当前提供 SQL INSERT 和 XLSX;CSV/JSON 文件导出尚未实现,JSON 目前仅支持复制单行数据。
  • 不包含存储过程、函数、触发器、事件管理或企业级权限/审计功能。
  • 暂无自动更新、签名、公证和崩溃上报配置。

贡献

欢迎通过 Issue 或 Pull Request 反馈问题和提出改进建议。提交代码前请至少运行:

pnpm build
cargo test --manifest-path src-tauri/Cargo.toml
cargo check --manifest-path src-tauri/Cargo.toml

涉及连接、凭据、SSH、AI 请求或写入安全的改动,请同时补充测试并说明安全影响。

License

产品文档计划使用 MIT License,但当前仓库尚未包含 LICENSE 文件。公开发布前请补充明确的许可证文件。

About

一款轻量级数据库管理工具,对标 DataGrip 但资源占用更低。支持 MySQL、PostgreSQL 等主流关系型数据库,提供智能 SQL 生成、可视化表操作,启动迅速、运行流畅,为日常数据库开发与管理带来清爽高效的使用体验。

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages