1"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3327],{36794:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>o,contentTitle:()=>r,default:()=>h,frontMatter:()=>a,metadata:()=>i,toc:()=>l});const i=JSON.parse('{"id":"core-concepts/index","title":"Core Concepts","description":"This section covers the fundamental concepts you need to understand to build applications with SpacetimeDB.","source":"@site/versioned_docs/version-1.12.0/00200-core-concepts/00000-index.md","sourceDirName":"00200-core-concepts","slug":"/core-concepts","permalink":"/docs/1.12.0/core-concepts","draft":false,"unlisted":false,"editUrl":"https://github.com/clockworklabs/SpacetimeDB/edit/master/docs/versioned_docs/version-1.12.0/00200-core-concepts/00000-index.md","tags":[],"version":"1.12.0","sidebarPosition":0,"frontMatter":{"title":"Core Concepts","slug":"/core-concepts"},"sidebar":"sidebar","previous":{"title":"4 - Moving and Colliding","permalink":"/docs/1.12.0/tutorials/unreal/part-4"},"next":{"title":"The Database Module","permalink":"/docs/1.12.0/databases"}}');var t=n(86106),c=n(56225);const a={title:"Core Concepts",slug:"/core-concepts"},r=void 0,o={},l=[{value:"Databases",id:"databases",level:2},{value:"Tables",id:"tables",level:2},{value:"Functions",id:"functions",level:2},{value:"Subscriptions",id:"subscriptions",level:2},{value:"Authentication",id:"authentication",level:2},{value:"Client SDKs",id:"client-sdks",level:2}];function d(e){const s={a:"a",h2:"h2",li:"li",p:"p",ul:"ul",...(0,c.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(s.p,{children:"This section covers the fundamental concepts you need to understand to build applications with SpacetimeDB."}),"\n",(0,t.jsx)(s.h2,{id:"databases",children:"Databases"}),"\n",(0,t.jsx)(s.p,{children:"Learn how SpacetimeDB databases work, including modules, publishing, and transactions."}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.a,{href:"/docs/1.12.0/databases",children:"What is a Database?"})," - Understanding SpacetimeDB databases and modules"]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.a,{href:"/docs/1.12.0/databases/building-publishing",children:"Building & Publishing"})," - Deploy your module to SpacetimeDB"]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.a,{href:"/docs/1.12.0/databases/transactions-atomicity",children:"Transactions"})," - How atomicity and rollback work"]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.a,{href:"/docs/1.12.0/databases/automatic-migrations",children:"Migrations"})," - Evolving your schema over time"]}),"\n"]}),"\n",(0,t.jsx)(s.h2,{id:"tables",children:"Tables"}),"\n",(0,t.jsx)(s.p,{children:"Define your data model with tables, columns, and indexes."}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.a,{href:"/docs/1.12.0/tables",children:"Tables Overview"})," - Declaring and using tables"]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.a,{href:"/docs/1.12.0/tables/column-types",children:"Column Types"})," - Supported column types"]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.a,{href:"/docs/1.12.0/tables/indexes",children:"Indexes"})," - Optimizing queries with indexes"]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.a,{href:"/docs/1.12.0/tables/access-permissions",children:"Access Permissions"})," - Public vs private tables"]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.a,{href:"/docs/1.12.0/tables/schedule-tables",children:"Schedule Tables"})," - Time-based operations"]}),"\n"]}),"\n",(0,t.jsx)(s.h2,{id:"functions",children:"Functions"}),"\n",(0,t.jsx)(s.p,{children:"Implement your application logic with reducers, procedures, and views."}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.a,{href:"/docs/1.12.0/functions/reducers",children:"Reducers"})," - Transactional functions that modify state"]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.a,{href:"/docs/1.12.0/functions/procedures",children:"Procedures"})," - Functions that can make external HTTP calls"]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.a,{href:"/docs/1.12.0/functions/views",children:"Views"})," - Read-only computed queries"]}),"\n"]}),"\n",(0,t.jsx)(s.h2,{id:"subscriptions",children:"Subscriptions"}),"\n",(0,t.jsx)(s.p,{children:"Enable real-time updates for your clients."}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.a,{href:"/docs/1.12.0/subscriptions",children:"Subscription Reference"})," - How to subscribe to data"]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.a,{href:"/docs/1.12.0/subscriptions/semantics",children:"Subscription Semantics"})," - Understanding update guarantees"]}),"\n"]}),"\n",(0,t.jsx)(s.h2,{id:"authentication",children:"Authentication"}),"\n",(0,t.jsx)(s.p,{children:"Secure your application with SpacetimeAuth."}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.a,{href:"/docs/1.12.0/core-concepts/authentication",children:"Authentication"})," - Using OpenID Connect (OIDC) for identity and access control"]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.a,{href:"/docs/1.12.0/core-concepts/authentication/spacetimeauth/",children:"SpacetimeAuth Overview"})," - Managed authentication service"]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.a,{href:"/docs/1.12.0/core-concepts/authentication/usage",children:"Auth Claims"})," - Using identity and roles"]}),"\n"]}),"\n",(0,t.jsx)(s.h2,{id:"client-sdks",children:"Client SDKs"}),"\n",(0,t.jsx)(s.p,{children:"Connect your frontend to SpacetimeDB."}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.a,{href:"/docs/1.12.0/sdks",children:"SDK Overview"})," - Available client SDKs"]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.a,{href:"/docs/1.12.0/sdks/codegen",children:"Code Generation"})," - Generate type-safe bindings"]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.a,{href:"/docs/1.12.0/sdks/typescript",children:"TypeScript"}),", ",(0,t.jsx)(s.a,{href:"/docs/1.12.0/sdks/rust",children:"Rust"}),", ",(0,t.jsx)(s.a,{href:"/docs/1.12.0/sdks/c-sharp",children:"C#"}),", ",(0,t.jsx)(s.a,{href:"/docs/1.12.0/sdks/unreal",children:"Unreal"})," - Language-specific references"]}),"\n"]})]})}function h(e={}){const{wrapper:s}={...(0,c.R)(),...e.components};return s?(0,t.jsx)(s,{...e,children:(0,t.jsx)(d,{...e})}):d(e)}},56225:(e,s,n)=>{n.d(s,{R:()=>a,x:()=>r});var i=n(7378);const t={}
1,c=i.createContext(t);function a(e){const s=i.useContext(c);return i.useMemo(function(){return"function"==typeof e?e(s):{...s,...e}},[s,e])}function r(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:a(e.components),i.createElement(c.Provider,{value:s},e.children)}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.