datopian/portaljs
🌀 AI-native framework for building data portals. Scaffold a full portal from a brief and load datasets in minutes with agentic skills — any backend (CKAN, GitHub, Frictionless).
PortalJS – 一个 AI 原生的数据门户框架
它是什么 – PortalJS 是一个开源的、MIT 许可的工具包,让数据团队只需几条命令就能创建功能齐全的开放数据门户。它附带一组 Claude Code “技能”(斜杠命令),充当 AI 助手:它们会采访你、推荐架构、搭建 Next.js 代码库,并自动添加数据集、图表、地图或元数据。生成的门户是普通的、可编辑的 Next.js – 无供应商锁定。
为什么重要 – 构建数据门户通常需要决定存储、目录、搜索、托管,然后连接 UI。PortalJS 将决策(advisor 技能)与代码生成捆绑在一起,让非工程师用自然语言描述需求,并立即获得一个可工作的门户。它还支持现代“湖仓”架构(Git + Cloudflare R2 + Parquet + DuckDB),同时仍允许经典后端如 CKAN。
关键组件
- Agentic 技能 – 一组 Claude Code 斜杠命令(
/portaljs-architect、/portaljs-new-portal、/portaljs-add-dataset等),用于推荐架构、搭建代码、摄取数据、生成图表/地图、输出 DCAT 提要并部署。 - 三界面 UI – 一个首页、一个用于数据集发现的目录(
/search)和一个展示页(/@<namespace>/<slug>),显示元数据、预览、下载和可视化。 - DataProvider 契约 – 所有 UI 组件通过单一提供者接口读取数据,使后端可插拔(静态文件、Git-LFS + R2、CKAN、OpenMetadata 等)。
- 存储与计算选项 – 从简单的平面文件到完整的湖仓(R2 上的 Parquet,用 DuckDB 查询)或传统数据仓库/CKAN。
- Cloudflare 优先基础 – 默认部署使用 Cloudflare R2、Workers、D1 和 Pages,但存储保持 S3 兼容。
快速开始
# 一行命令创建带示例数据的门户
npm create portaljs@latest my-portal
cd my-portal
npm run dev # http://localhost:3000
要使用 AI 助手,请一次性安装 Claude 技能:
curl -fsSL https://raw.githubusercontent.com/datopian/portaljs/main/scripts/install-portaljs-skills.sh | bash
然后在任何 Claude Code 会话中,你可以运行如下命令:
/portaljs-architect we have 200 CSVs, need DCAT‑AP compliance
/portaljs-new-portal "City Open Data Portal"
/portaljs-add-dataset ./data/air-quality.csv
这些技能将生成 Next.js 项目、更新 datasets.json、通过 Git-LFS 将大文件推送到 R2,并创建相应的 UI 页面。
生态系统与可扩展性
- 包 –
@portaljs/ckan(CKAN UI 组件)和@portaljs/ckan-api-client-js用于 API 访问。 - 示例 – 规范模板位于
examples/portaljs-catalog;一个生产级门户(OpenSpending)基于 PortalJS 构建。 - 社区 – Discord、GitHub Discussions 和问题跟踪器用于支持和贡献。
- 路线图 – 添加更多元数据模式、更多后端、浏览器中的 DuckDB 查询层以及细粒度访问控制。
谁应该使用 – 数据团队、市政开放数据项目、非政府组织,或任何需要快速发布数据集而不想依赖重型数据仓库,并希望获得 AI 辅助架构指导的人。
许可证 – MIT(完整源代码可在 GitHub 上获取)。
相关
- 项目
- 项目
- 项目
- 项目
- 项目