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 上获取)。

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트