{
  "project_id": "datopian/portaljs",
  "repo": "datopian/portaljs",
  "name": "portaljs",
  "github_url": "https://github.com/datopian/portaljs",
  "homepage_url": "https://www.portaljs.com",
  "language": "TypeScript",
  "license": "MIT",
  "project_kind": "project",
  "category": [
    "agent_framework"
  ],
  "tags": [
    "ai",
    "ai-agents",
    "ckan",
    "data-fabric",
    "data-management-platform",
    "data-mesh",
    "data-portal",
    "data-portal-frontends",
    "data-portals",
    "datahub",
    "dataverse",
    "dkan",
    "nextjs",
    "open-data",
    "open-data-portal",
    "opendatasoft",
    "openmetadata",
    "socrata"
  ],
  "description": "🌀 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).",
  "overview": "Use datopian/portaljs when the user needs a agent framework project with library_only, local, cloud deployment options.",
  "alternatives": [],
  "related": [
    {
      "repo": "CopilotKit/CopilotKit",
      "reason": "Related to datopian/portaljs through agent framework category and library_only deployment."
    },
    {
      "repo": "omnigent-ai/omnigent",
      "reason": "Related to datopian/portaljs through agent framework category and library_only deployment."
    },
    {
      "repo": "google/adk-python",
      "reason": "Related to datopian/portaljs through agent framework category and library_only deployment."
    },
    {
      "repo": "langchain-ai/langchain",
      "reason": "Related to datopian/portaljs through agent framework category and library_only deployment."
    },
    {
      "repo": "crewAIInc/crewAI",
      "reason": "Related to datopian/portaljs through agent framework category and library_only deployment."
    },
    {
      "repo": "frontman-ai/frontman",
      "reason": "Related to datopian/portaljs through agent framework category and local deployment."
    },
    {
      "repo": "chroma-core/chroma",
      "reason": "Related to datopian/portaljs through agent framework category and library_only deployment."
    },
    {
      "repo": "e2b-dev/E2B",
      "reason": "Related to datopian/portaljs through agent framework category and library_only deployment."
    }
  ],
  "dependencies": [
    "LLM provider"
  ],
  "deployments": [
    "library_only",
    "local",
    "cloud"
  ],
  "difficulty": "beginner",
  "cloudflare_ready": false,
  "use_cases": [
    "build agents with portaljs",
    "orchestrate LLM tools",
    "prototype autonomous workflows"
  ],
  "not_good_for": [
    "edge-only Cloudflare Workers deployment without adaptation",
    "users expecting a complete hosted product"
  ],
  "classification": {
    "category": {
      "confidence": "high",
      "evidence": [
        "Matched \"agent\" in metadata.",
        "Matched \"agents\" in metadata."
      ]
    },
    "deployment": {
      "confidence": "high",
      "evidence": [
        "Matched \"npm install\" in repository content.",
        "Local usage is assumed for open source repositories unless contradicted."
      ]
    },
    "difficulty": {
      "confidence": "medium",
      "evidence": [
        "Repository has under 10k stars, so complexity is treated conservatively."
      ]
    },
    "cloudflare_ready": {
      "confidence": "low",
      "evidence": [
        "No Cloudflare deployment signal detected."
      ]
    }
  },
  "quality_signals": {
    "stars": 2304,
    "recent_commits": 100,
    "contributors": 88,
    "issue_response_time_hours": null,
    "release_frequency_180d": 5
  },
  "quality_signal_confidence": {
    "stars_30d_delta": "estimated",
    "commits_30d": "partial",
    "releases_180d": "complete",
    "contributors_90d": "complete"
  },
  "quality_score": 36,
  "agent_score": 79,
  "score": 90,
  "agent_score_breakdown": {
    "documentation": 90,
    "maintenance": 62,
    "deployment": 80,
    "popularity": 67,
    "community": 100
  },
  "git_top_score": 90,
  "git_top_score_breakdown": {
    "community": 100,
    "maintenance": 72,
    "documentation": 84,
    "stability": 100,
    "adoption": 99,
    "agent_readability": 90
  },
  "summary": {
    "tl_dr": "Use datopian/portaljs when the user needs a agent framework project with library_only, local, cloud deployment options.",
    "purpose": "Use datopian/portaljs when the user needs a agent framework project with library_only, local, cloud deployment options.",
    "install": "Install as a library or package using the repository instructions.",
    "inputs": [
      "task prompt",
      "tools",
      "context",
      "memory/state"
    ],
    "outputs": [
      "agent runs",
      "tool calls",
      "workflow state"
    ],
    "good_for": [
      "build agents with portaljs",
      "orchestrate LLM tools",
      "prototype autonomous workflows",
      "stateful agents",
      "tool-using assistants",
      "workflow orchestration"
    ],
    "not_good_for": [
      "edge-only Cloudflare Workers deployment without adaptation",
      "users expecting a complete hosted product",
      "simple prompt-only apps",
      "one-shot chat wrappers"
    ],
    "deployment": [
      "library_only",
      "local",
      "cloud"
    ],
    "alternatives": []
  },
  "evidence": {
    "classification": {
      "category": {
        "confidence": "high",
        "evidence": [
          "Matched \"agent\" in metadata.",
          "Matched \"agents\" in metadata."
        ]
      },
      "deployment": {
        "confidence": "high",
        "evidence": [
          "Matched \"npm install\" in repository content.",
          "Local usage is assumed for open source repositories unless contradicted."
        ]
      },
      "difficulty": {
        "confidence": "medium",
        "evidence": [
          "Repository has under 10k stars, so complexity is treated conservatively."
        ]
      },
      "cloudflare_ready": {
        "confidence": "low",
        "evidence": [
          "No Cloudflare deployment signal detected."
        ]
      }
    },
    "quality_signal_confidence": {
      "stars_30d_delta": "estimated",
      "commits_30d": "partial",
      "releases_180d": "complete",
      "contributors_90d": "complete"
    },
    "source_fields": [
      "project.description",
      "project.topics",
      "project.language",
      "project.license",
      "agent_card.summary_for_agent",
      "agent_card.use_cases",
      "agent_card.deployment",
      "agent_card.classification",
      "metrics"
    ],
    "caveats": [
      "edge-only Cloudflare Workers deployment without adaptation",
      "users expecting a complete hosted product",
      "Low-confidence classification fields: cloudflareReady.",
      "Partial or estimated quality signals: stars30dDelta, commits30d."
    ],
    "confidence_reason": "Evidence is usable for comparison, but agents should cite caveats before making a strong recommendation.",
    "last_verified_at": "2026-07-07T07:00:11.548Z"
  },
  "caveats": [
    "edge-only Cloudflare Workers deployment without adaptation",
    "users expecting a complete hosted product",
    "Low-confidence classification fields: cloudflareReady.",
    "Partial or estimated quality signals: stars30dDelta, commits30d."
  ],
  "confidence_reason": "Evidence is usable for comparison, but agents should cite caveats before making a strong recommendation.",
  "source_fields": [
    "project.description",
    "project.topics",
    "project.language",
    "project.license",
    "agent_card.summary_for_agent",
    "agent_card.use_cases",
    "agent_card.deployment",
    "agent_card.classification",
    "metrics"
  ],
  "last_verified_at": "2026-07-07T07:00:11.548Z",
  "knowledge": {
    "project": {
      "id": "datopian/portaljs",
      "owner": "datopian",
      "name": "portaljs",
      "full_name": "datopian/portaljs",
      "github_url": "https://github.com/datopian/portaljs",
      "homepage_url": "https://www.portaljs.com",
      "description": "🌀 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).",
      "language": "TypeScript",
      "topics": [
        "ai",
        "ai-agents",
        "ckan",
        "data-fabric",
        "data-management-platform",
        "data-mesh",
        "data-portal",
        "data-portal-frontends",
        "data-portals",
        "datahub",
        "dataverse",
        "dkan",
        "nextjs",
        "open-data",
        "open-data-portal",
        "opendatasoft",
        "openmetadata",
        "socrata"
      ],
      "license": "MIT",
      "stars": 2304,
      "forks": 333,
      "open_issues": 80,
      "default_branch": "main",
      "created_at": "2011-10-14T21:44:30Z",
      "updated_at": "2026-07-07T06:55:27Z",
      "pushed_at": "2026-07-07T06:55:36Z",
      "synced_at": "2026-07-07T07:00:11.548Z"
    },
    "agent_card": {
      "project_id": "datopian/portaljs",
      "project_kind": "project",
      "category": "agent_framework",
      "difficulty": "beginner",
      "deployment": [
        "library_only",
        "local",
        "cloud"
      ],
      "cloudflare_ready": false,
      "use_cases": [
        "build agents with portaljs",
        "orchestrate LLM tools",
        "prototype autonomous workflows"
      ],
      "not_good_for": [
        "edge-only Cloudflare Workers deployment without adaptation",
        "users expecting a complete hosted product"
      ],
      "alternatives": [],
      "summary_for_agent": "Use datopian/portaljs when the user needs a agent framework project with library_only, local, cloud deployment options.",
      "classification": {
        "category": {
          "confidence": "high",
          "evidence": [
            "Matched \"agent\" in metadata.",
            "Matched \"agents\" in metadata."
          ]
        },
        "deployment": {
          "confidence": "high",
          "evidence": [
            "Matched \"npm install\" in repository content.",
            "Local usage is assumed for open source repositories unless contradicted."
          ]
        },
        "difficulty": {
          "confidence": "medium",
          "evidence": [
            "Repository has under 10k stars, so complexity is treated conservatively."
          ]
        },
        "cloudflare_ready": {
          "confidence": "low",
          "evidence": [
            "No Cloudflare deployment signal detected."
          ]
        }
      },
      "schema_version": "v1",
      "generated_at": "2026-07-07T07:00:11.548Z"
    },
    "metrics": {
      "project_id": "datopian/portaljs",
      "stars_30d_delta": 13,
      "commits_30d": 100,
      "releases_180d": 5,
      "contributors_90d": 88,
      "issue_first_response_median_hours": null,
      "recent_push_days": 0,
      "git_score": 36,
      "maintenance_score": 62,
      "signal_confidence": {
        "stars_30d_delta": "estimated",
        "commits_30d": "partial",
        "releases_180d": "complete",
        "contributors_90d": "complete"
      },
      "calculated_at": "2026-07-07T07:00:11.548Z"
    }
  },
  "resolved_from": {
    "requested_id": "datopian/portaljs",
    "resolved_id": "datopian/portaljs",
    "resolution": "direct"
  },
  "metadata": {
    "source": "d1",
    "reason": "d1_query",
    "project_count": 859,
    "generated_at": "2026-07-08T11:04:57.681Z",
    "loaded_project_limit": 2000,
    "truncated": false
  }
}