REG121 Site Architecture: React, API, and Postgres
Every REG121 site is a real React application backed by a per-site REST API layer and an isolated Postgres schema provisioned at site creation.
Every site generated by REG121 is a real React application — not a static export. It communicates with a dedicated REST API layer that is scoped to that site, and all persistent data is stored in an isolated Postgres schema provisioned specifically for that site. This page describes how those components fit together.
A generated REG121 site consists of three distinct layers:
React Frontend
The client-side application is a React app. It is not a statically exported HTML site — it runs as a full React application and communicates with the per-site API layer at runtime.
Per-Site REST API Layer
Each site is provisioned with its own REST API layer. The React frontend communicates with this API to read and write data. The API layer is scoped exclusively to the site and its associated Postgres schema.
Isolated Postgres Schema
Persistent data for the site lives in a dedicated Postgres schema. This schema is provisioned automatically when the site is created. You do not configure or manage the database directly.
Schema provisioning happens at site creation. By the time you interact with a site, its Postgres schema and API layer are already in place.
Isolation between sites is enforced at the database level. Each site’s data lives in a separate Postgres schema. The application layer for one site has no structural path to the schema of another site — this is not a policy enforced only in application code.To be precise:
Each site maps to exactly one Postgres schema within the shared cluster.
The per-site API layer is bound to that site’s schema. Requests routed through one site’s API cannot reach another site’s schema.
Schema-level isolation means that even if application-layer logic were misconfigured, the database boundary would remain intact.
Row-level isolation applies within the schema to enforce access control within the site’s own data.
This structure means tenant isolation is a property of the storage architecture, not solely a runtime guarantee. You do not need to implement cross-tenant access controls in your own application code — the boundary is structural.
Each site is provisioned with its own authentication infrastructure. This covers end-user account creation, login, and session management. The auth system is tied to the site’s isolated Postgres schema — user records and session state are stored within the same schema boundary as the rest of the site’s data, not in a shared auth store.Because auth state is scoped to the site’s schema, authenticated sessions for one site have no relationship to sessions on another site, by construction.
The specific implementation details of the authentication layer — including token format, session duration defaults, and supported auth flows — are pending confirmation from the REG121 engineering team. The structural guarantees described above (per-site auth, schema-scoped storage) reflect the platform’s stated architecture, but you should verify specifics against current API documentation or direct engineering sources before building auth-sensitive integrations.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"REG121","colors":{"primary":"#4F46E5","light":"#EEF2FF","dark":"#1E1B4B"},"logo":{"light":"https://reg121.com/reg121_brand.png","dark":"https://reg121.com/reg121_brand.png"},"favicon":"https://mintcdn.com/reg121/wUsOD5-tRL9-EUAg/favicon.svg?fit=max\u0026auto=format\u0026n=wUsOD5-tRL9-EUAg\u0026q=85\u0026s=f54e6c1176bcbc1d212f619a24f6aa15","navbar":{"primary":{"type":"button","label":"Get Started","href":"https://studio.reg121.com"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"reg121","hasAudioNarration":false,"actualSubdomain":"reg121","customDomains":["docs.reg121.com"],"gitSource":{"type":"github","owner":"mintlify-community","repo":"docs-reg121-1bdcc244","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6aa2c47068ecf2bff0bf9602","collectionId":"608266ef-b3a4-40ed-b4f5-7683470a4c77","liveDeploymentHistoryId":"6aa2c47068ecf2bff0bf9602","schemaVersion":"v3"},"entitlements":{"AI_CHAT":{"status":"DISABLED"},"WEB_MCP":{"status":"DISABLED"}},"buildId":"6aa2c47068ecf2bff0bf9602","clientVersion":"0.0.3971","searchFilterCounts":[{"language":"default","tag":"Documentation","count":16},{"language":"default","tag":"Developer Introduction","count":3},{"language":"default","tag":"Backend Infrastructure","count":3},{"language":"default","tag":"Get Started","count":3},{"language":"default","tag":"Publishing \u0026 Account","count":2},{"language":"default","tag":"Forms \u0026 Data","count":2},{"language":"default","tag":"Changelog","count":1},{"language":"default","tag":"Developer Reference","count":1},{"language":"default","tag":"Developer API","count":1},{"language":"default","tag":"Help","count":1}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"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":"editor-v7-file-tree","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":"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":"pause-universal-search-reconcile","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":"per-site-search-delta","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":"editor-private-page-search","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":"editor-nav-generations","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":"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":"byok-sep-25","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":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","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":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"developer/architecture","slug":"/developer/architecture","pageMetadata":{"title":"REG121 Site Architecture: React, API, and Postgres","sidebarTitle":"Architecture","description":"Every REG121 site is a real React application backed by a per-site REST API layer and an isolated Postgres schema provisioned at site creation.","mode":"center","href":"/developer/architecture"},"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: \"Every REG121 site is a real React application backed by a per-site REST API layer and an isolated Postgres schema provisioned at site creation.\"\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={li:`li`,p:`p`,ul:`ul`,..._provideComponents(),...props.components},{Card,CardGroup,Heading,Warning}=_components;if(!Card)_missingMdxReference(`Card`,true);if(!CardGroup)_missingMdxReference(`CardGroup`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Every site generated by REG121 is a real React application — not a static export. It communicates with a dedicated REST API layer that is scoped to that site, and all persistent data is stored in an isolated Postgres schema provisioned specifically for that site. This page describes how those components fit together.`}),`\n`,_jsx(Heading,{level:`2`,id:`site-structure`,children:`Site Structure`}),`\n`,_jsx(_components.p,{children:`A generated REG121 site consists of three distinct layers:`}),`\n`,_jsxs(CardGroup,{cols:1,children:[_jsx(Card,{title:`React Frontend`,icon:`react`,children:_jsx(_components.p,{children:`The client-side application is a React app. It is not a statically exported HTML site — it runs as a full React application and communicates with the per-site API layer at runtime.`})}),_jsx(Card,{title:`Per-Site REST API Layer`,icon:`plug`,children:_jsx(_components.p,{children:`Each site is provisioned with its own REST API layer. The React frontend communicates with this API to read and write data. The API layer is scoped exclusively to the site and its associated Postgres schema.`})}),_jsx(Card,{title:`Isolated Postgres Schema`,icon:`database`,children:_jsx(_components.p,{children:`Persistent data for the site lives in a dedicated Postgres schema. This schema is provisioned automatically when the site is created. You do not configure or manage the database directly.`})})]}),`\n`,_jsx(_components.p,{children:`Schema provisioning happens at site creation. By the time you interact with a site, its Postgres schema and API layer are already in place.`}),`\n`,_jsx(Heading,{level:`2`,id:`tenant-isolation`,children:`Tenant Isolation`}),`\n`,_jsx(_components.p,{children:`Isolation between sites is enforced at the database level. Each site’s data lives in a separate Postgres schema. The application layer for one site has no structural path to the schema of another site — this is not a policy enforced only in application code.`}),`\n`,_jsx(_components.p,{children:`To be precise:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Each site maps to exactly one Postgres schema within the shared cluster.`}),`\n`,_jsx(_components.li,{children:`The per-site API layer is bound to that site’s schema. Requests routed through one site’s API cannot reach another site’s schema.`}),`\n`,_jsx(_components.li,{children:`Schema-level isolation means that even if application-layer logic were misconfigured, the database boundary would remain intact.`}),`\n`,_jsx(_components.li,{children:`Row-level isolation applies within the schema to enforce access control within the site’s own data.`}),`\n`]}),`\n`,_jsx(_components.p,{children:`This structure means tenant isolation is a property of the storage architecture, not solely a runtime guarantee. You do not need to implement cross-tenant access controls in your own application code — the boundary is structural.`}),`\n`,_jsx(Heading,{level:`2`,id:`authentication-layer`,children:`Authentication Layer`}),`\n`,_jsx(_components.p,{children:`Each site is provisioned with its own authentication infrastructure. This covers end-user account creation, login, and session management. The auth system is tied to the site’s isolated Postgres schema — user records and session state are stored within the same schema boundary as the rest of the site’s data, not in a shared auth store.`}),`\n`,_jsx(_components.p,{children:`Because auth state is scoped to the site’s schema, authenticated sessions for one site have no relationship to sessions on another site, by construction.`}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`The specific implementation details of the authentication layer — including token format, session duration defaults, and supported auth flows — are pending confirmation from the REG121 engineering team. The structural guarantees described above (per-site auth, schema-scoped storage) reflect the platform’s stated architecture, but you should verify specifics against current API documentation or direct engineering sources before building auth-sensitive integrations.`})})]})}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":"REG121 Site Architecture: React, API, and Postgres","sidebarTitle":"Architecture","description":"Every REG121 site is a real React application backed by a per-site REST API layer and an isolated Postgres schema provisioned at site creation.","mode":"center","href":"/developer/architecture"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Site Structure","slug":"site-structure","depth":2,"children":[]},{"title":"Tenant Isolation","slug":"tenant-isolation","depth":2,"children":[]},{"title":"Authentication Layer","slug":"authentication-layer","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"reg121","siteName":"REG121","title":"REG121 Site Architecture: React, API, and Postgres - REG121","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-08T16:23:28.591Z","originalFileLocation":"developer/architecture.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=\"Every REG121 site is a real React application backed by a per-site REST API layer and an isolated Postgres schema provisioned at site creation.\">\u003cmeta data-mint-head name=\"application-name\" content=\"REG121\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/reg121/YqjyiqcePSAH9hzh/_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/reg121/YqjyiqcePSAH9hzh/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/reg121/YqjyiqcePSAH9hzh/_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/reg121/YqjyiqcePSAH9hzh/_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/reg121/YqjyiqcePSAH9hzh/_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/reg121/YqjyiqcePSAH9hzh/_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/reg121/YqjyiqcePSAH9hzh/_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/reg121/YqjyiqcePSAH9hzh/_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/reg121/YqjyiqcePSAH9hzh/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"REG121 Site Architecture: React, API, and Postgres - REG121\">\u003cmeta data-mint-head property=\"og:description\" content=\"Every REG121 site is a real React application backed by a per-site REST API layer and an isolated Postgres schema provisioned at site creation.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"REG121\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.reg121.com/developer/architecture\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://reg121.mintlify.app/_mintlify/api/og/v2?division=Developer+Introduction\u0026amp;title=REG121+Site+Architecture%3A+React%2C+API%2C+and+Postgres\u0026amp;description=Every+REG121+site+is+a+real+React+application+backed+by+a+per-site+REST+API+layer+and+an+isolated+Postgres+schema+provisioned+at+site+creation.\u0026amp;theme=b8fdce938b4f5caef0d295ac\u0026amp;signature=10a6fa857de52d78fcc51308be0f7a27f1c4bb22347f5a1b1449ab61f2c98c80\">\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=\"REG121 Site Architecture: React, API, and Postgres - REG121\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Every REG121 site is a real React application backed by a per-site REST API layer and an isolated Postgres schema provisioned at site creation.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://reg121.mintlify.app/_mintlify/api/og/v2?division=Developer+Introduction\u0026amp;title=REG121+Site+Architecture%3A+React%2C+API%2C+and+Postgres\u0026amp;description=Every+REG121+site+is+a+real+React+application+backed+by+a+per-site+REST+API+layer+and+an+isolated+Postgres+schema+provisioned+at+site+creation.\u0026amp;theme=b8fdce938b4f5caef0d295ac\u0026amp;signature=10a6fa857de52d78fcc51308be0f7a27f1c4bb22347f5a1b1449ab61f2c98c80\">\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/reg121/YqjyiqcePSAH9hzh/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"REG121\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#4F46E5\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.reg121.com/developer/architecture\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/developer/architecture.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.reg121.com/#organization\",\"name\":\"REG121\",\"url\":\"https://docs.reg121.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://reg121.com/reg121_brand.png\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.reg121.com#website\",\"name\":\"REG121\",\"url\":\"https://docs.reg121.com\",\"publisher\":{\"@id\":\"https://docs.reg121.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.reg121.com/developer/architecture#webpage\",\"url\":\"https://docs.reg121.com/developer/architecture\",\"name\":\"REG121 Site Architecture: React, API, and Postgres\",\"description\":\"Every REG121 site is a real React application backed by a per-site REST API layer and an isolated Postgres schema provisioned at site creation.\",\"dateModified\":\"2026-09-08T16:23:28.591Z\",\"isPartOf\":{\"@id\":\"https://docs.reg121.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.reg121.com/developer/architecture#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.reg121.com/developer/architecture#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Developer Introduction\",\"item\":\"https://docs.reg121.com/developer/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"REG121 Site Architecture: React, API, and Postgres\",\"item\":\"https://docs.reg121.com/developer/architecture\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.reg121.com/developer/architecture#article\",\"headline\":\"REG121 Site Architecture: React, API, and Postgres\",\"name\":\"REG121 Site Architecture: React, API, and Postgres\",\"description\":\"Every REG121 site is a real React application backed by a per-site REST API layer and an isolated Postgres schema provisioned at site creation.\",\"url\":\"https://docs.reg121.com/developer/architecture\",\"mainEntityOfPage\":{\"@id\":\"https://docs.reg121.com/developer/architecture#webpage\"},\"dateModified\":\"2026-09-08T16:23:28.591Z\",\"publisher\":{\"@id\":\"https://docs.reg121.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.reg121.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"REG121\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"REG121","nav":{"global":null,"tabs":[{"tab":"Documentation","groups":[{"group":"Get Started","pages":[{"title":"REG121: AI-Powered Website Builder for Small Businesses","sidebarTitle":"Overview","mode":"center","href":""},{"title":"Get Started with REG121: Build Your Site in Minutes","sidebarTitle":"Getting Started","mode":"center","href":"/platform/getting-started"},{"title":"Edit Your REG121 Site: AI Chat and Point-and-Click","sidebarTitle":"Editing","mode":"center","href":"/platform/editing-your-site"}]},{"group":"Forms \u0026 Data","pages":[{"title":"Collect Bookings and Enquiries with Built-In Forms","sidebarTitle":"Forms \u0026 Data","mode":"center","href":"/platform/forms-and-data"},{"title":"Store and Display Business Data with Custom Tables","sidebarTitle":"Custom Tables","mode":"center","href":"/platform/custom-data-tables"}]},{"group":"Publishing \u0026 Account","pages":[{"title":"Publish Your Site with REG121 — One Click, Fully Hosted","sidebarTitle":"Publishing","mode":"center","href":"/platform/publishing-and-hosting"},{"title":"REG121 Plans, Billing, and Account Management Guide","sidebarTitle":"Billing","mode":"center","href":"/platform/account-and-billing"}]},{"group":"Help","pages":[{"title":"REG121 Frequently Asked Questions — Getting Started","sidebarTitle":"FAQ","mode":"center","href":"/platform/faq"}]},{"group":"Developer Introduction","pages":[{"title":"reg121.cloud: Managed Backend for Every REG121 Site","sidebarTitle":"Overview","description":"reg121.cloud is the managed backend platform included in every REG121 plan — Postgres storage, REST API, and auth infrastructure, provisioned per site.","mode":"center","href":"/developer/overview"},{"title":"REG121 Site Architecture: React, API, and Postgres","sidebarTitle":"Architecture","mode":"center","href":"/developer/architecture"},{"title":"AI Models: The Multi-Model Agent Harness Behind REG121","sidebarTitle":"AI Models","description":"REG121 runs on a multi-model agent harness, load-balanced across leading providers for speed, resilience, and consistently high-quality output.","mode":"center","href":"/developer/models"}]},{"group":"Backend Infrastructure","pages":[{"title":"Database \u0026 Schema: Real Postgres DDL for Every Site","sidebarTitle":"Database","mode":"center","href":"/developer/database-and-schema"},{"title":"Authentication: Per-Site End-User Auth Infrastructure","sidebarTitle":"Authentication","mode":"center","href":"/developer/authentication"},{"title":"Security \u0026 Isolation: Per-Site Database Boundaries","sidebarTitle":"Security","mode":"center","href":"/developer/security-and-isolation"}]},{"group":"Developer API","pages":[{"title":"REST API Reference: Per-Site Data Access on reg121.cloud","sidebarTitle":"REST API","mode":"center","href":"/developer/rest-api-reference"}]},{"group":"Developer Reference","pages":[{"title":"REG121 Limitations: What the Platform Is Not Designed For","sidebarTitle":"Limitations","mode":"center","href":"/developer/limitations"}]}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog"}]}]},"title":"REG121 Site Architecture: React, API, and Postgres - REG121","buildId":"dpl_DFJrtvUi8HS5F9nkooKuDJsuD5BM","deploymentId":"dpl_DFJrtvUi8HS5F9nkooKuDJsuD5BM","dynamics":[],"chunks":[]}