External examples repository for the ExoQuery website. This repository contains additional code examples that can be dynamically loaded without redeploying the main site.
This repository serves as a CDN-friendly source of ExoQuery code examples. Examples are written in Markdown and automatically converted to JSON files that can be consumed by the main ExoQuery website.
exoquery-examples-web/
├── examples/ # Markdown example files
│ ├── advanced-subqueries.md
│ ├── window-functions.md
│ ├── json-operations.md
│ └── recursive-cte.md
├── src/ # TypeScript source
│ ├── types.ts # TypeScript interfaces
│ ├── parseExamples.ts # Markdown parser
│ └── build-examples.ts # Build script
├── dist/ # Generated files (created on build)
│ ├── manifest.json # Index of all examples
│ └── examples/ # JSON example files
│ ├── advanced-subqueries.json
│ └── ...
└── .github/
└── workflows/
└── build-and-deploy.yml # CI/CD pipeline
- Node.js >= 18.0.0
- npm or yarn
npm installnpm run buildThis will:
- Compile TypeScript files
- Parse all markdown files in
examples/ - Generate JSON files in
dist/examples/ - Create a manifest file at
dist/manifest.json
Watch TypeScript files for changes:
npm run devExamples are written in Markdown with the following structure:
## Example Title
**Icon:** 🎯
**Category:** CategoryName
**Description:** Short description
### Code
\`\`\`kotlin
// Your Kotlin code here
\`\`\`
### Output
\`\`\`sql
-- Expected SQL output
\`\`\`
### Schema
\`\`\`sql
-- Database schema (optional)
\`\`\`
### Try
- Suggestion 1
- Suggestion 2Once deployed, examples are available at:
- Manifest:
https://YOUR_USERNAME.github.io/exoquery-examples-web/manifest.json - Individual example:
https://YOUR_USERNAME.github.io/exoquery-examples-web/examples/SLUG.json
For better performance, use jsDelivr:
- Manifest:
https://cdn.jsdelivr.net/gh/YOUR_USERNAME/exoquery-examples-web@main/dist/manifest.json - Individual example:
https://cdn.jsdelivr.net/gh/YOUR_USERNAME/exoquery-examples-web@main/dist/examples/SLUG.json
The GitHub Actions workflow automatically:
- Runs on every push to
main - Installs dependencies
- Type checks the code
- Builds all examples
- Deploys to GitHub Pages
{
"version": "1.0.0",
"generatedAt": "2025-01-01T00:00:00.000Z",
"count": 4,
"examples": {
"advanced-subqueries": {
"title": "Advanced Subqueries",
"description": "Using subqueries for complex filtering",
"category": "Advanced",
"icon": "🔍",
"path": "examples/advanced-subqueries.json"
}
}
}{
"title": "Advanced Subqueries",
"slug": "advanced-subqueries",
"code": "...",
"output": "...",
"schema": "...",
"icon": "🔍",
"description": "Using subqueries for complex filtering",
"category": "Advanced",
"try": [
"Try using IN with a subquery",
"Try correlating the subquery"
]
}- Add a new Markdown file to
examples/ - Follow the example format above
- Run
npm run buildto test - Commit and push to trigger deployment
Licensed under the Apache License, Version 2.0. See LICENSE for details.
- ExoQuery Website - Main website
- ExoQuery - Core library
- Slugs: Filename becomes the slug (e.g.,
advanced-subqueries.md→advanced-subqueries) - Testing: Run
npm run buildlocally before pushing - CDN Cache: jsDelivr caches aggressively; force refresh with
?v=timestamp - Local Development: Use the main site's symlink feature for rapid iteration