mirror of
https://github.com/github/awesome-copilot.git
synced 2026-02-20 02:15:12 +00:00
feat(website): add samples/cookbook page with recipe browser
Integrates the cookbook/ folder into the website's Samples page: Data Structure: - Add cookbook/cookbook.yml manifest defining cookbooks and recipes - Add .schemas/cookbook.schema.json for validation - Add COOKBOOK_DIR constant to eng/constants.mjs Build Integration: - Add generateSamplesData() to generate samples.json from cookbook.yml - Include recipe variants with file paths for each language - Add samples count to manifest.json Website UI: - Create samples.ts with FuzzySearch, language/tag filtering - Replace placeholder samples.astro with functional recipe browser - Recipe cards with language indicators and action buttons - Language tabs for switching between implementations - View Recipe/View Example buttons open modal - GitHub link for each recipe Features: - Search recipes by name/description - Filter by programming language (Node.js, Python, .NET, Go) - Filter by tags (multi-select with Choices.js) - 5 recipes across 4 languages = 20 recipe variants
This commit is contained in:
205
website/public/data/samples.json
Normal file
205
website/public/data/samples.json
Normal file
@@ -0,0 +1,205 @@
|
||||
{
|
||||
"cookbooks": [
|
||||
{
|
||||
"id": "copilot-sdk",
|
||||
"name": "GitHub Copilot SDK",
|
||||
"description": "Ready-to-use recipes for building with the GitHub Copilot SDK across multiple languages",
|
||||
"path": "cookbook/copilot-sdk",
|
||||
"featured": true,
|
||||
"languages": [
|
||||
{
|
||||
"id": "nodejs",
|
||||
"name": "Node.js / TypeScript",
|
||||
"icon": "🟢",
|
||||
"extension": ".ts"
|
||||
},
|
||||
{
|
||||
"id": "python",
|
||||
"name": "Python",
|
||||
"icon": "🐍",
|
||||
"extension": ".py"
|
||||
},
|
||||
{
|
||||
"id": "dotnet",
|
||||
"name": ".NET (C#)",
|
||||
"icon": "🟣",
|
||||
"extension": ".cs"
|
||||
},
|
||||
{
|
||||
"id": "go",
|
||||
"name": "Go",
|
||||
"icon": "🔵",
|
||||
"extension": ".go"
|
||||
}
|
||||
],
|
||||
"recipes": [
|
||||
{
|
||||
"id": "error-handling",
|
||||
"name": "Error Handling",
|
||||
"description": "Handle errors gracefully including connection failures, timeouts, and cleanup",
|
||||
"tags": [
|
||||
"errors",
|
||||
"basics",
|
||||
"reliability"
|
||||
],
|
||||
"variants": {
|
||||
"nodejs": {
|
||||
"doc": "cookbook/copilot-sdk/nodejs/error-handling.md",
|
||||
"example": "cookbook/copilot-sdk/nodejs/recipe/error-handling.ts"
|
||||
},
|
||||
"python": {
|
||||
"doc": "cookbook/copilot-sdk/python/error-handling.md",
|
||||
"example": null
|
||||
},
|
||||
"dotnet": {
|
||||
"doc": "cookbook/copilot-sdk/dotnet/error-handling.md",
|
||||
"example": "cookbook/copilot-sdk/dotnet/recipe/error-handling.cs"
|
||||
},
|
||||
"go": {
|
||||
"doc": "cookbook/copilot-sdk/go/error-handling.md",
|
||||
"example": "cookbook/copilot-sdk/go/recipe/error-handling.go"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "multiple-sessions",
|
||||
"name": "Multiple Sessions",
|
||||
"description": "Manage multiple independent conversations simultaneously",
|
||||
"tags": [
|
||||
"sessions",
|
||||
"advanced",
|
||||
"concurrency"
|
||||
],
|
||||
"variants": {
|
||||
"nodejs": {
|
||||
"doc": "cookbook/copilot-sdk/nodejs/multiple-sessions.md",
|
||||
"example": "cookbook/copilot-sdk/nodejs/recipe/multiple-sessions.ts"
|
||||
},
|
||||
"python": {
|
||||
"doc": "cookbook/copilot-sdk/python/multiple-sessions.md",
|
||||
"example": null
|
||||
},
|
||||
"dotnet": {
|
||||
"doc": "cookbook/copilot-sdk/dotnet/multiple-sessions.md",
|
||||
"example": "cookbook/copilot-sdk/dotnet/recipe/multiple-sessions.cs"
|
||||
},
|
||||
"go": {
|
||||
"doc": "cookbook/copilot-sdk/go/multiple-sessions.md",
|
||||
"example": "cookbook/copilot-sdk/go/recipe/multiple-sessions.go"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "managing-local-files",
|
||||
"name": "Managing Local Files",
|
||||
"description": "Organize files by metadata using AI-powered grouping strategies",
|
||||
"tags": [
|
||||
"files",
|
||||
"organization",
|
||||
"ai-powered"
|
||||
],
|
||||
"variants": {
|
||||
"nodejs": {
|
||||
"doc": "cookbook/copilot-sdk/nodejs/managing-local-files.md",
|
||||
"example": "cookbook/copilot-sdk/nodejs/recipe/managing-local-files.ts"
|
||||
},
|
||||
"python": {
|
||||
"doc": "cookbook/copilot-sdk/python/managing-local-files.md",
|
||||
"example": null
|
||||
},
|
||||
"dotnet": {
|
||||
"doc": "cookbook/copilot-sdk/dotnet/managing-local-files.md",
|
||||
"example": "cookbook/copilot-sdk/dotnet/recipe/managing-local-files.cs"
|
||||
},
|
||||
"go": {
|
||||
"doc": "cookbook/copilot-sdk/go/managing-local-files.md",
|
||||
"example": "cookbook/copilot-sdk/go/recipe/managing-local-files.go"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "pr-visualization",
|
||||
"name": "PR Visualization",
|
||||
"description": "Generate interactive PR age charts using GitHub MCP Server",
|
||||
"tags": [
|
||||
"github",
|
||||
"visualization",
|
||||
"mcp"
|
||||
],
|
||||
"variants": {
|
||||
"nodejs": {
|
||||
"doc": "cookbook/copilot-sdk/nodejs/pr-visualization.md",
|
||||
"example": "cookbook/copilot-sdk/nodejs/recipe/pr-visualization.ts"
|
||||
},
|
||||
"python": {
|
||||
"doc": "cookbook/copilot-sdk/python/pr-visualization.md",
|
||||
"example": null
|
||||
},
|
||||
"dotnet": {
|
||||
"doc": "cookbook/copilot-sdk/dotnet/pr-visualization.md",
|
||||
"example": "cookbook/copilot-sdk/dotnet/recipe/pr-visualization.cs"
|
||||
},
|
||||
"go": {
|
||||
"doc": "cookbook/copilot-sdk/go/pr-visualization.md",
|
||||
"example": "cookbook/copilot-sdk/go/recipe/pr-visualization.go"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "persisting-sessions",
|
||||
"name": "Persisting Sessions",
|
||||
"description": "Save and resume sessions across restarts",
|
||||
"tags": [
|
||||
"sessions",
|
||||
"persistence",
|
||||
"state-management"
|
||||
],
|
||||
"variants": {
|
||||
"nodejs": {
|
||||
"doc": "cookbook/copilot-sdk/nodejs/persisting-sessions.md",
|
||||
"example": "cookbook/copilot-sdk/nodejs/recipe/persisting-sessions.ts"
|
||||
},
|
||||
"python": {
|
||||
"doc": "cookbook/copilot-sdk/python/persisting-sessions.md",
|
||||
"example": null
|
||||
},
|
||||
"dotnet": {
|
||||
"doc": "cookbook/copilot-sdk/dotnet/persisting-sessions.md",
|
||||
"example": "cookbook/copilot-sdk/dotnet/recipe/persisting-sessions.cs"
|
||||
},
|
||||
"go": {
|
||||
"doc": "cookbook/copilot-sdk/go/persisting-sessions.md",
|
||||
"example": "cookbook/copilot-sdk/go/recipe/persisting-sessions.go"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"totalRecipes": 5,
|
||||
"totalCookbooks": 1,
|
||||
"filters": {
|
||||
"languages": [
|
||||
"dotnet",
|
||||
"go",
|
||||
"nodejs",
|
||||
"python"
|
||||
],
|
||||
"tags": [
|
||||
"advanced",
|
||||
"ai-powered",
|
||||
"basics",
|
||||
"concurrency",
|
||||
"errors",
|
||||
"files",
|
||||
"github",
|
||||
"mcp",
|
||||
"organization",
|
||||
"persistence",
|
||||
"reliability",
|
||||
"sessions",
|
||||
"state-management",
|
||||
"visualization"
|
||||
]
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user