Pigeon is heavily focused on GraphQL based applications and for usage on the backend. Pigeon is built to make fragment & query composition easier, validating incoming data and transforming that data into a minimal shape that can be used by the application UI, shifting the complexity of data transformation to the server.
Pigeon is based on previous work I have done to make building composable (headless/JAMStack) solutions easier. Pigeon is a more focused and refined version of that work, with a focus on GraphQL based applications.This version utilises the zod validation library to validate incoming data and allows you to transform that data into what your UI needs. Meaning, if you change your endpoint or the shape of the data, you only need to update your Pigeon configuration. You’ll also have confidence that the data you are working with is valid instead of faking it with TypeScript casting.
{"docsConfig":{"$schema":"https://mintlify.com/docs.json","theme":"mint","name":"adro.codes","colors":{"primary":"#f59e0b","light":"#d97706","dark":"#f59e0b"},"favicon":"/favicon.svg","logo":{"light":"https://mintcdn.com/adrocodes/4BK3kYLBrRFwX4OU/logo/light.svg?fit=max\u0026auto=format\u0026n=4BK3kYLBrRFwX4OU\u0026q=85\u0026s=3e7006b0daf93ea6749653421337e270","dark":"https://mintcdn.com/adrocodes/4BK3kYLBrRFwX4OU/logo/dark.svg?fit=max\u0026auto=format\u0026n=4BK3kYLBrRFwX4OU\u0026q=85\u0026s=58c210ae98d1bde91fca23cf733851f2"},"footer":{"socials":{"github":"https://github.com/adrocodes"}},"integrations":{"ga4":{"measurementId":"G-9CF5MG7673"}},"navigation":{"global":{"anchors":[{"anchor":"Papers","href":"https://papers.adro.codes","icon":{"name":"scroll","style":"duotone"}},{"anchor":"Github","href":"https://github.com/adrocodes","icon":{"name":"github","style":"duotone"}}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"adrocodes","hasAudioNarration":false,"actualSubdomain":"adrocodes","customDomains":["adro.codes"],"gitSource":{"type":"github","owner":"adrocodes","repo":"mintlify-docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"entitlements":{},"buildId":"6ae91dc15d9fe27156017997:success","clientVersion":"0.0.4094","searchFilterCounts":[{"language":"default","tag":"Home","count":21},{"language":"default","tag":"Tiny tips/tricks","count":20},{"language":"default","tag":"The Knowledge Vault","count":14},{"language":"default","tag":"The Vault","count":14},{"language":"default","tag":"Pigeon","count":12},{"language":"default","tag":"Software Design","count":6},{"language":"default","tag":"C#","count":5},{"language":"default","tag":"JavaScript","count":5},{"language":"default","tag":"Azure","count":2},{"language":"default","tag":"Godot","count":1}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"pigeon","slug":"/pigeon","pageMetadata":{"title":"Overview","description":"Build Composable solutions with confidence.","href":"/pigeon/index"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Build Composable solutions with confidence.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,li:`li`,p:`p`,ul:`ul`,..._provideComponents(),...props.components},{Heading}=_components;if(!Heading)_missingMdxReference(`Heading`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Github: `,_jsx(_components.a,{href:`https://github.com/adrocodes/pigeon`,children:`https://github.com/adrocodes/pigeon`})]}),`\n`,_jsxs(_components.li,{children:[`npm: `,_jsx(_components.a,{href:`https://www.npmjs.com/package/@adrocodes/pigeon`,children:`https://www.npmjs.com/package/@adrocodes/pigeon`})]}),`\n`,_jsxs(_components.li,{children:[`Demo: `,_jsx(_components.a,{href:`https://pigeon-demo.vercel.app/`,children:`https://pigeon-demo.vercel.app/`})]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`what-is-pigeon`,children:`What is Pigeon?`}),`\n`,_jsx(_components.p,{children:`Pigeon is heavily focused on GraphQL based applications and for usage on the backend. Pigeon is built to make fragment \u0026 query composition easier, validating incoming data and transforming that data into a minimal shape that can be used by the application UI, shifting the complexity of data transformation to the server.`}),`\n`,_jsx(Heading,{level:`2`,id:`why-pigeon`,children:`Why Pigeon?`}),`\n`,_jsx(_components.p,{children:`Pigeon is based on previous work I have done to make building composable (headless/JAMStack) solutions easier. Pigeon is a more focused and refined version of that work, with a focus on GraphQL based applications.`}),`\n`,_jsxs(_components.p,{children:[`This version utilises the `,_jsx(_components.a,{href:`https://www.npmjs.com/package/zod`,children:`zod`}),` validation library to validate incoming data and allows you to transform that data into what your UI needs. Meaning, if you change your endpoint or the shape of the data, you only need to update your Pigeon configuration. You’ll also have confidence that the data you are working with is valid instead of faking it with TypeScript casting.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Overview","description":"Build Composable solutions with confidence.","href":"/pigeon/index"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"What is Pigeon?","slug":"what-is-pigeon","depth":2,"children":[]},{"title":"Why Pigeon?","slug":"why-pigeon","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"adrocodes","siteName":"adro.codes","title":"Overview - adro.codes","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-01-06T23:51:33.464Z","originalFileLocation":"pigeon/index.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Build Composable solutions with confidence.\">\u003cmeta data-mint-head name=\"application-name\" content=\"adro.codes\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/adrocodes/KAEc8dn9Bt9KuuEF/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/adrocodes/KAEc8dn9Bt9KuuEF/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/adrocodes/KAEc8dn9Bt9KuuEF/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/adrocodes/KAEc8dn9Bt9KuuEF/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/adrocodes/KAEc8dn9Bt9KuuEF/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/adrocodes/KAEc8dn9Bt9KuuEF/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/adrocodes/KAEc8dn9Bt9KuuEF/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/adrocodes/KAEc8dn9Bt9KuuEF/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/adrocodes/KAEc8dn9Bt9KuuEF/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Overview - adro.codes\">\u003cmeta data-mint-head property=\"og:description\" content=\"Build Composable solutions with confidence.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"adro.codes\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://adro.codes/pigeon\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://adrocodes.mintlify.site/_mintlify/api/og/v2?division=Pigeon\u0026amp;title=Overview\u0026amp;description=Build+Composable+solutions+with+confidence.\u0026amp;theme=5a98e02ff7d6a3cbb90dbd12\u0026amp;signature=53fcb8d4b41e1cab3f60df7c4b6c4f3f75f19c5f5294658ed0d598f22b93c23a\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Overview - adro.codes\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Build Composable solutions with confidence.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://adrocodes.mintlify.site/_mintlify/api/og/v2?division=Pigeon\u0026amp;title=Overview\u0026amp;description=Build+Composable+solutions+with+confidence.\u0026amp;theme=5a98e02ff7d6a3cbb90dbd12\u0026amp;signature=53fcb8d4b41e1cab3f60df7c4b6c4f3f75f19c5f5294658ed0d598f22b93c23a\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/adrocodes/KAEc8dn9Bt9KuuEF/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"adro.codes\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#f59e0b\">\u003clink data-mint-head rel=\"canonical\" href=\"https://adro.codes/pigeon\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/pigeon.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://adro.codes/#organization\",\"name\":\"adro.codes\",\"url\":\"https://adro.codes\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/adrocodes/4BK3kYLBrRFwX4OU/logo/light.svg?fit=max\u0026auto=format\u0026n=4BK3kYLBrRFwX4OU\u0026q=85\u0026s=3e7006b0daf93ea6749653421337e270\"}},{\"@type\":\"WebSite\",\"@id\":\"https://adro.codes#website\",\"name\":\"adro.codes\",\"url\":\"https://adro.codes\",\"publisher\":{\"@id\":\"https://adro.codes/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://adro.codes/pigeon#webpage\",\"url\":\"https://adro.codes/pigeon\",\"name\":\"Overview\",\"description\":\"Build Composable solutions with confidence.\",\"dateModified\":\"2026-01-06T23:51:33.464Z\",\"isPartOf\":{\"@id\":\"https://adro.codes#website\"},\"breadcrumb\":{\"@id\":\"https://adro.codes/pigeon#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://adro.codes/pigeon#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Pigeon\",\"item\":\"https://adro.codes/pigeon/index\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Overview\",\"item\":\"https://adro.codes/pigeon\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://adro.codes/pigeon#article\",\"headline\":\"Overview\",\"name\":\"Overview\",\"description\":\"Build Composable solutions with confidence.\",\"url\":\"https://adro.codes/pigeon\",\"mainEntityOfPage\":{\"@id\":\"https://adro.codes/pigeon#webpage\"},\"dateModified\":\"2026-01-06T23:51:33.464Z\",\"publisher\":{\"@id\":\"https://adro.codes/#organization\"},\"isPartOf\":{\"@id\":\"https://adro.codes#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"adro.codes\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"adro.codes","nav":{"global":{"anchors":[{"anchor":"Papers","href":"https://papers.adro.codes","icon":{"name":"scroll","style":"duotone"}},{"anchor":"Github","href":"https://github.com/adrocodes","icon":{"name":"github","style":"duotone"}}]},"tabs":[{"tab":"Home","pages":[{"title":"Home","href":"/welcome"}]},{"tab":"The Knowledge Vault","pages":[{"title":"The Knowledge Vault","href":"/vault"}]},{"tab":"Software Design","pages":[{"title":"Software Design","href":"/software-design"}]},{"tab":"Pigeon","groups":[{"group":"Pigeon","pages":[{"title":"Overview","href":"/pigeon"},{"title":"Installation","description":null,"href":"/pigeon/installation"},{"title":"Defining Fragments","href":"/pigeon/defining-fragments"},{"title":"Defining Queries","href":"/pigeon/defining-queries"},{"title":"Common Utilities","href":"/pigeon/common-utilities"},{"title":"FAQ","href":"/pigeon/faq"}]}]}]},"basePath":"","title":"Overview - adro.codes","buildId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","deploymentId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","dynamics":[],"chunks":[]}