mirror of
https://github.com/hanzo-apps/hanzo.ai.git
synced 2026-10-29 07:20:43 +00:00
Every import, the catalog pin and the docs name @hanzo/app and github.com/hanzoai/app. lib/rooms.ts is lib/app.ts and components/rooms.tsx is components/app.tsx.
1413 lines
38 KiB
TypeScript
1413 lines
38 KiB
TypeScript
/**
|
|
* OSS Catalog Data Model
|
|
*
|
|
* Faceted browsing with hot/cool sorting, badges, and clear actions
|
|
*/
|
|
|
|
import { dev } from '@hanzo/app/lib/host'
|
|
import {
|
|
Bot,
|
|
Brain,
|
|
Code,
|
|
Database,
|
|
Key,
|
|
Layers,
|
|
MessageSquare,
|
|
Plug,
|
|
Route,
|
|
Search,
|
|
Shield,
|
|
Sparkles,
|
|
Terminal,
|
|
Zap,
|
|
FileCode,
|
|
Lock,
|
|
GitBranch,
|
|
type LucideIcon,
|
|
} from 'lucide-react';
|
|
|
|
// =============================================================================
|
|
// TYPES
|
|
// =============================================================================
|
|
|
|
export type RepoType = 'core' | 'sdk' | 'template' | 'tool' | 'mcp' | 'connector';
|
|
export type Maturity = 'stable' | 'active' | 'experimental';
|
|
export type DeploymentType = 'one-click' | 'docker' | 'k8s' | 'library' | 'npm' | 'pip';
|
|
|
|
export interface RepoActions {
|
|
deployUrl?: string;
|
|
docsUrl?: string;
|
|
/**
|
|
* Optional, and that is the point: not everything we publish has a public
|
|
* repo. While this was required, an entry with no repo to cite could only be
|
|
* written by inventing one — which is exactly how nine addresses that have
|
|
* never existed (hanzo-js/next, hanzoai/approvals, the zen-vl mirrors, …)
|
|
* came to be shipped as evidence that we are open source. A field nobody can
|
|
* leave blank is a field somebody will fill with a guess.
|
|
*
|
|
* The renderer shows the GitHub control only when this is set. An entry whose
|
|
* source is not on GitHub says so by omission and points at where it does
|
|
* live (learnUrl for a model card, npmUrl for a package).
|
|
*/
|
|
githubUrl?: string;
|
|
learnUrl?: string;
|
|
npmUrl?: string;
|
|
pypiUrl?: string;
|
|
}
|
|
|
|
export interface RepoSignals {
|
|
updatedAt: string;
|
|
featured: boolean;
|
|
recommended: boolean;
|
|
deployable: boolean;
|
|
hotScore: number; // 0-100, computed from signals
|
|
}
|
|
|
|
export interface OSSRepo {
|
|
id: string;
|
|
name: string;
|
|
slug: string;
|
|
description: string;
|
|
type: RepoType;
|
|
categories: string[];
|
|
languages: string[];
|
|
useCases: string[];
|
|
maturity: Maturity;
|
|
deployment: DeploymentType[];
|
|
actions: RepoActions;
|
|
signals: RepoSignals;
|
|
icon?: LucideIcon;
|
|
upstream?: {
|
|
name: string;
|
|
url: string;
|
|
};
|
|
}
|
|
|
|
export interface FeaturedCollection {
|
|
id: string;
|
|
title: string;
|
|
description: string;
|
|
repos: string[]; // repo ids
|
|
icon: LucideIcon;
|
|
}
|
|
|
|
// =============================================================================
|
|
// FILTER TAXONOMY
|
|
// =============================================================================
|
|
|
|
export const repoTypes: { value: RepoType; label: string; description: string }[] = [
|
|
{ value: 'core', label: 'Core Infrastructure', description: 'Foundational platform services' },
|
|
{ value: 'sdk', label: 'SDK / Library', description: 'Client libraries and SDKs' },
|
|
{ value: 'template', label: 'Template / Starter', description: 'Ready-to-deploy starters' },
|
|
{ value: 'tool', label: 'Tooling', description: 'CLI tools and utilities' },
|
|
{ value: 'mcp', label: 'MCP Server', description: 'Model Context Protocol tools' },
|
|
{ value: 'connector', label: 'Connector', description: 'Integrations and adapters' },
|
|
];
|
|
|
|
export const categories = [
|
|
'AI & Agents',
|
|
'Developer Tools',
|
|
'App Platform',
|
|
'Databases & Search',
|
|
'Integrations & Automation',
|
|
'Security & Governance',
|
|
'Observability & Ops',
|
|
'Infrastructure',
|
|
];
|
|
|
|
export const languages = [
|
|
'TypeScript',
|
|
'Python',
|
|
'Go',
|
|
'Rust',
|
|
'Java',
|
|
'Shell',
|
|
];
|
|
|
|
export const useCases = [
|
|
'RAG',
|
|
'Multi-agent',
|
|
'Inference Gateway',
|
|
'MCP Tooling',
|
|
'Observability',
|
|
'CI/CD',
|
|
'Vector Search',
|
|
'Authentication',
|
|
'Serverless',
|
|
'Data Pipeline',
|
|
];
|
|
|
|
export const maturityLevels: { value: Maturity; label: string; color: string }[] = [
|
|
{ value: 'stable', label: 'Stable', color: 'green' },
|
|
{ value: 'active', label: 'Active', color: 'blue' },
|
|
{ value: 'experimental', label: 'Experimental', color: 'orange' },
|
|
];
|
|
|
|
export const deploymentTypes: { value: DeploymentType; label: string }[] = [
|
|
{ value: 'one-click', label: 'One-click Deploy' },
|
|
{ value: 'docker', label: 'Docker' },
|
|
{ value: 'k8s', label: 'Kubernetes' },
|
|
{ value: 'library', label: 'Library Only' },
|
|
{ value: 'npm', label: 'npm Package' },
|
|
{ value: 'pip', label: 'pip Package' },
|
|
];
|
|
|
|
// =============================================================================
|
|
// SORT OPTIONS
|
|
// =============================================================================
|
|
|
|
export const sortOptions = [
|
|
{ value: 'name', label: 'Alphabetical', description: 'A to Z' },
|
|
{ value: 'recent', label: 'Recently Updated', description: 'Latest changes' },
|
|
{ value: 'hot', label: 'Hot', description: 'Trending and recommended' },
|
|
{ value: 'beginner', label: 'Beginner-friendly', description: 'Easy to start' },
|
|
];
|
|
|
|
// =============================================================================
|
|
// FEATURED COLLECTIONS
|
|
// =============================================================================
|
|
|
|
export const featuredCollections: FeaturedCollection[] = [
|
|
{
|
|
id: 'build-agent',
|
|
title: 'Build an Agent',
|
|
description: 'Everything you need to build AI agents',
|
|
repos: ['dev', 'mcp', 'agent', 'vector', 'functions'],
|
|
icon: Bot,
|
|
},
|
|
{
|
|
id: 'ship-rag',
|
|
title: 'Ship a RAG API',
|
|
description: 'Vector search + AI models + SQL',
|
|
repos: ['vector', 'sql', 'gateway'],
|
|
icon: Search,
|
|
},
|
|
{
|
|
id: 'deploy-mcp',
|
|
title: 'Deploy MCP Server',
|
|
description: 'Model Context Protocol tools',
|
|
repos: ['mcp', 'functions'],
|
|
icon: Plug,
|
|
},
|
|
{
|
|
id: 'automation-governance',
|
|
title: 'Automation + Governance',
|
|
description: 'Workflows with policy controls',
|
|
repos: ['auto', 'flow', 'policy', 'approvals'],
|
|
icon: Shield,
|
|
},
|
|
{
|
|
id: 'open-weight-models',
|
|
title: 'Open-Weight Models',
|
|
description: 'Zen LM open-weight AI models from 0.6B to 1T+',
|
|
repos: ['zen4-ultra', 'zen4-coder-flash', 'zen4-max', 'zen-omni', 'zen4', 'zen-nano'],
|
|
icon: Brain,
|
|
},
|
|
];
|
|
|
|
// =============================================================================
|
|
// OSS CATALOG DATA
|
|
// =============================================================================
|
|
|
|
export const ossCatalog: OSSRepo[] = [
|
|
// ===== CORE INFRASTRUCTURE =====
|
|
{
|
|
id: 'dev',
|
|
name: 'Hanzo Dev',
|
|
slug: 'hanzoai/dev',
|
|
description: 'AI coding agent for your terminal. Multi-agent orchestration, codebase understanding, and PR automation.',
|
|
type: 'tool',
|
|
categories: ['AI & Agents', 'Developer Tools'],
|
|
languages: ['TypeScript', 'Rust'],
|
|
useCases: ['Multi-agent', 'CI/CD'],
|
|
maturity: 'stable',
|
|
deployment: ['npm', 'one-click'],
|
|
actions: {
|
|
deployUrl: 'https://hanzo.sh',
|
|
docsUrl: 'https://docs.hanzo.ai/docs/dev',
|
|
githubUrl: 'https://github.com/hanzoai/dev',
|
|
learnUrl: dev(),
|
|
npmUrl: 'https://npmjs.com/package/@hanzo/dev',
|
|
},
|
|
signals: {
|
|
updatedAt: '2026-01-20',
|
|
featured: true,
|
|
recommended: true,
|
|
deployable: true,
|
|
hotScore: 98,
|
|
},
|
|
icon: Terminal,
|
|
},
|
|
{
|
|
id: 'gateway',
|
|
name: 'Hanzo AI',
|
|
slug: 'hanzoai/ai',
|
|
description: 'One API for every model. OpenAI- and Anthropic-compatible, with load balancing, caching, and observability.',
|
|
type: 'core',
|
|
categories: ['AI & Agents', 'Infrastructure'],
|
|
languages: ['Python'],
|
|
useCases: ['Inference Gateway', 'Observability'],
|
|
maturity: 'stable',
|
|
deployment: ['docker', 'k8s', 'one-click'],
|
|
actions: {
|
|
deployUrl: 'https://platform.hanzo.ai/deploy',
|
|
docsUrl: 'https://docs.hanzo.ai/docs/projects/hanzoai/gateway',
|
|
githubUrl: 'https://github.com/hanzoai/ai',
|
|
learnUrl: '/zen',
|
|
},
|
|
signals: {
|
|
updatedAt: '2026-01-19',
|
|
featured: true,
|
|
recommended: true,
|
|
deployable: true,
|
|
hotScore: 95,
|
|
},
|
|
icon: Route,
|
|
},
|
|
{
|
|
id: 'mcp',
|
|
name: 'Hanzo MCP',
|
|
slug: 'hanzoai/mcp',
|
|
description: '260+ tools for AI models via Model Context Protocol. File ops, browser, search, memory, and more.',
|
|
type: 'mcp',
|
|
categories: ['AI & Agents', 'Developer Tools'],
|
|
languages: ['TypeScript'],
|
|
useCases: ['MCP Tooling', 'Multi-agent'],
|
|
maturity: 'active',
|
|
deployment: ['npm'],
|
|
actions: {
|
|
docsUrl: 'https://docs.hanzo.ai/docs/mcp',
|
|
githubUrl: 'https://github.com/hanzoai/mcp',
|
|
learnUrl: '/mcp',
|
|
npmUrl: 'https://npmjs.com/package/@hanzo/mcp',
|
|
},
|
|
signals: {
|
|
updatedAt: '2026-01-18',
|
|
featured: true,
|
|
recommended: true,
|
|
deployable: false,
|
|
hotScore: 92,
|
|
},
|
|
icon: Plug,
|
|
},
|
|
{
|
|
id: 'chat',
|
|
name: 'Hanzo Chat',
|
|
slug: 'hanzoai/chat',
|
|
description: 'Enhanced ChatGPT-style UI with multi-model support, plugins, and MCP integration.',
|
|
type: 'template',
|
|
categories: ['AI & Agents', 'App Platform'],
|
|
languages: ['TypeScript'],
|
|
useCases: ['Multi-agent', 'RAG'],
|
|
maturity: 'stable',
|
|
deployment: ['docker', 'one-click'],
|
|
actions: {
|
|
deployUrl: 'https://platform.hanzo.ai/deploy',
|
|
docsUrl: 'https://docs.hanzo.ai/docs/chat',
|
|
githubUrl: 'https://github.com/hanzoai/chat',
|
|
learnUrl: '/chat',
|
|
},
|
|
signals: {
|
|
updatedAt: '2026-01-16',
|
|
featured: false,
|
|
recommended: true,
|
|
deployable: true,
|
|
hotScore: 82,
|
|
},
|
|
icon: MessageSquare,
|
|
upstream: {
|
|
name: 'LibreChat',
|
|
url: 'https://github.com/danny-avila/LibreChat',
|
|
},
|
|
},
|
|
|
|
// ===== SDKs =====
|
|
{
|
|
id: 'python-sdk',
|
|
name: 'Python SDK',
|
|
slug: 'hanzoai/python-sdk',
|
|
description: 'Flagship Python SDK — models, agents, tools, memory, and the full Hanzo cloud. pip install hanzo.',
|
|
type: 'sdk',
|
|
categories: ['Developer Tools'],
|
|
languages: ['Python'],
|
|
useCases: ['Inference Gateway', 'Multi-agent'],
|
|
maturity: 'stable',
|
|
deployment: ['pip'],
|
|
actions: {
|
|
docsUrl: 'https://docs.hanzo.ai/docs/sdks/python',
|
|
githubUrl: 'https://github.com/hanzoai/python-sdk',
|
|
pypiUrl: 'https://pypi.org/project/hanzo/',
|
|
},
|
|
signals: {
|
|
updatedAt: '2026-01-10',
|
|
featured: false,
|
|
recommended: true,
|
|
deployable: false,
|
|
hotScore: 70,
|
|
},
|
|
icon: Code,
|
|
},
|
|
{
|
|
id: 'js-sdk',
|
|
name: 'TypeScript SDK',
|
|
slug: 'hanzo-js/sdk',
|
|
description: 'Full cloud SDK for TypeScript/JavaScript. Works in Node.js, browsers, and edge runtimes.',
|
|
type: 'sdk',
|
|
categories: ['Developer Tools'],
|
|
languages: ['TypeScript'],
|
|
useCases: ['Inference Gateway', 'Multi-agent'],
|
|
maturity: 'stable',
|
|
deployment: ['npm'],
|
|
actions: {
|
|
docsUrl: 'https://docs.hanzo.ai/docs/sdks/typescript',
|
|
githubUrl: 'https://github.com/hanzo-js/sdk',
|
|
npmUrl: 'https://npmjs.com/package/@hanzo/sdk',
|
|
},
|
|
signals: {
|
|
updatedAt: '2026-01-09',
|
|
featured: false,
|
|
recommended: true,
|
|
deployable: false,
|
|
hotScore: 68,
|
|
},
|
|
icon: Code,
|
|
},
|
|
{
|
|
id: 'go-sdk',
|
|
name: 'Go SDK',
|
|
slug: 'hanzo-go/sdk',
|
|
description: 'Full cloud SDK for Go. Idiomatic Go with context support and connection pooling.',
|
|
type: 'sdk',
|
|
categories: ['Developer Tools'],
|
|
languages: ['Go'],
|
|
useCases: ['Inference Gateway'],
|
|
maturity: 'stable',
|
|
deployment: ['library'],
|
|
actions: {
|
|
docsUrl: 'https://docs.hanzo.ai/docs/sdks/go',
|
|
githubUrl: 'https://github.com/hanzo-go/sdk',
|
|
},
|
|
signals: {
|
|
updatedAt: '2026-01-08',
|
|
featured: false,
|
|
recommended: false,
|
|
deployable: false,
|
|
hotScore: 55,
|
|
},
|
|
icon: Code,
|
|
},
|
|
{
|
|
id: 'cpp-sdk',
|
|
name: 'C++ SDK',
|
|
slug: 'hanzo-cpp/sdk',
|
|
description: 'Full cloud SDK for C++. Header-first and idiomatic, built from source.',
|
|
type: 'sdk',
|
|
categories: ['Developer Tools'],
|
|
// Was ['Rust'] -- the one entry in this catalog whose language disagreed
|
|
// with its own name, so it answered a filter for Rust and never for C++.
|
|
languages: ['C++'],
|
|
useCases: ['Inference Gateway'],
|
|
maturity: 'active',
|
|
deployment: ['library'],
|
|
actions: {
|
|
docsUrl: 'https://docs.hanzo.ai/docs/sdks/cpp',
|
|
githubUrl: 'https://github.com/hanzo-cpp/sdk',
|
|
},
|
|
signals: {
|
|
updatedAt: '2026-01-06',
|
|
featured: false,
|
|
recommended: false,
|
|
deployable: false,
|
|
hotScore: 46,
|
|
},
|
|
icon: Code,
|
|
},
|
|
{
|
|
id: 'swift-sdk',
|
|
name: 'Swift SDK',
|
|
slug: 'hanzo-swift/sdk',
|
|
description: 'Full cloud SDK for Swift. Idiomatic async/await SwiftPM package for iOS, macOS, and server-side Swift.',
|
|
type: 'sdk',
|
|
categories: ['Developer Tools'],
|
|
languages: ['Swift'],
|
|
useCases: ['Inference Gateway'],
|
|
maturity: 'active',
|
|
deployment: ['library'],
|
|
actions: {
|
|
docsUrl: 'https://docs.hanzo.ai/docs/sdks/swift',
|
|
githubUrl: 'https://github.com/hanzo-swift/sdk',
|
|
},
|
|
signals: {
|
|
updatedAt: '2026-07-25',
|
|
featured: false,
|
|
recommended: false,
|
|
deployable: false,
|
|
hotScore: 44,
|
|
},
|
|
icon: Code,
|
|
},
|
|
{
|
|
id: 'kotlin-sdk',
|
|
name: 'Kotlin SDK',
|
|
slug: 'hanzo-kt/sdk',
|
|
description: 'Full cloud SDK for Kotlin. Coroutine-native client for JVM and Android, installed from JitPack.',
|
|
type: 'sdk',
|
|
categories: ['Developer Tools'],
|
|
languages: ['Kotlin'],
|
|
useCases: ['Inference Gateway'],
|
|
maturity: 'active',
|
|
deployment: ['library'],
|
|
actions: {
|
|
docsUrl: 'https://docs.hanzo.ai/docs/sdks/kotlin',
|
|
githubUrl: 'https://github.com/hanzo-kt/sdk',
|
|
},
|
|
signals: {
|
|
updatedAt: '2026-07-25',
|
|
featured: false,
|
|
recommended: false,
|
|
deployable: false,
|
|
hotScore: 42,
|
|
},
|
|
icon: Code,
|
|
},
|
|
|
|
// ===== SECURITY & GOVERNANCE =====
|
|
{
|
|
id: 'iam',
|
|
name: 'IAM',
|
|
slug: 'hanzoai/iam',
|
|
description: 'Identity and access management. RBAC, API keys, OAuth, and SSO.',
|
|
type: 'core',
|
|
categories: ['Security & Governance'],
|
|
languages: ['Go', 'TypeScript'],
|
|
useCases: ['Authentication'],
|
|
maturity: 'stable',
|
|
deployment: ['docker', 'k8s'],
|
|
actions: {
|
|
docsUrl: 'https://docs.hanzo.ai/docs/projects/hanzoai/iam',
|
|
githubUrl: 'https://github.com/hanzoai/iam',
|
|
learnUrl: '/iam',
|
|
},
|
|
signals: {
|
|
updatedAt: '2026-01-10',
|
|
featured: false,
|
|
recommended: true,
|
|
deployable: true,
|
|
hotScore: 60,
|
|
},
|
|
icon: Key,
|
|
},
|
|
{
|
|
id: 'policy',
|
|
name: 'Policy Engine',
|
|
slug: 'hanzoai/authz',
|
|
description: 'Policy-as-code for AI governance. Define rules for model access, data handling, and compliance.',
|
|
type: 'core',
|
|
categories: ['Security & Governance', 'AI & Agents'],
|
|
languages: ['Go'],
|
|
useCases: ['Authentication'],
|
|
maturity: 'active',
|
|
deployment: ['docker', 'library'],
|
|
actions: {
|
|
docsUrl: 'https://docs.hanzo.ai/docs/projects/hanzoai/authz',
|
|
// hanzoai/authz — "access control library for Go: ACL, RBAC, ABAC policy
|
|
// enforcement", which is this entry exactly. The docs link already said
|
|
// authz; only the repo name was invented, and hanzoai/policy never existed.
|
|
githubUrl: 'https://github.com/hanzoai/authz',
|
|
learnUrl: '/guard',
|
|
},
|
|
signals: {
|
|
updatedAt: '2026-01-09',
|
|
featured: false,
|
|
recommended: false,
|
|
deployable: true,
|
|
hotScore: 45,
|
|
},
|
|
icon: Shield,
|
|
},
|
|
{
|
|
id: 'approvals',
|
|
name: 'Approvals',
|
|
slug: 'hanzoai/approvals',
|
|
description: 'Human-in-the-loop approval workflows. Review gates for sensitive AI operations.',
|
|
type: 'tool',
|
|
categories: ['Security & Governance'],
|
|
languages: ['TypeScript'],
|
|
useCases: ['CI/CD'],
|
|
maturity: 'experimental',
|
|
deployment: ['docker'],
|
|
actions: {},
|
|
signals: {
|
|
updatedAt: '2026-01-05',
|
|
featured: false,
|
|
recommended: false,
|
|
deployable: true,
|
|
hotScore: 35,
|
|
},
|
|
icon: Lock,
|
|
},
|
|
|
|
// ===== DATABASES =====
|
|
{
|
|
id: 'sql',
|
|
name: 'SQL',
|
|
slug: 'hanzoai/sql',
|
|
description: 'Managed relational database with pgvector. SQL and vector search in one store.',
|
|
type: 'core',
|
|
categories: ['Databases & Search'],
|
|
languages: ['SQL'],
|
|
useCases: ['Vector Search', 'Data Pipeline'],
|
|
maturity: 'stable',
|
|
deployment: ['one-click', 'docker'],
|
|
actions: {
|
|
deployUrl: 'https://platform.hanzo.ai/deploy',
|
|
githubUrl: 'https://github.com/hanzoai/sql',
|
|
learnUrl: '/products/memory',
|
|
},
|
|
signals: {
|
|
updatedAt: '2026-01-08',
|
|
featured: false,
|
|
recommended: true,
|
|
deployable: true,
|
|
hotScore: 62,
|
|
},
|
|
icon: Database,
|
|
},
|
|
{
|
|
id: 'kv',
|
|
name: 'KV Store',
|
|
slug: 'hanzoai/kv',
|
|
description: 'Edge-optimized key-value store. Sub-millisecond reads with global replication.',
|
|
type: 'core',
|
|
categories: ['Databases & Search'],
|
|
languages: ['Rust'],
|
|
useCases: [],
|
|
maturity: 'stable',
|
|
deployment: ['one-click'],
|
|
actions: {
|
|
deployUrl: 'https://platform.hanzo.ai/deploy',
|
|
githubUrl: 'https://github.com/hanzoai/kv',
|
|
learnUrl: '/products/memory',
|
|
},
|
|
signals: {
|
|
updatedAt: '2026-01-06',
|
|
featured: false,
|
|
recommended: false,
|
|
deployable: true,
|
|
hotScore: 48,
|
|
},
|
|
icon: Database,
|
|
},
|
|
|
|
// ===== OBSERVABILITY =====
|
|
|
|
// ===== INFRASTRUCTURE =====
|
|
|
|
// ===== CONNECTORS =====
|
|
{
|
|
id: 'github-connector',
|
|
name: 'GitHub Connector',
|
|
slug: 'hanzoai/github-connector',
|
|
description: 'Sync GitHub repos, issues, and PRs. Bi-directional integration.',
|
|
type: 'connector',
|
|
categories: ['Integrations & Automation'],
|
|
languages: ['TypeScript'],
|
|
useCases: ['CI/CD'],
|
|
maturity: 'stable',
|
|
deployment: ['npm'],
|
|
actions: {
|
|
docsUrl: 'https://docs.hanzo.ai/docs/integrations',
|
|
},
|
|
signals: {
|
|
updatedAt: '2026-01-10',
|
|
featured: false,
|
|
recommended: false,
|
|
deployable: false,
|
|
hotScore: 42,
|
|
},
|
|
icon: GitBranch,
|
|
},
|
|
{
|
|
id: 'slack-connector',
|
|
name: 'Slack Connector',
|
|
slug: 'hanzoai/slack-connector',
|
|
description: 'Slack integration for AI workflows. Commands, notifications, and threads.',
|
|
type: 'connector',
|
|
categories: ['Integrations & Automation'],
|
|
languages: ['TypeScript'],
|
|
useCases: [],
|
|
maturity: 'stable',
|
|
deployment: ['npm'],
|
|
actions: {
|
|
docsUrl: 'https://docs.hanzo.ai/docs/integrations',
|
|
},
|
|
signals: {
|
|
updatedAt: '2026-01-08',
|
|
featured: false,
|
|
recommended: false,
|
|
deployable: false,
|
|
hotScore: 38,
|
|
},
|
|
icon: MessageSquare,
|
|
},
|
|
|
|
// ===== HANZOAI — ECOMMERCE & LEGACY =====
|
|
{
|
|
id: 'form-js',
|
|
name: 'form.js',
|
|
slug: 'hanzoai/form.js',
|
|
description: 'Automagic forms.',
|
|
type: 'sdk',
|
|
categories: ['App Platform', 'Developer Tools'],
|
|
languages: ['CoffeeScript'],
|
|
useCases: [],
|
|
maturity: 'stable',
|
|
deployment: ['npm'],
|
|
actions: {
|
|
githubUrl: 'https://github.com/hanzoai/form.js',
|
|
},
|
|
signals: {
|
|
updatedAt: '2026-02-28',
|
|
featured: false,
|
|
recommended: false,
|
|
deployable: false,
|
|
hotScore: 12,
|
|
},
|
|
icon: FileCode,
|
|
},
|
|
|
|
// ===== HANZOAI — AI PLATFORM CORE =====
|
|
{
|
|
id: 'hanzo-gui',
|
|
name: 'Hanzo GUI',
|
|
slug: 'hanzoai/gui',
|
|
description: 'Drag & drop UI to build your customized LLM flow and Agents.',
|
|
type: 'core',
|
|
categories: ['AI & Agents', 'App Platform'],
|
|
languages: ['TypeScript'],
|
|
useCases: ['Multi-agent', 'Data Pipeline'],
|
|
maturity: 'active',
|
|
deployment: ['docker', 'one-click'],
|
|
actions: {
|
|
docsUrl: 'https://docs.hanzo.ai',
|
|
githubUrl: 'https://github.com/hanzoai/gui',
|
|
},
|
|
signals: {
|
|
updatedAt: '2026-02-28',
|
|
featured: false,
|
|
recommended: true,
|
|
deployable: true,
|
|
hotScore: 70,
|
|
},
|
|
icon: Layers,
|
|
},
|
|
{
|
|
id: 'hanzo-iam',
|
|
name: 'Hanzo IAM',
|
|
slug: 'hanzoai/iam',
|
|
description: 'Identity and access management.',
|
|
type: 'core',
|
|
categories: ['Security & Governance'],
|
|
languages: ['Go'],
|
|
useCases: ['Authentication'],
|
|
maturity: 'stable',
|
|
deployment: ['docker', 'k8s'],
|
|
actions: {
|
|
docsUrl: 'https://docs.hanzo.ai',
|
|
githubUrl: 'https://github.com/hanzoai/iam',
|
|
},
|
|
signals: {
|
|
updatedAt: '2026-02-28',
|
|
featured: false,
|
|
recommended: true,
|
|
deployable: true,
|
|
hotScore: 60,
|
|
},
|
|
icon: Key,
|
|
},
|
|
{
|
|
id: 'hanzo-chat',
|
|
name: 'Hanzo Chat',
|
|
slug: 'hanzoai/chat',
|
|
description: 'AI chat with MCP integration and multi-provider support.',
|
|
type: 'tool',
|
|
categories: ['AI & Agents', 'App Platform'],
|
|
languages: ['HTML'],
|
|
useCases: ['Multi-agent'],
|
|
maturity: 'active',
|
|
deployment: ['docker'],
|
|
actions: {
|
|
docsUrl: 'https://docs.hanzo.ai',
|
|
githubUrl: 'https://github.com/hanzoai/chat',
|
|
},
|
|
signals: {
|
|
updatedAt: '2026-02-28',
|
|
featured: false,
|
|
recommended: true,
|
|
deployable: true,
|
|
hotScore: 68,
|
|
},
|
|
icon: MessageSquare,
|
|
},
|
|
|
|
// ===== HANZOAI — AI MODELS & INFERENCE =====
|
|
|
|
// ===== HANZOAI — PLATFORM & DEVOPS =====
|
|
{
|
|
id: 'hanzo-bot',
|
|
name: 'Hanzo Bot',
|
|
slug: 'hanzoai/bot',
|
|
description: 'Autonomous AI team in a box. Every role, every channel, every platform.',
|
|
type: 'core',
|
|
categories: ['AI & Agents', 'Integrations & Automation'],
|
|
languages: ['TypeScript'],
|
|
useCases: ['Multi-agent'],
|
|
maturity: 'active',
|
|
deployment: ['docker', 'npm'],
|
|
actions: {
|
|
docsUrl: 'https://docs.hanzo.ai',
|
|
githubUrl: 'https://github.com/hanzoai/bot',
|
|
},
|
|
signals: {
|
|
updatedAt: '2026-02-28',
|
|
featured: false,
|
|
recommended: true,
|
|
deployable: true,
|
|
hotScore: 66,
|
|
},
|
|
icon: Bot,
|
|
},
|
|
{
|
|
id: 'hanzo-base',
|
|
name: 'Hanzo Base',
|
|
slug: 'hanzoai/base',
|
|
description: 'Hanzo Base — Backend-as-a-Service with realtime and auth.',
|
|
type: 'core',
|
|
categories: ['App Platform', 'Infrastructure'],
|
|
languages: ['Go'],
|
|
useCases: ['Authentication'],
|
|
maturity: 'stable',
|
|
deployment: ['docker', 'k8s'],
|
|
actions: {
|
|
docsUrl: 'https://docs.hanzo.ai',
|
|
githubUrl: 'https://github.com/hanzoai/base',
|
|
},
|
|
signals: {
|
|
updatedAt: '2026-02-28',
|
|
featured: false,
|
|
recommended: true,
|
|
deployable: true,
|
|
hotScore: 65,
|
|
},
|
|
icon: Database,
|
|
},
|
|
{
|
|
id: 'hanzo-ui',
|
|
name: 'Hanzo UI',
|
|
slug: 'hanzoai/ui',
|
|
description: 'React component library for AI applications.',
|
|
type: 'sdk',
|
|
categories: ['App Platform', 'Developer Tools'],
|
|
languages: ['TypeScript'],
|
|
useCases: [],
|
|
maturity: 'stable',
|
|
deployment: ['npm'],
|
|
actions: {
|
|
docsUrl: 'https://docs.hanzo.ai',
|
|
githubUrl: 'https://github.com/hanzoai/ui',
|
|
npmUrl: 'https://npmjs.com/package/@hanzo/ui',
|
|
},
|
|
signals: {
|
|
updatedAt: '2026-02-28',
|
|
featured: true,
|
|
recommended: true,
|
|
deployable: false,
|
|
hotScore: 78,
|
|
},
|
|
icon: Layers,
|
|
},
|
|
|
|
// ===== HANZOAI — CRYPTO & SECURITY =====
|
|
|
|
// ===== HANZOAI — DOCS & GOVERNANCE =====
|
|
{
|
|
id: 'hanzo-hips',
|
|
name: 'HIPs',
|
|
slug: 'hanzoai/hips',
|
|
description: 'Hanzo Improvement Proposals.',
|
|
type: 'tool',
|
|
categories: ['Developer Tools'],
|
|
languages: ['HTML'],
|
|
useCases: [],
|
|
maturity: 'stable',
|
|
deployment: ['library'],
|
|
actions: {
|
|
githubUrl: 'https://github.com/hanzoai/hips',
|
|
},
|
|
signals: {
|
|
updatedAt: '2026-02-28',
|
|
featured: false,
|
|
recommended: false,
|
|
deployable: false,
|
|
hotScore: 18,
|
|
},
|
|
icon: FileCode,
|
|
},
|
|
|
|
|
|
|
|
|
|
// ===== ZEN LM — OPEN-WEIGHT MODELS =====
|
|
{
|
|
id: 'zen-nano',
|
|
name: 'Zen Nano',
|
|
slug: 'zenlm/zen-nano',
|
|
description: '0.6B edge model — 40K context, optimized for on-device deployment.',
|
|
type: 'core',
|
|
categories: ['AI & Agents'],
|
|
languages: ['Python'],
|
|
useCases: ['Inference Gateway'],
|
|
maturity: 'stable',
|
|
deployment: ['pip', 'library'],
|
|
actions: {
|
|
githubUrl: 'https://github.com/zenlm/zen-nano',
|
|
learnUrl: 'https://huggingface.co/zenlm/zen-nano',
|
|
},
|
|
signals: {
|
|
updatedAt: '2026-02-28',
|
|
featured: false,
|
|
recommended: true,
|
|
deployable: false,
|
|
hotScore: 62,
|
|
},
|
|
icon: Sparkles,
|
|
},
|
|
{
|
|
id: 'zen4-mini',
|
|
name: 'Zen4 Mini',
|
|
slug: 'zenlm/zen4-mini',
|
|
description: '4B unbiased AI model — abliterated, edge deployment.',
|
|
type: 'core',
|
|
categories: ['AI & Agents'],
|
|
languages: ['Python'],
|
|
useCases: ['Inference Gateway'],
|
|
maturity: 'stable',
|
|
deployment: ['pip', 'library'],
|
|
actions: {
|
|
githubUrl: 'https://github.com/zenlm/zen4-mini',
|
|
},
|
|
signals: {
|
|
updatedAt: '2026-02-28',
|
|
featured: false,
|
|
recommended: true,
|
|
deployable: false,
|
|
hotScore: 60,
|
|
},
|
|
icon: Sparkles,
|
|
},
|
|
{
|
|
id: 'zen4',
|
|
name: 'Zen4',
|
|
slug: 'zenlm/zen4',
|
|
description: '8B dense model — abliterated open weights, refusal bias removed.',
|
|
type: 'core',
|
|
categories: ['AI & Agents'],
|
|
languages: ['Python'],
|
|
useCases: ['Inference Gateway'],
|
|
maturity: 'stable',
|
|
deployment: ['pip', 'library'],
|
|
actions: {
|
|
githubUrl: 'https://github.com/zenlm/zen4',
|
|
},
|
|
signals: {
|
|
updatedAt: '2026-02-28',
|
|
featured: true,
|
|
recommended: true,
|
|
deployable: false,
|
|
hotScore: 72,
|
|
},
|
|
icon: Sparkles,
|
|
},
|
|
{
|
|
id: 'zen4-pro',
|
|
name: 'Zen4 Pro',
|
|
slug: 'zenlm/zen4-pro',
|
|
description: '14B unbiased AI model.',
|
|
type: 'core',
|
|
categories: ['AI & Agents'],
|
|
languages: ['Python'],
|
|
useCases: ['Inference Gateway'],
|
|
maturity: 'stable',
|
|
deployment: ['pip', 'library'],
|
|
actions: {
|
|
githubUrl: 'https://github.com/zenlm/zen4-pro',
|
|
},
|
|
signals: {
|
|
updatedAt: '2026-02-28',
|
|
featured: false,
|
|
recommended: true,
|
|
deployable: false,
|
|
hotScore: 68,
|
|
},
|
|
icon: Sparkles,
|
|
},
|
|
{
|
|
id: 'zen4-max',
|
|
name: 'Zen4 Max',
|
|
slug: 'zenlm/zen4-max',
|
|
description: '30B MoE unbiased AI model — 3B active parameters, efficient inference.',
|
|
type: 'core',
|
|
categories: ['AI & Agents'],
|
|
languages: ['Python'],
|
|
useCases: ['Inference Gateway', 'Multi-agent'],
|
|
maturity: 'stable',
|
|
deployment: ['pip', 'library'],
|
|
actions: {
|
|
githubUrl: 'https://github.com/zenlm/zen4-max',
|
|
},
|
|
signals: {
|
|
updatedAt: '2026-02-28',
|
|
featured: true,
|
|
recommended: true,
|
|
deployable: false,
|
|
hotScore: 80,
|
|
},
|
|
icon: Brain,
|
|
},
|
|
{
|
|
id: 'zen4-ultra',
|
|
name: 'Zen4 Ultra',
|
|
slug: 'zenlm/zen4-ultra',
|
|
description: '1.04T MoE frontier model — 32B active parameters, 256K context.',
|
|
type: 'core',
|
|
categories: ['AI & Agents'],
|
|
languages: ['Python'],
|
|
useCases: ['Inference Gateway', 'Multi-agent', 'RAG'],
|
|
maturity: 'stable',
|
|
deployment: ['pip', 'library'],
|
|
actions: {
|
|
githubUrl: 'https://github.com/zenlm/zen4-ultra',
|
|
},
|
|
signals: {
|
|
updatedAt: '2026-02-28',
|
|
featured: true,
|
|
recommended: true,
|
|
deployable: false,
|
|
hotScore: 95,
|
|
},
|
|
icon: Brain,
|
|
},
|
|
{
|
|
id: 'zen4-coder',
|
|
name: 'Zen4 Coder',
|
|
slug: 'zenlm/zen4-coder',
|
|
description: '80B MoE code model — abliterated open weights for generation, review and debugging.',
|
|
type: 'core',
|
|
categories: ['AI & Agents', 'Developer Tools'],
|
|
languages: ['Python'],
|
|
useCases: ['Inference Gateway'],
|
|
maturity: 'stable',
|
|
deployment: ['pip', 'library'],
|
|
actions: {
|
|
githubUrl: 'https://github.com/zenlm/zen4-coder',
|
|
},
|
|
signals: {
|
|
updatedAt: '2026-02-28',
|
|
featured: false,
|
|
recommended: true,
|
|
deployable: false,
|
|
hotScore: 78,
|
|
},
|
|
icon: Code,
|
|
},
|
|
{
|
|
id: 'zen4-coder-flash',
|
|
name: 'Zen4 Coder Flash',
|
|
slug: 'zenlm/zen4-coder-flash',
|
|
description: '31B MoE fast code model — 131K context, 59.2% SWE-bench, tool calling.',
|
|
type: 'core',
|
|
categories: ['AI & Agents', 'Developer Tools'],
|
|
languages: ['Python'],
|
|
useCases: ['Inference Gateway', 'Multi-agent'],
|
|
maturity: 'stable',
|
|
deployment: ['pip', 'library'],
|
|
actions: {
|
|
githubUrl: 'https://github.com/zenlm/zen4-coder-flash',
|
|
},
|
|
signals: {
|
|
updatedAt: '2026-02-28',
|
|
featured: true,
|
|
recommended: true,
|
|
deployable: false,
|
|
hotScore: 88,
|
|
},
|
|
icon: Code,
|
|
},
|
|
{
|
|
id: 'zen-coder',
|
|
name: 'Zen Coder',
|
|
slug: 'zenlm/zen-coder',
|
|
description: '4B code model — edge deployment.',
|
|
type: 'core',
|
|
categories: ['AI & Agents', 'Developer Tools'],
|
|
languages: ['Python'],
|
|
useCases: ['Inference Gateway'],
|
|
maturity: 'stable',
|
|
deployment: ['pip', 'library'],
|
|
actions: {
|
|
githubUrl: 'https://github.com/zenlm/zen-coder',
|
|
},
|
|
signals: {
|
|
updatedAt: '2026-02-28',
|
|
featured: false,
|
|
recommended: true,
|
|
deployable: false,
|
|
hotScore: 65,
|
|
},
|
|
icon: Code,
|
|
},
|
|
{
|
|
id: 'zen-vl-4b',
|
|
name: 'Zen VL 4B',
|
|
slug: 'zenlm/zen-vl-4b-instruct',
|
|
description: '4B vision-language model — image analysis, OCR, multimodal reasoning.',
|
|
type: 'core',
|
|
categories: ['AI & Agents'],
|
|
languages: ['Python'],
|
|
useCases: ['Inference Gateway', 'RAG'],
|
|
maturity: 'stable',
|
|
deployment: ['pip', 'library'],
|
|
actions: {
|
|
learnUrl: 'https://huggingface.co/zenlm/zen-vl-4b-instruct',
|
|
},
|
|
signals: {
|
|
updatedAt: '2026-02-28',
|
|
featured: false,
|
|
recommended: true,
|
|
deployable: false,
|
|
hotScore: 58,
|
|
},
|
|
icon: Sparkles,
|
|
},
|
|
{
|
|
id: 'zen-vl-8b',
|
|
name: 'Zen VL 8B',
|
|
slug: 'zenlm/zen-vl-8b-instruct',
|
|
description: '8B vision-language model — 256K context, OCR across 32 languages.',
|
|
type: 'core',
|
|
categories: ['AI & Agents'],
|
|
languages: ['Python'],
|
|
useCases: ['Inference Gateway', 'RAG'],
|
|
maturity: 'stable',
|
|
deployment: ['pip', 'library'],
|
|
actions: {
|
|
learnUrl: 'https://huggingface.co/zenlm/zen-vl-8b-instruct',
|
|
},
|
|
signals: {
|
|
updatedAt: '2026-02-28',
|
|
featured: false,
|
|
recommended: true,
|
|
deployable: false,
|
|
hotScore: 62,
|
|
},
|
|
icon: Sparkles,
|
|
},
|
|
{
|
|
id: 'zen-vl-30b',
|
|
name: 'Zen VL 30B',
|
|
slug: 'zenlm/zen-vl-30b-instruct',
|
|
description: '30B MoE vision-language model — STEM/code multimodal reasoning.',
|
|
type: 'core',
|
|
categories: ['AI & Agents'],
|
|
languages: ['Python'],
|
|
useCases: ['Inference Gateway', 'RAG', 'Multi-agent'],
|
|
maturity: 'stable',
|
|
deployment: ['pip', 'library'],
|
|
actions: {
|
|
learnUrl: 'https://huggingface.co/zenlm/zen-vl-30b-instruct',
|
|
},
|
|
signals: {
|
|
updatedAt: '2026-02-28',
|
|
featured: false,
|
|
recommended: true,
|
|
deployable: false,
|
|
hotScore: 70,
|
|
},
|
|
icon: Brain,
|
|
},
|
|
{
|
|
id: 'zen-omni',
|
|
name: 'Zen Omni',
|
|
slug: 'zenlm/zen-omni',
|
|
description: 'Multimodal text + vision + audio model — cross-modal reasoning.',
|
|
type: 'core',
|
|
categories: ['AI & Agents'],
|
|
languages: ['Python'],
|
|
useCases: ['Inference Gateway', 'Multi-agent'],
|
|
maturity: 'stable',
|
|
deployment: ['pip', 'library'],
|
|
actions: {
|
|
githubUrl: 'https://github.com/zenlm/zen-omni',
|
|
learnUrl: 'https://huggingface.co/zenlm/zen-omni',
|
|
},
|
|
signals: {
|
|
updatedAt: '2026-02-28',
|
|
featured: true,
|
|
recommended: true,
|
|
deployable: false,
|
|
hotScore: 82,
|
|
},
|
|
icon: Brain,
|
|
},
|
|
{
|
|
id: 'zen4-ultra-trainer',
|
|
name: 'Zen4 Ultra Trainer',
|
|
slug: 'zenlm/zen4-ultra-trainer',
|
|
description: 'GT-QLoRA training for 1T MoE models — Gate-Targeted QLoRA for MoE uncensoring.',
|
|
type: 'tool',
|
|
categories: ['AI & Agents', 'Developer Tools'],
|
|
languages: ['Python'],
|
|
useCases: [],
|
|
maturity: 'experimental',
|
|
deployment: ['pip'],
|
|
actions: {
|
|
githubUrl: 'https://github.com/zenlm/zen4-ultra-trainer',
|
|
},
|
|
signals: {
|
|
updatedAt: '2026-02-28',
|
|
featured: false,
|
|
recommended: false,
|
|
deployable: false,
|
|
hotScore: 45,
|
|
},
|
|
icon: Brain,
|
|
},
|
|
|
|
|
|
// ===== COMMUNITY ORGS =====
|
|
{
|
|
id: 'ellipsis',
|
|
name: 'Ellipsis',
|
|
slug: 'ellipsis/ellipsis',
|
|
description: 'Shell-based dotfiles package manager with extensions ecosystem.',
|
|
type: 'tool',
|
|
categories: ['Developer Tools'],
|
|
languages: ['Shell'],
|
|
useCases: [],
|
|
maturity: 'stable',
|
|
deployment: ['library'],
|
|
actions: {
|
|
githubUrl: 'https://github.com/ellipsis/ellipsis',
|
|
},
|
|
signals: {
|
|
updatedAt: '2026-02-28',
|
|
featured: false,
|
|
recommended: true,
|
|
deployable: false,
|
|
hotScore: 68,
|
|
},
|
|
icon: Terminal,
|
|
},
|
|
{
|
|
id: 'shop-js',
|
|
name: 'shop.js',
|
|
slug: 'shopjs/shop.js',
|
|
description: 'Full ecommerce UI framework.',
|
|
type: 'core',
|
|
categories: ['App Platform'],
|
|
languages: ['TypeScript'],
|
|
useCases: [],
|
|
maturity: 'stable',
|
|
deployment: ['npm'],
|
|
actions: {
|
|
githubUrl: 'https://github.com/shopjs/shop.js',
|
|
},
|
|
signals: {
|
|
updatedAt: '2026-02-28',
|
|
featured: false,
|
|
recommended: true,
|
|
deployable: false,
|
|
hotScore: 75,
|
|
},
|
|
icon: Zap,
|
|
},
|
|
{
|
|
id: 'sake-cli',
|
|
name: 'Sake CLI',
|
|
slug: 'sakejs/sake-cli',
|
|
description: 'CoffeeScript/JS build tool, make-like task runner.',
|
|
type: 'tool',
|
|
categories: ['Developer Tools'],
|
|
languages: ['CoffeeScript'],
|
|
useCases: ['CI/CD'],
|
|
maturity: 'stable',
|
|
deployment: ['npm'],
|
|
actions: {
|
|
githubUrl: 'https://github.com/sakejs/sake-cli',
|
|
},
|
|
signals: {
|
|
updatedAt: '2026-02-28',
|
|
featured: false,
|
|
recommended: false,
|
|
deployable: false,
|
|
hotScore: 42,
|
|
},
|
|
icon: Terminal,
|
|
},
|
|
{
|
|
id: 'sake-core',
|
|
name: 'Sake Core',
|
|
slug: 'sakejs/sake-core',
|
|
description: 'Sake build system core.',
|
|
type: 'tool',
|
|
categories: ['Developer Tools'],
|
|
languages: ['CoffeeScript'],
|
|
useCases: ['CI/CD'],
|
|
maturity: 'stable',
|
|
deployment: ['npm'],
|
|
actions: {
|
|
githubUrl: 'https://github.com/sakejs/sake-core',
|
|
},
|
|
signals: {
|
|
updatedAt: '2026-02-28',
|
|
featured: false,
|
|
recommended: false,
|
|
deployable: false,
|
|
hotScore: 38,
|
|
},
|
|
icon: Terminal,
|
|
},
|
|
{
|
|
id: 'ethereum-reader',
|
|
name: 'Ethereum Reader',
|
|
slug: 'hanzo-labs/ethereum-reader',
|
|
description: 'Ethereum blockchain reader.',
|
|
type: 'core',
|
|
categories: ['Infrastructure', 'Databases & Search'],
|
|
languages: ['Go'],
|
|
useCases: ['Data Pipeline'],
|
|
maturity: 'stable',
|
|
deployment: ['library'],
|
|
actions: {
|
|
githubUrl: 'https://github.com/hanzo-labs/ethereum-reader',
|
|
},
|
|
signals: {
|
|
updatedAt: '2026-02-28',
|
|
featured: false,
|
|
recommended: false,
|
|
deployable: false,
|
|
hotScore: 32,
|
|
},
|
|
icon: Database,
|
|
},
|
|
{
|
|
id: 'hanzo-react',
|
|
name: 'Hanzo React',
|
|
slug: '@hanzo/react',
|
|
description: 'React primitives for Hanzo.',
|
|
type: 'sdk',
|
|
categories: ['App Platform', 'Developer Tools'],
|
|
languages: ['TypeScript'],
|
|
useCases: [],
|
|
maturity: 'stable',
|
|
deployment: ['npm'],
|
|
actions: {
|
|
npmUrl: 'https://npmjs.com/package/@hanzo/react',
|
|
},
|
|
signals: {
|
|
updatedAt: '2026-02-28',
|
|
featured: false,
|
|
recommended: false,
|
|
deployable: false,
|
|
hotScore: 35,
|
|
},
|
|
icon: Layers,
|
|
},
|
|
{
|
|
id: 'hanzo-next',
|
|
name: 'Hanzo Next',
|
|
slug: 'hanzo-js/next',
|
|
description: 'Next.js integration for Hanzo.',
|
|
type: 'sdk',
|
|
categories: ['App Platform', 'Developer Tools'],
|
|
languages: ['TypeScript'],
|
|
useCases: [],
|
|
maturity: 'stable',
|
|
deployment: ['npm'],
|
|
actions: {},
|
|
signals: {
|
|
updatedAt: '2026-02-28',
|
|
featured: false,
|
|
recommended: false,
|
|
deployable: false,
|
|
hotScore: 35,
|
|
},
|
|
icon: Layers,
|
|
},
|
|
];
|
|
|
|
// =============================================================================
|
|
// HELPER FUNCTIONS
|
|
// =============================================================================
|
|
|
|
export function getRepoById(id: string): OSSRepo | undefined {
|
|
return ossCatalog.find(repo => repo.id === id);
|
|
}
|
|
|
|
export function getReposByType(type: RepoType): OSSRepo[] {
|
|
return ossCatalog.filter(repo => repo.type === type);
|
|
}
|
|
|
|
export function getReposByCategory(category: string): OSSRepo[] {
|
|
return ossCatalog.filter(repo => repo.categories.includes(category));
|
|
}
|
|
|
|
export function getFeaturedRepos(): OSSRepo[] {
|
|
return ossCatalog.filter(repo => repo.signals.featured);
|
|
}
|
|
|
|
export function getRecommendedRepos(): OSSRepo[] {
|
|
return ossCatalog.filter(repo => repo.signals.recommended);
|
|
}
|
|
|
|
export function sortByHot(repos: OSSRepo[]): OSSRepo[] {
|
|
return [...repos].sort((a, b) => b.signals.hotScore - a.signals.hotScore);
|
|
}
|
|
|
|
export function sortByRecent(repos: OSSRepo[]): OSSRepo[] {
|
|
return [...repos].sort((a, b) =>
|
|
new Date(b.signals.updatedAt).getTime() - new Date(a.signals.updatedAt).getTime()
|
|
);
|
|
}
|
|
|
|
export function filterRepos(
|
|
repos: OSSRepo[],
|
|
filters: {
|
|
types?: RepoType[];
|
|
categories?: string[];
|
|
languages?: string[];
|
|
useCases?: string[];
|
|
maturity?: Maturity[];
|
|
deployment?: DeploymentType[];
|
|
search?: string;
|
|
}
|
|
): OSSRepo[] {
|
|
return repos.filter(repo => {
|
|
if (filters.types?.length && !filters.types.includes(repo.type)) return false;
|
|
if (filters.categories?.length && !filters.categories.some(c => repo.categories.includes(c))) return false;
|
|
if (filters.languages?.length && !filters.languages.some(l => repo.languages.includes(l))) return false;
|
|
if (filters.useCases?.length && !filters.useCases.some(u => repo.useCases.includes(u))) return false;
|
|
if (filters.maturity?.length && !filters.maturity.includes(repo.maturity)) return false;
|
|
if (filters.deployment?.length && !filters.deployment.some(d => repo.deployment.includes(d))) return false;
|
|
if (filters.search) {
|
|
const search = filters.search.toLowerCase();
|
|
return (
|
|
repo.name.toLowerCase().includes(search) ||
|
|
repo.description.toLowerCase().includes(search) ||
|
|
repo.slug.toLowerCase().includes(search)
|
|
);
|
|
}
|
|
return true;
|
|
});
|
|
}
|