Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions .github/workflows/deploy-pages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,3 +47,40 @@ jobs:
steps:
- id: deployment
uses: actions/deploy-pages@v4

# Notify IndexNow (Bing, Yandex, Seznam, Naver, ...) of every URL in the
# live sitemap after a successful production deploy. Best-effort: a failure
# here never fails the deploy.
indexnow:
runs-on: ubuntu-24.04
needs: deploy
if: github.ref == 'refs/heads/main'
continue-on-error: true
permissions:
contents: read

steps:
- name: Submit sitemap URLs to IndexNow
env:
INDEXNOW_HOST: mockforge.dev
INDEXNOW_KEY: b7e4c2a9f1d84630a5c7e2b9d0f3a614
run: |
set -euo pipefail
curl -fsSL --retry 3 --retry-delay 10 "https://${INDEXNOW_HOST}/sitemap.xml" -o sitemap.xml
grep -o '<loc>[^<]*</loc>' sitemap.xml | sed -e 's#<loc>##' -e 's#</loc>##' > urls.txt
echo "Found $(wc -l < urls.txt) URLs in sitemap"
test -s urls.txt
jq -n \
--arg host "$INDEXNOW_HOST" \
--arg key "$INDEXNOW_KEY" \
--arg keyLocation "https://${INDEXNOW_HOST}/${INDEXNOW_KEY}.txt" \
--rawfile urls urls.txt \
'{host: $host, key: $key, keyLocation: $keyLocation, urlList: ($urls | split("\n") | map(select(length > 0)))}' \
> payload.json
status=$(curl -sS -o response.txt -w '%{http_code}' \
-X POST "https://api.indexnow.org/indexnow" \
-H 'Content-Type: application/json; charset=utf-8' \
--data @payload.json)
echo "IndexNow responded HTTP ${status}"
cat response.txt || true
case "$status" in 200|202) ;; *) exit 1 ;; esac
7 changes: 7 additions & 0 deletions 404.html
Original file line number Diff line number Diff line change
Expand Up @@ -71,8 +71,15 @@
{
"@context": "https://schema.org",
"@type": "Organization",
"@id": "https://mockforge.dev/#organization",
"name": "MockForge",
"url": "https://mockforge.dev/",
"parentOrganization": {
"@type": "Organization",
"@id": "https://saasierinc.com/#organization",
"name": "SaaSier Inc",
"url": "https://saasierinc.com"
},
"logo": "https://mockforge.dev/public/logo-transparent.png",
"description": "Open-source API mocking framework for REST, gRPC, GraphQL, WebSockets, and SMTP.",
"sameAs": [
Expand Down
7 changes: 7 additions & 0 deletions compare-mockserver.html
Original file line number Diff line number Diff line change
Expand Up @@ -89,8 +89,15 @@
{
"@context": "https://schema.org",
"@type": "Organization",
"@id": "https://mockforge.dev/#organization",
"name": "MockForge",
"url": "https://mockforge.dev/",
"parentOrganization": {
"@type": "Organization",
"@id": "https://saasierinc.com/#organization",
"name": "SaaSier Inc",
"url": "https://saasierinc.com"
},
"logo": "https://mockforge.dev/public/logo-transparent.png",
"description": "Open-source API mocking framework for REST, gRPC, GraphQL, WebSockets, and SMTP.",
"sameAs": [
Expand Down
7 changes: 7 additions & 0 deletions comparisons.html
Original file line number Diff line number Diff line change
Expand Up @@ -64,8 +64,15 @@
{
"@context": "https://schema.org",
"@type": "Organization",
"@id": "https://mockforge.dev/#organization",
"name": "MockForge",
"url": "https://mockforge.dev/",
"parentOrganization": {
"@type": "Organization",
"@id": "https://saasierinc.com/#organization",
"name": "SaaSier Inc",
"url": "https://saasierinc.com"
},
"logo": "https://mockforge.dev/public/logo-transparent.png",
"description": "Open-source API mocking framework for REST, gRPC, GraphQL, WebSockets, and SMTP.",
"sameAs": [
Expand Down
7 changes: 7 additions & 0 deletions contact.html
Original file line number Diff line number Diff line change
Expand Up @@ -77,8 +77,15 @@
{
"@context": "https://schema.org",
"@type": "Organization",
"@id": "https://mockforge.dev/#organization",
"name": "MockForge",
"url": "https://mockforge.dev/",
"parentOrganization": {
"@type": "Organization",
"@id": "https://saasierinc.com/#organization",
"name": "SaaSier Inc",
"url": "https://saasierinc.com"
},
"logo": "https://mockforge.dev/public/logo-transparent.png",
"description": "Open-source API mocking framework for REST, gRPC, GraphQL, WebSockets, and SMTP.",
"sameAs": [
Expand Down
7 changes: 7 additions & 0 deletions engineering-notes.html
Original file line number Diff line number Diff line change
Expand Up @@ -70,8 +70,15 @@
{
"@context": "https://schema.org",
"@type": "Organization",
"@id": "https://mockforge.dev/#organization",
"name": "MockForge",
"url": "https://mockforge.dev/",
"parentOrganization": {
"@type": "Organization",
"@id": "https://saasierinc.com/#organization",
"name": "SaaSier Inc",
"url": "https://saasierinc.com"
},
"logo": "https://mockforge.dev/public/logo-transparent.png",
"description": "Open-source API mocking framework for REST, gRPC, GraphQL, WebSockets, and SMTP.",
"sameAs": [
Expand Down
7 changes: 7 additions & 0 deletions faq.html
Original file line number Diff line number Diff line change
Expand Up @@ -112,8 +112,15 @@
{
"@context": "https://schema.org",
"@type": "Organization",
"@id": "https://mockforge.dev/#organization",
"name": "MockForge",
"url": "https://mockforge.dev/",
"parentOrganization": {
"@type": "Organization",
"@id": "https://saasierinc.com/#organization",
"name": "SaaSier Inc",
"url": "https://saasierinc.com"
},
"logo": "https://mockforge.dev/public/logo-transparent.png",
"description": "Open-source API mocking framework for REST, gRPC, GraphQL, WebSockets, and SMTP.",
"sameAs": [
Expand Down
7 changes: 4 additions & 3 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,10 @@
"@graph": [
{
"@type": "Organization",
"@id": "https://mockforge.dev/#org",
"@id": "https://mockforge.dev/#organization",
"name": "MockForge",
"url": "https://mockforge.dev/",
"parentOrganization": { "@type": "Organization", "@id": "https://saasierinc.com/#organization", "name": "SaaSier Inc", "url": "https://saasierinc.com" },
"logo": "https://mockforge.dev/public/logo-transparent.png",
"sameAs": ["https://github.com/SaaSy-Solutions/mockforge", "https://www.linkedin.com/company/mockforge"],
"contactPoint": [
Expand All @@ -55,13 +56,13 @@
},
{
"@type": "SoftwareApplication",
"@id": "https://mockforge.dev/#app",
"@id": "https://mockforge.dev/#software",
"name": "MockForge",
"description": "A comprehensive mocking framework for REST, gRPC, GraphQL, WebSocket, Kafka, MQTT and more. Generate realistic data, inject latency and failures, and deploy hosted mocks with a single command.",
"url": "https://mockforge.dev/",
"applicationCategory": "DeveloperApplication",
"operatingSystem": "Linux, macOS, Windows",
"publisher": { "@id": "https://mockforge.dev/#org" },
"publisher": { "@id": "https://mockforge.dev/#organization" },
"offers": [
{ "@type": "Offer", "name": "Free", "price": "0", "priceCurrency": "USD", "url": "https://mockforge.dev/pricing.html" },
{ "@type": "Offer", "name": "Pro", "price": "29", "priceCurrency": "USD", "url": "https://mockforge.dev/pricing.html" },
Expand Down
2 changes: 2 additions & 0 deletions note-announcing-v1.html
Original file line number Diff line number Diff line change
Expand Up @@ -78,11 +78,13 @@
},
"author": {
"@type": "Organization",
"@id": "https://mockforge.dev/#organization",
"name": "MockForge",
"url": "https://mockforge.dev/"
},
"publisher": {
"@type": "Organization",
"@id": "https://mockforge.dev/#organization",
"name": "MockForge",
"logo": {
"@type": "ImageObject",
Expand Down
2 changes: 2 additions & 0 deletions note-api-drift-detection-and-contract-alerting.html
Original file line number Diff line number Diff line change
Expand Up @@ -78,11 +78,13 @@
},
"author": {
"@type": "Organization",
"@id": "https://mockforge.dev/#organization",
"name": "MockForge",
"url": "https://mockforge.dev/"
},
"publisher": {
"@type": "Organization",
"@id": "https://mockforge.dev/#organization",
"name": "MockForge",
"logo": {
"@type": "ImageObject",
Expand Down
2 changes: 2 additions & 0 deletions note-client-generation-tradeoffs.html
Original file line number Diff line number Diff line change
Expand Up @@ -78,11 +78,13 @@
},
"author": {
"@type": "Organization",
"@id": "https://mockforge.dev/#organization",
"name": "MockForge",
"url": "https://mockforge.dev/"
},
"publisher": {
"@type": "Organization",
"@id": "https://mockforge.dev/#organization",
"name": "MockForge",
"logo": {
"@type": "ImageObject",
Expand Down
2 changes: 2 additions & 0 deletions note-cloud-launch.html
Original file line number Diff line number Diff line change
Expand Up @@ -78,11 +78,13 @@
},
"author": {
"@type": "Organization",
"@id": "https://mockforge.dev/#organization",
"name": "MockForge",
"url": "https://mockforge.dev/"
},
"publisher": {
"@type": "Organization",
"@id": "https://mockforge.dev/#organization",
"name": "MockForge",
"logo": {
"@type": "ImageObject",
Expand Down
2 changes: 2 additions & 0 deletions note-conformance-maturity.html
Original file line number Diff line number Diff line change
Expand Up @@ -78,11 +78,13 @@
},
"author": {
"@type": "Organization",
"@id": "https://mockforge.dev/#organization",
"name": "MockForge",
"url": "https://mockforge.dev/"
},
"publisher": {
"@type": "Organization",
"@id": "https://mockforge.dev/#organization",
"name": "MockForge",
"logo": {
"@type": "ImageObject",
Expand Down
2 changes: 2 additions & 0 deletions note-conformance-testing.html
Original file line number Diff line number Diff line change
Expand Up @@ -78,11 +78,13 @@
},
"author": {
"@type": "Organization",
"@id": "https://mockforge.dev/#organization",
"name": "MockForge",
"url": "https://mockforge.dev/"
},
"publisher": {
"@type": "Organization",
"@id": "https://mockforge.dev/#organization",
"name": "MockForge",
"logo": {
"@type": "ImageObject",
Expand Down
2 changes: 2 additions & 0 deletions note-cost-cap-design.html
Original file line number Diff line number Diff line change
Expand Up @@ -78,11 +78,13 @@
},
"author": {
"@type": "Organization",
"@id": "https://mockforge.dev/#organization",
"name": "MockForge",
"url": "https://mockforge.dev/"
},
"publisher": {
"@type": "Organization",
"@id": "https://mockforge.dev/#organization",
"name": "MockForge",
"logo": {
"@type": "ImageObject",
Expand Down
2 changes: 2 additions & 0 deletions note-fault-injection-patterns.html
Original file line number Diff line number Diff line change
Expand Up @@ -78,11 +78,13 @@
},
"author": {
"@type": "Organization",
"@id": "https://mockforge.dev/#organization",
"name": "MockForge",
"url": "https://mockforge.dev/"
},
"publisher": {
"@type": "Organization",
"@id": "https://mockforge.dev/#organization",
"name": "MockForge",
"logo": {
"@type": "ImageObject",
Expand Down
2 changes: 2 additions & 0 deletions note-grpc-dynamic-routing-release.html
Original file line number Diff line number Diff line change
Expand Up @@ -78,11 +78,13 @@
},
"author": {
"@type": "Organization",
"@id": "https://mockforge.dev/#organization",
"name": "MockForge",
"url": "https://mockforge.dev/"
},
"publisher": {
"@type": "Organization",
"@id": "https://mockforge.dev/#organization",
"name": "MockForge",
"logo": {
"@type": "ImageObject",
Expand Down
2 changes: 2 additions & 0 deletions note-grpc-mocking-in-ci.html
Original file line number Diff line number Diff line change
Expand Up @@ -78,11 +78,13 @@
},
"author": {
"@type": "Organization",
"@id": "https://mockforge.dev/#organization",
"name": "MockForge",
"url": "https://mockforge.dev/"
},
"publisher": {
"@type": "Organization",
"@id": "https://mockforge.dev/#organization",
"name": "MockForge",
"logo": {
"@type": "ImageObject",
Expand Down
2 changes: 2 additions & 0 deletions note-migration-from-static-fixtures.html
Original file line number Diff line number Diff line change
Expand Up @@ -78,11 +78,13 @@
},
"author": {
"@type": "Organization",
"@id": "https://mockforge.dev/#organization",
"name": "MockForge",
"url": "https://mockforge.dev/"
},
"publisher": {
"@type": "Organization",
"@id": "https://mockforge.dev/#organization",
"name": "MockForge",
"logo": {
"@type": "ImageObject",
Expand Down
2 changes: 2 additions & 0 deletions note-mocking-kafka-without-broker.html
Original file line number Diff line number Diff line change
Expand Up @@ -78,11 +78,13 @@
},
"author": {
"@type": "Organization",
"@id": "https://mockforge.dev/#organization",
"name": "MockForge",
"url": "https://mockforge.dev/"
},
"publisher": {
"@type": "Organization",
"@id": "https://mockforge.dev/#organization",
"name": "MockForge",
"logo": {
"@type": "ImageObject",
Expand Down
2 changes: 2 additions & 0 deletions note-multi-target-conformance-and-real-world-specs.html
Original file line number Diff line number Diff line change
Expand Up @@ -78,11 +78,13 @@
},
"author": {
"@type": "Organization",
"@id": "https://mockforge.dev/#organization",
"name": "MockForge",
"url": "https://mockforge.dev/"
},
"publisher": {
"@type": "Organization",
"@id": "https://mockforge.dev/#organization",
"name": "MockForge",
"logo": {
"@type": "ImageObject",
Expand Down
2 changes: 2 additions & 0 deletions note-our-saas-infrastructure.html
Original file line number Diff line number Diff line change
Expand Up @@ -78,11 +78,13 @@
},
"author": {
"@type": "Organization",
"@id": "https://mockforge.dev/#organization",
"name": "MockForge",
"url": "https://mockforge.dev/"
},
"publisher": {
"@type": "Organization",
"@id": "https://mockforge.dev/#organization",
"name": "MockForge",
"logo": {
"@type": "ImageObject",
Expand Down
2 changes: 2 additions & 0 deletions note-release-cadence-and-risk.html
Original file line number Diff line number Diff line change
Expand Up @@ -78,11 +78,13 @@
},
"author": {
"@type": "Organization",
"@id": "https://mockforge.dev/#organization",
"name": "MockForge",
"url": "https://mockforge.dev/"
},
"publisher": {
"@type": "Organization",
"@id": "https://mockforge.dev/#organization",
"name": "MockForge",
"logo": {
"@type": "ImageObject",
Expand Down
2 changes: 2 additions & 0 deletions note-reliability-update-march-2026.html
Original file line number Diff line number Diff line change
Expand Up @@ -78,11 +78,13 @@
},
"author": {
"@type": "Organization",
"@id": "https://mockforge.dev/#organization",
"name": "MockForge",
"url": "https://mockforge.dev/"
},
"publisher": {
"@type": "Organization",
"@id": "https://mockforge.dev/#organization",
"name": "MockForge",
"logo": {
"@type": "ImageObject",
Expand Down
Loading
Loading