At the end of this tutorial, you’ll have your database up and running
TurboStack uses SQLite as Database by default. All the data will be stored in a dev.db file inside apps/web/prisma folder.
We do not recommend to use SQLite as a database in production. SQLite was determined by default for development purposes and enhances development experience.
If you want the Database Provider, you can achieve this following the prisma documentation.
User: The User model is for retrieved information from authentication provider (name, email, image)
Account: The Account model is for information about accounts associated with a User. A single User can have multiple Account, but each Account can only have one User.
Session: The Session model is used for database sessions and it can store arbitrary data for an active user session. A single User can have multiple Session, each Session can only have one User.
VerificationToken: The VerificationToken model is used to temporary tokens (used for magic-link login).
Tables handled by TurboStack
Project: The Project model is for information about projects associated with a User. A single User can have multiple Project, and a single Project can have multiple User.
ProjectUser: The ProjectUser model is for information about the relation between an User and a Project.
ProjectInvite: The ProjectInvite model is for information about the invites created for a Project. A single Project can have multiple ProjectInvite, but each ProjectInvite can only have one Project.
Migrations are controlled sets of changes developed to modify the structure of tables within a database.Migrations help transition database schemas from their current state to a new desired state, whether that involves adding tables and columns, removing elements, splitting fields, or changing types and constraints.All migrations are stored in the source code and help you and your team keep track of all the changes made to your database.
When you change your schema.prisma file and runs the following command:
pnpm --filter web prisma:migrate
It automagically creates a new .sql migration file, with all the changes applied to the schema.
{"docsConfig":{"$schema":"https://mintlify.com/docs.json","theme":"mint","name":"TurboStack","colors":{"primary":"#4069e2","light":"#40BCE3","dark":"#4069e2"},"favicon":"/logo/light.svg","logo":{"light":"https://mintcdn.com/ravitechsolutions/jCk1IPeJr8ul3nyO/logo/light.svg?fit=max\u0026auto=format\u0026n=jCk1IPeJr8ul3nyO\u0026q=85\u0026s=af0f68a513e3abcdce2c0f272bc271c7","dark":"https://mintcdn.com/ravitechsolutions/jCk1IPeJr8ul3nyO/logo/dark.svg?fit=max\u0026auto=format\u0026n=jCk1IPeJr8ul3nyO\u0026q=85\u0026s=25a9768f814c469ad839511fd85dbfe7"},"appearance":{"default":"light","strict":true},"navbar":{"links":[{"label":"Support","href":"mailto:vitor@turbostack.io"}],"primary":{"type":"button","label":"Get TurboStack","href":"https://turbostack.io"}},"footer":{"socials":{"x":"https://x.com/medeiro_tech"}},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"ravitechsolutions","hasAudioNarration":false,"actualSubdomain":"ravitechsolutions","customDomains":["docs.turbostack.io"],"gitSource":{"type":"github","owner":"turbostackinc","repo":"turbostack.io","deployBranch":"main","contentDirectory":"apps/docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6a20c5e41b16b350b6562021","collectionId":"b3c63122-aa16-4a12-8c07-87cb899edc33","schemaVersion":"v2"},"entitlements":{},"buildId":"6a20c5e41b16b350b6562021:success","clientVersion":"0.0.4045","searchFilterCounts":[{"language":"default","tag":"Documentation","count":35},{"language":"default","tag":"Components","count":20},{"language":"default","tag":"Features","count":6},{"language":"default","tag":"Tutorials","count":6},{"language":"default","tag":"Go Live at Turbo Speed","count":3}]},"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":"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":"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":"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":"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":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"features/database","slug":"/features/database","pageMetadata":{"title":"Database","description":"At the end of this tutorial, you'll have your database up and running","href":"/features/database"},"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: \"At the end of this tutorial, you’ll have your database up and running\"\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`,code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,OptimizedImage,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`TurboStack uses SQLite as Database by default. All the data will be stored in a `,_jsx(_components.code,{children:`dev.db`}),` file inside `,_jsx(_components.code,{children:`apps/web/prisma`}),` folder.`]}),`\n`,_jsx(Warning,{children:`We do not recommend to use SQLite as a database in production. SQLite was determined by default for development purposes and enhances development experience.`}),`\n`,_jsxs(_components.p,{children:[`If you want the Database Provider, you can achieve this following the `,_jsx(_components.a,{href:`https://www.prisma.io/docs/orm/overview/databases`,children:`prisma documentation`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`database-schema`,children:`Database Schema`}),`\n`,_jsx(_components.p,{children:`Here’s an image of the database schema:`}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/ravitechsolutions/jCk1IPeJr8ul3nyO/images/schema.svg?fit=max\u0026auto=format\u0026n=jCk1IPeJr8ul3nyO\u0026q=85\u0026s=77c0629ae1a150c8f5c7dc2b3909cfc5`,alt:`Database Schema`,\"data-og-width\":`947`,width:`947`,\"data-og-height\":`1157`,height:`1157`,\"data-path\":`images/schema.svg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/ravitechsolutions/jCk1IPeJr8ul3nyO/images/schema.svg?w=280\u0026fit=max\u0026auto=format\u0026n=jCk1IPeJr8ul3nyO\u0026q=85\u0026s=f338c10f86322e2cd1893289197b3f07 280w, https://mintcdn.com/ravitechsolutions/jCk1IPeJr8ul3nyO/images/schema.svg?w=560\u0026fit=max\u0026auto=format\u0026n=jCk1IPeJr8ul3nyO\u0026q=85\u0026s=0e9f6c730bde904e6f206cfb5b7bd187 560w, https://mintcdn.com/ravitechsolutions/jCk1IPeJr8ul3nyO/images/schema.svg?w=840\u0026fit=max\u0026auto=format\u0026n=jCk1IPeJr8ul3nyO\u0026q=85\u0026s=e64da59ceb0053fd3e80d8a88a46aa13 840w, https://mintcdn.com/ravitechsolutions/jCk1IPeJr8ul3nyO/images/schema.svg?w=1100\u0026fit=max\u0026auto=format\u0026n=jCk1IPeJr8ul3nyO\u0026q=85\u0026s=8c273bf5fde16644c962f36775d8a25d 1100w, https://mintcdn.com/ravitechsolutions/jCk1IPeJr8ul3nyO/images/schema.svg?w=1650\u0026fit=max\u0026auto=format\u0026n=jCk1IPeJr8ul3nyO\u0026q=85\u0026s=8900cf74631c990a281d170220737247 1650w, https://mintcdn.com/ravitechsolutions/jCk1IPeJr8ul3nyO/images/schema.svg?w=2500\u0026fit=max\u0026auto=format\u0026n=jCk1IPeJr8ul3nyO\u0026q=85\u0026s=102d6771069c9919d1f2663a5bc138d7 2500w`}),`\n`,_jsx(_components.p,{children:`This schema can be segmented by two sections:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:_jsx(_components.a,{href:`https://authjs.dev/concepts/database-models`,children:_jsx(_components.strong,{children:`Tables handled by NextAuth`})})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`User`}),`: The `,_jsx(_components.code,{children:`User`}),` model is for retrieved information from authentication provider (name, email, image)`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Account`}),`: The `,_jsx(_components.code,{children:`Account`}),` model is for information about accounts associated with a `,_jsx(_components.code,{children:`User`}),`. A single `,_jsx(_components.code,{children:`User`}),` can have multiple `,_jsx(_components.code,{children:`Account`}),`, but each `,_jsx(_components.code,{children:`Account`}),` can only have one `,_jsx(_components.code,{children:`User`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Session`}),`: The `,_jsx(_components.code,{children:`Session`}),` model is used for database sessions and it can store arbitrary data for an active user session. A single `,_jsx(_components.code,{children:`User`}),` can have multiple `,_jsx(_components.code,{children:`Session`}),`, each Session can only have one `,_jsx(_components.code,{children:`User`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`VerificationToken`}),`: The `,_jsx(_components.code,{children:`VerificationToken`}),` model is used to temporary tokens (used for magic-link login).`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Tables handled by TurboStack`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Project`}),`: The `,_jsx(_components.code,{children:`Project`}),` model is for information about projects associated with a `,_jsx(_components.code,{children:`User`}),`. A single `,_jsx(_components.code,{children:`User`}),` can have multiple `,_jsx(_components.code,{children:`Project`}),`, and a single `,_jsx(_components.code,{children:`Project`}),` can have multiple `,_jsx(_components.code,{children:`User`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`ProjectUser`}),`: The `,_jsx(_components.code,{children:`ProjectUser`}),` model is for information about the relation between an `,_jsx(_components.code,{children:`User`}),` and a `,_jsx(_components.code,{children:`Project`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`ProjectInvite`}),`: The `,_jsx(_components.code,{children:`ProjectInvite`}),` model is for information about the invites created for a `,_jsx(_components.code,{children:`Project`}),`. A single `,_jsx(_components.code,{children:`Project`}),` can have multiple `,_jsx(_components.code,{children:`ProjectInvite`}),`, but each `,_jsx(_components.code,{children:`ProjectInvite`}),` can only have one `,_jsx(_components.code,{children:`Project`}),`.`]}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`migrations`,children:`Migrations`}),`\n`,_jsx(_components.p,{children:`Migrations are controlled sets of changes developed to modify the structure of tables within a database.`}),`\n`,_jsx(_components.p,{children:`Migrations help transition database schemas from their current state to a new desired state, whether that involves adding tables and columns, removing elements, splitting fields, or changing types and constraints.`}),`\n`,_jsx(_components.p,{children:`All migrations are stored in the source code and help you and your team keep track of all the changes made to your database.`}),`\n`,_jsx(Heading,{level:`3`,id:`adding-new-migrations`,children:`Adding new migrations`}),`\n`,_jsxs(_components.p,{children:[`When you change your `,_jsx(_components.code,{children:`schema.prisma`}),` file and runs the following command:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`pnpm`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --filter`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` web`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` prisma:migrate`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`It automagically creates a new `,_jsx(_components.code,{children:`.sql`}),` migration file, with all the changes applied to the schema.`]})]})}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":"Database","description":"At the end of this tutorial, you'll have your database up and running","href":"/features/database"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Database Schema","slug":"database-schema","depth":2,"children":[]},{"title":"Migrations","slug":"migrations","depth":2,"children":[{"title":"Adding new migrations","slug":"adding-new-migrations","depth":3,"children":[]}]}],"codeExamples":{}},"jsLinks":[],"subdomain":"ravitechsolutions","siteName":"TurboStack","title":"Database - TurboStack","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-01-07T03:59:35.356Z","originalFileLocation":"features/database.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=\"light\";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=\"light\"}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=\"At the end of this tutorial, you\u0026#x27;ll have your database up and running\">\u003cmeta data-mint-head name=\"application-name\" content=\"TurboStack\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/ravitechsolutions/rFznui0tYjxK4C3b/_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/ravitechsolutions/rFznui0tYjxK4C3b/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/ravitechsolutions/rFznui0tYjxK4C3b/_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/ravitechsolutions/rFznui0tYjxK4C3b/_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/ravitechsolutions/rFznui0tYjxK4C3b/_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/ravitechsolutions/rFznui0tYjxK4C3b/_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/ravitechsolutions/rFznui0tYjxK4C3b/_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/ravitechsolutions/rFznui0tYjxK4C3b/_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/ravitechsolutions/rFznui0tYjxK4C3b/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Database - TurboStack\">\u003cmeta data-mint-head property=\"og:description\" content=\"At the end of this tutorial, you\u0026#x27;ll have your database up and running\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"TurboStack\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.turbostack.io/features/database\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://ravitechsolutions.mintlify.app/_mintlify/api/og/v2?division=Features\u0026amp;title=Database\u0026amp;description=At+the+end+of+this+tutorial%2C+you%27ll+have+your+database+up+and+running\u0026amp;theme=d7c15f9a8d31f6da03793a4c\u0026amp;signature=b97f481543a2a5d7e26ebf1a8498844e237a8013eb9d1bebc08ffc910f314a9e\">\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=\"Database - TurboStack\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"At the end of this tutorial, you\u0026#x27;ll have your database up and running\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://ravitechsolutions.mintlify.app/_mintlify/api/og/v2?division=Features\u0026amp;title=Database\u0026amp;description=At+the+end+of+this+tutorial%2C+you%27ll+have+your+database+up+and+running\u0026amp;theme=d7c15f9a8d31f6da03793a4c\u0026amp;signature=b97f481543a2a5d7e26ebf1a8498844e237a8013eb9d1bebc08ffc910f314a9e\">\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/ravitechsolutions/rFznui0tYjxK4C3b/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"TurboStack\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#4069e2\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.turbostack.io/features/database\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/features/database.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.turbostack.io/#organization\",\"name\":\"TurboStack\",\"url\":\"https://docs.turbostack.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/ravitechsolutions/jCk1IPeJr8ul3nyO/logo/light.svg?fit=max\u0026auto=format\u0026n=jCk1IPeJr8ul3nyO\u0026q=85\u0026s=af0f68a513e3abcdce2c0f272bc271c7\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.turbostack.io#website\",\"name\":\"TurboStack\",\"url\":\"https://docs.turbostack.io\",\"publisher\":{\"@id\":\"https://docs.turbostack.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.turbostack.io/features/database#webpage\",\"url\":\"https://docs.turbostack.io/features/database\",\"name\":\"Database\",\"description\":\"At the end of this tutorial, you'll have your database up and running\",\"dateModified\":\"2026-01-07T03:59:35.356Z\",\"isPartOf\":{\"@id\":\"https://docs.turbostack.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.turbostack.io/features/database#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.turbostack.io/features/database#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"TurboStack\",\"item\":\"https://docs.turbostack.io\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Database\",\"item\":\"https://docs.turbostack.io/features/database\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.turbostack.io/features/database#article\",\"headline\":\"Database\",\"name\":\"Database\",\"description\":\"At the end of this tutorial, you'll have your database up and running\",\"url\":\"https://docs.turbostack.io/features/database\",\"mainEntityOfPage\":{\"@id\":\"https://docs.turbostack.io/features/database#webpage\"},\"dateModified\":\"2026-01-07T03:59:35.356Z\",\"publisher\":{\"@id\":\"https://docs.turbostack.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.turbostack.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"TurboStack\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"TurboStack","nav":{"global":null,"anchors":[{"anchor":"Documentation","icon":"book-open","groups":[{"group":"Go Live at Turbo Speed","pages":[{"title":"Get started","href":"/get-started"},{"title":"Ship in 5 minutes 🚀","href":"/ship-in-five"},{"title":"Deploy your application","href":"/deployment"}]},{"group":"Tutorials","pages":[{"title":"Setup your enviroment","href":"/tutorials/setup-dev-environment"},{"title":"Change your theme","href":"/tutorials/change-base-theme"},{"title":"Authentication","href":"/tutorials/authentication"},{"title":"Private Pages","href":"/tutorials/private-pages"},{"title":"API Routes","href":"/tutorials/api-routes"},{"title":"Payments with Stripe","description":null,"href":"/tutorials/stripe-subscriptions"}]},{"group":"Features","pages":[{"title":"Database","href":"/features/database"},{"title":"E-mails","description":"At the end of this tutorial, you'll have a resend account ready for deploy","href":"/features/emails"},{"title":"Authentication Methods","href":"/features/authentication-methods"},{"title":"Customer support with Crisp","href":"/features/customer-support"},{"title":"Rate Limiting your API","href":"/features/ratelimit"},{"title":"Documentation with Mintlify","href":"/features/mintlify-documentation"}]},{"group":"Components","pages":[{"title":"Accordion","href":"/components/accordion"},{"title":"Avatar","href":"/components/avatar"},{"title":"Badge","href":"/components/badge"},{"title":"Button","href":"/components/button"},{"title":"Calendar","href":"/components/calendar"},{"title":"Card Form","href":"/components/card-form"},{"title":"Card","href":"/components/card"},{"title":"Date Range Picker","href":"/components/date-range-picker"},{"title":"Dialog","href":"/components/dialog"},{"title":"Feature Single","href":"/components/feature-single"},{"title":"Input","href":"/components/input"},{"title":"Label","href":"/components/label"},{"title":"Navbar","href":"/components/navbar"},{"title":"Popover","href":"/components/popover"},{"title":"Progress","href":"/components/progress"},{"title":"Rating","href":"/components/rating"},{"title":"Select","href":"/components/select"},{"title":"Skeleton","href":"/components/skeleton"},{"title":"Slider","href":"/components/slider"},{"title":"Switch","href":"/components/switch"}]}]},{"anchor":"TurboStack Repository","href":"https://github.com/turbostackinc/turbostack","icon":"code"},{"anchor":"Support","href":"mailto:vitor@turbostack.io","icon":"envelope"}]},"basePath":"","title":"Database - TurboStack","buildId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","deploymentId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","dynamics":["a74be98ba7"],"chunks":["zoom-image-lightbox-eHyQ0tlO.js","lightbox-handle-r17bVUz3.js"]}