Content gateway

Same record. Different stack.

This site is the Astro front end. The other hosts are not booted yet. The gateway already rewrites a public record into the props, posts, or nodes those apps expect. Drafts and internal notes stay behind the allowlist.

  • Astro · this site
  • Next.js · gateway
  • React · gateway
  • Angular · gateway
  • Ember · gateway
  • Svelte · gateway
  • Vue · gateway
  • WordPress · gateway
  • Drupal · gateway

Live · jodriscoll.com

This site. Static HTML on Vercel, with almost no client JavaScript.

{
  "slug": "gamekal",
  "title": "GameKal",
  "summary": "A release calendar for PC, PlayStation, Xbox and Switch games. One Expo and React Native codebase ships the web app, iOS and Android, fed by a catalog scraped from nine storefronts, with 538 automated tests.",
  "featured": true,
  "technologies": [
    "Expo",
    "React Native",
    "React",
    "TypeScript",
    "Supabase",
    "Vercel",
    "Swift"
  ],
  "links": {
    "demo": "https://www.gamekal.com/"
  },
  "images": [],
  "href": "/things-built/gamekal"
}

Open this response

Gateway ready · next.jodriscoll.com

App Router shell, not booted yet. The gateway already returns its props.

{
  "slug": "gamekal",
  "title": "GameKal",
  "description": "A release calendar for PC, PlayStation, Xbox and Switch games. One Expo and React Native codebase ships the web app, iOS and Android, fed by a catalog scraped from nine storefronts, with 538 automated tests.",
  "featured": true,
  "stack": [
    "Expo",
    "React Native",
    "React",
    "TypeScript",
    "Supabase",
    "Vercel",
    "Swift"
  ],
  "href": "/things-built/gamekal",
  "links": {
    "demo": "https://www.gamekal.com/"
  },
  "images": []
}

Open this response

Gateway ready · react.jodriscoll.com

A client React shell. Not booted. The gateway returns component props.

{
  "id": "gamekal",
  "title": "GameKal",
  "summary": "A release calendar for PC, PlayStation, Xbox and Switch games. One Expo and React Native codebase ships the web app, iOS and Android, fed by a catalog scraped from nine storefronts, with 538 automated tests.",
  "featured": true,
  "tags": [
    "Expo",
    "React Native",
    "React",
    "TypeScript",
    "Supabase",
    "Vercel",
    "Swift"
  ],
  "demoUrl": "https://www.gamekal.com/",
  "sourceUrl": null,
  "images": []
}

Open this response

Gateway ready · angular.jodriscoll.com

The shape the previous Angular portfolio used. The host is not booted yet.

{
  "slug": "gamekal",
  "Title": "GameKal",
  "Description": "A release calendar for PC, PlayStation, Xbox and Switch games. One Expo and React Native codebase ships the web app, iOS and Android, fed by a catalog scraped from nine storefronts, with 538 automated tests.",
  "Technologies": [
    "Expo",
    "React Native",
    "React",
    "TypeScript",
    "Supabase",
    "Vercel",
    "Swift"
  ],
  "demoLink": "https://www.gamekal.com/",
  "githubLink": null,
  "featured": true,
  "Images": []
}

Open this response

Gateway ready · ember.jodriscoll.com

Ember Data JSON:API. Not booted. The gateway returns a resource object.

{
  "data": {
    "id": "gamekal",
    "type": "project",
    "attributes": {
      "title": "GameKal",
      "summary": "A release calendar for PC, PlayStation, Xbox and Switch games. One Expo and React Native codebase ships the web app, iOS and Android, fed by a catalog scraped from nine storefronts, with 538 automated tests.",
      "featured": true,
      "technologies": [
        "Expo",
        "React Native",
        "React",
        "TypeScript",
        "Supabase",
        "Vercel",
        "Swift"
      ],
      "images": [],
      "demo-url": "https://www.gamekal.com/",
      "source-url": null
    }
  }
}

Open this response

Gateway ready · svelte.jodriscoll.com

Svelte props. Not booted. Same record, different keys.

{
  "slug": "gamekal",
  "title": "GameKal",
  "summary": "A release calendar for PC, PlayStation, Xbox and Switch games. One Expo and React Native codebase ships the web app, iOS and Android, fed by a catalog scraped from nine storefronts, with 538 automated tests.",
  "featured": true,
  "technologies": [
    "Expo",
    "React Native",
    "React",
    "TypeScript",
    "Supabase",
    "Vercel",
    "Swift"
  ],
  "links": {
    "demo": "https://www.gamekal.com/"
  },
  "images": []
}

Open this response

Gateway ready · vue.jodriscoll.com

Vue props. Not booted. Same record, different keys.

{
  "name": "gamekal",
  "title": "GameKal",
  "blurb": "A release calendar for PC, PlayStation, Xbox and Switch games. One Expo and React Native codebase ships the web app, iOS and Android, fed by a catalog scraped from nine storefronts, with 538 automated tests.",
  "featured": true,
  "tech": [
    "Expo",
    "React Native",
    "React",
    "TypeScript",
    "Supabase",
    "Vercel",
    "Swift"
  ],
  "urls": {
    "demo": "https://www.gamekal.com/"
  },
  "images": []
}

Open this response

Gateway ready · wordpress.jodriscoll.com

A post-shaped record a theme can read. The WordPress app is not booted yet.

{
  "post_type": "portfolio",
  "post_status": "publish",
  "post_name": "gamekal",
  "post_title": "GameKal",
  "post_excerpt": "A release calendar for PC, PlayStation, Xbox and Switch games. One Expo and React Native codebase ships the web app, iOS and Android, fed by a catalog scraped from nine storefronts, with 538 automated tests.",
  "meta": {
    "featured": true,
    "technologies": [
      "Expo",
      "React Native",
      "React",
      "TypeScript",
      "Supabase",
      "Vercel",
      "Swift"
    ],
    "images": [],
    "demo_url": "https://www.gamekal.com/",
    "source_url": ""
  }
}

Open this response

Gateway ready · drupal.jodriscoll.com

A node-shaped record. The Drupal app is not booted yet.

{
  "type": [
    {
      "target_id": "portfolio"
    }
  ],
  "status": [
    {
      "value": true
    }
  ],
  "title": [
    {
      "value": "GameKal"
    }
  ],
  "body": [
    {
      "value": "A release calendar for PC, PlayStation, Xbox and Switch games. One Expo and React Native codebase ships the web app, iOS and Android, fed by a catalog scraped from nine storefronts, with 538 automated tests.",
      "format": "plain_text"
    }
  ],
  "field_slug": [
    {
      "value": "gamekal"
    }
  ],
  "field_featured": [
    {
      "value": true
    }
  ],
  "field_technologies": [
    {
      "value": "Expo"
    },
    {
      "value": "React Native"
    },
    {
      "value": "React"
    },
    {
      "value": "TypeScript"
    },
    {
      "value": "Supabase"
    },
    {
      "value": "Vercel"
    },
    {
      "value": "Swift"
    }
  ],
  "field_images": [],
  "field_demo": [
    {
      "uri": "https://www.gamekal.com/"
    }
  ],
  "field_source": []
}

Open this response

I'm listening if you're talking

A bug, a new build, a data question, a site that needs to be faster or a full rebuild. Tell me what's going on.

Let's see how to collaborate.