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"
} 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": []
} 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": []
} 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": []
} 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
}
}
} 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": []
} 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": []
} 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": ""
}
} 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": []
}