TurboRepo is a monorepo tool that helps you manage your project’s dependencies and scripts. We chose a monorepo setup to make it easier to manage to structure the different features and enable code sharing between the different packages. It also allows you to easily add further apps (like a mobile app or a different frontend) to the project and reuse the existing codebase.
Next.js is a one of the most popular React frameworks. We use it for the frontend of ShipThing and also utilize it’s route handlers to serve the API for the application.
Prisma is an ORM (Object-Relational Mapping) tool that helps you access your database in a type-safe way. We use Prisma to define our database schema and to generate the necessary TypeScript types for our application. It also helps us to write queries in a type-safe way and to easily migrate our database schema.We use PostgreSQL as our default database, but you can easily switch to MySQL, SQLite or any other supported database by updating a few configuration lines.
Hono is a minimal web server framework that helps you to build the API. It enables you to easily define routes and handle requests and responses. It runs on the edge, serverless functions or as a traditional “long-running” server, so you can use it in any environment and with any provider. It also comes with an RPC client that allows you to easily call your own functions from the frontend in a type-safe way.
Tailwind CSS is a utility-first CSS framework that helps you build custom designs without writing any CSS. We also use Radix UI for our headless components library and shadcn/ui for our design system, which enables you to generate pre-designed components with a single command.
Clerk is a user management service that helps you to easily add authentication to your application. It provides a user management dashboard, a user management API and a user management SDK for your frontend. We use it to manage our users and to authenticate them.
Fumadocs is a markdown-based CMS that helps you manage your content in a structured way within your codebase. We use it to manage the content of the blog, the documentation and other content pages (like the legal pages) with MDX.
⌘I
{"docsConfig":{"theme":"maple","$schema":"https://mintlify.com/docs.json","name":"ShipThing docs","colors":{"primary":"#4CAF50","light":"#4CAF50","dark":"#4CAF50"},"logo":{"light":"https://mintcdn.com/focusapps/6mqPe5nbiEW0fSGG/images/icon.png?fit=max\u0026auto=format\u0026n=6mqPe5nbiEW0fSGG\u0026q=85\u0026s=67f81428a17ce12e3bedfb5add748971","dark":"https://mintcdn.com/focusapps/6mqPe5nbiEW0fSGG/images/icon.png?fit=max\u0026auto=format\u0026n=6mqPe5nbiEW0fSGG\u0026q=85\u0026s=67f81428a17ce12e3bedfb5add748971"},"favicon":"/images/icon.png","background":{"decoration":"windows"},"navbar":{"primary":{"type":"github","href":"https://github.com/focusapps/ShipThing"}},"footer":{"socials":{"x":"https://x.com/allentown521","github":"https://github.com/focusapps/ShipThing","linkedin":"https://www.linkedin.com/company/focus-apps-llc-us/"}},"search":{"prompt":"Search or ask..."},"styling":{"codeblocks":"system"},"navigation":{"languages":[{"language":"en","href":"overview"},{"language":"zh","href":"zh/overview"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"focusapps","hasAudioNarration":false,"actualSubdomain":"focusapps","customDomains":["docs.shipthing.com"],"gitSource":{"type":"github","owner":"allentown521","repo":"super-starter-docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6a21e6b1044dd579e9b57e57","collectionId":"f2c99ad5-7a2d-4393-b748-c7ac62bde467","schemaVersion":"v2"},"entitlements":{},"buildId":"6a21e6b1044dd579e9b57e57:success","clientVersion":"0.0.3908","searchFilterCounts":[{"language":"en","tag":"Packages","count":56},{"language":"zh","tag":"功能包","count":56},{"language":"en","tag":"Getting Started","count":24},{"language":"zh","tag":"入门指南","count":24},{"language":"en","tag":"Deployment","count":11},{"language":"zh","tag":"部署指南","count":11},{"language":"en","tag":"Migrations","count":10},{"language":"zh","tag":"迁移","count":10},{"language":"en","tag":"Apps","count":8},{"language":"en","tag":"Payments","count":8},{"language":"zh","tag":"应用模块","count":8},{"language":"zh","tag":"支付","count":8},{"language":"en","tag":"Email","count":7},{"language":"zh","tag":"邮件","count":7},{"language":"en","tag":"Database","count":6},{"language":"en","tag":"Design System","count":6},{"language":"en","tag":"Payment Providers","count":6},{"language":"zh","tag":"数据库","count":6},{"language":"zh","tag":"界面设计","count":6},{"language":"zh","tag":"支付提供商","count":6}]},"assistantConfig":{},"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":"editor-branches-v2-autocommit","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-branches-v2","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":"teamspace","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":"vite-origin","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":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"client-snapshot-docs-config","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}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"teckstack","slug":"/teckstack","pageMetadata":{"title":"Tech Stack","description":"The Tech Stack of ShipThing.","href":"/teckstack"},"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: \"The Tech Stack of ShipThing.\"\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`,p:`p`,..._provideComponents(),...props.components},{Heading}=_components;if(!Heading)_missingMdxReference(`Heading`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`3`,id:`turborepo`,children:`Turborepo`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.a,{href:`https://turborepo.com`,children:`TurboRepo`}),` is a monorepo tool that helps you manage your project’s dependencies and scripts. We chose a monorepo setup to make it easier to manage to structure the different features and enable code sharing between the different packages. It also allows you to easily add further apps (like a mobile app or a different frontend) to the project and reuse the existing codebase.`]}),`\n`,_jsx(Heading,{level:`2`,id:`next-js`,children:`Next.js`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.a,{href:`https://nextjs.org/`,children:`Next.js`}),` is a one of the most popular React frameworks. We use it for the frontend of ShipThing and also utilize it’s route handlers to serve the API for the application.`]}),`\n`,_jsx(Heading,{level:`2`,id:`prisma`,children:`Prisma`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.a,{href:`https://www.prisma.io/`,children:`Prisma`}),` is an ORM (Object-Relational Mapping) tool that helps you access your database in a type-safe way. We use Prisma to define our database schema and to generate the necessary TypeScript types for our application. It also helps us to write queries in a type-safe way and to easily migrate our database schema.`]}),`\n`,_jsxs(_components.p,{children:[`We use `,_jsx(_components.a,{href:`https://www.postgresql.org/`,children:`PostgreSQL`}),` as our default database, but you can easily switch to MySQL, SQLite or any other supported database by updating a few configuration lines.`]}),`\n`,_jsx(Heading,{level:`2`,id:`hono`,children:`Hono`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.a,{href:`https://hono.dev/`,children:`Hono`}),` is a minimal web server framework that helps you to build the API. It enables you to easily define routes and handle requests and responses. It runs on the edge, serverless functions or as a traditional “long-running” server, so you can use it in any environment and with any provider. It also comes with an RPC client that allows you to easily call your own functions from the frontend in a type-safe way.`]}),`\n`,_jsx(Heading,{level:`2`,id:`tailwind-css-\u0026-radix-ui`,children:`Tailwind CSS \u0026 Radix UI`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.a,{href:`https://tailwindcss.com/`,children:`Tailwind CSS`}),` is a utility-first CSS framework that helps you build custom designs without writing any CSS. We also use `,_jsx(_components.a,{href:`https://www.radix-ui.com/`,children:`Radix UI`}),` for our headless components library and `,_jsx(_components.a,{href:`https://ui.shadcn.com/`,children:`shadcn/ui`}),` for our design system, which enables you to generate pre-designed components with a single command.`]}),`\n`,_jsx(Heading,{level:`2`,id:`clerk`,children:`Clerk`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.a,{href:`https://clerk.com/`,children:`Clerk`}),` is a user management service that helps you to easily add authentication to your application. It provides a user management dashboard, a user management API and a user management SDK for your frontend. We use it to manage our users and to authenticate them.`]}),`\n`,_jsx(Heading,{level:`2`,id:`fumadocs`,children:`Fumadocs`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.a,{href:`https://fumadocs.com/`,children:`Fumadocs`}),` is a markdown-based CMS that helps you manage your content in a structured way within your codebase. We use it to manage the content of the blog, the documentation and other content pages (like the legal pages) with MDX.`]})]})}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":{"codeStyling":"system","config":{},"pageMetadata":{"title":"Tech Stack","description":"The Tech Stack of ShipThing.","href":"/teckstack"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Turborepo","slug":"turborepo","depth":3,"children":[]},{"title":"Next.js","slug":"next-js","depth":2,"children":[]},{"title":"Prisma","slug":"prisma","depth":2,"children":[]},{"title":"Hono","slug":"hono","depth":2,"children":[]},{"title":"Tailwind CSS \u0026 Radix UI","slug":"tailwind-css-\u0026-radix-ui","depth":2,"children":[]},{"title":"Clerk","slug":"clerk","depth":2,"children":[]},{"title":"Fumadocs","slug":"fumadocs","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"focusapps","siteName":"ShipThing docs","title":"Tech Stack - ShipThing docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/teckstack","matchLevel":0},"zh":{"href":"/zh/teckstack","matchLevel":1}}},"lastModified":"2026-01-07T07:07:10.749Z","originalFileLocation":"teckstack.mdx","locale":"en"},"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=\"The Tech Stack of ShipThing.\">\u003cmeta data-mint-head name=\"application-name\" content=\"ShipThing docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/focusapps/eNhWP_cM3NWlXTpQ/_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/focusapps/eNhWP_cM3NWlXTpQ/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/focusapps/eNhWP_cM3NWlXTpQ/_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/focusapps/eNhWP_cM3NWlXTpQ/_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/focusapps/eNhWP_cM3NWlXTpQ/_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/focusapps/eNhWP_cM3NWlXTpQ/_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/focusapps/eNhWP_cM3NWlXTpQ/_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/focusapps/eNhWP_cM3NWlXTpQ/_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/focusapps/eNhWP_cM3NWlXTpQ/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Tech Stack - ShipThing docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"The Tech Stack of ShipThing.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"ShipThing docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.shipthing.com/teckstack\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Tech Stack - ShipThing docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"The Tech Stack of ShipThing.\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/focusapps/eNhWP_cM3NWlXTpQ/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"ShipThing docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#4CAF50\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.shipthing.com/teckstack\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/teckstack.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://docs.shipthing.com/teckstack\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"zh\" href=\"https://docs.shipthing.com/zh/teckstack\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://docs.shipthing.com/teckstack\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.shipthing.com/#organization\",\"name\":\"ShipThing docs\",\"url\":\"https://docs.shipthing.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/focusapps/6mqPe5nbiEW0fSGG/images/icon.png?fit=max\u0026auto=format\u0026n=6mqPe5nbiEW0fSGG\u0026q=85\u0026s=67f81428a17ce12e3bedfb5add748971\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.shipthing.com#website\",\"name\":\"ShipThing docs\",\"url\":\"https://docs.shipthing.com\",\"publisher\":{\"@id\":\"https://docs.shipthing.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.shipthing.com/teckstack#webpage\",\"url\":\"https://docs.shipthing.com/teckstack\",\"name\":\"Tech Stack\",\"description\":\"The Tech Stack of ShipThing.\",\"dateModified\":\"2026-01-07T07:07:10.749Z\",\"isPartOf\":{\"@id\":\"https://docs.shipthing.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.shipthing.com/teckstack#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.shipthing.com/teckstack#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\" \",\"item\":\"https://docs.shipthing.com/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tech Stack\",\"item\":\"https://docs.shipthing.com/teckstack\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.shipthing.com/teckstack#article\",\"headline\":\"Tech Stack\",\"name\":\"Tech Stack\",\"description\":\"The Tech Stack of ShipThing.\",\"url\":\"https://docs.shipthing.com/teckstack\",\"mainEntityOfPage\":{\"@id\":\"https://docs.shipthing.com/teckstack#webpage\"},\"dateModified\":\"2026-01-07T07:07:10.749Z\",\"publisher\":{\"@id\":\"https://docs.shipthing.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.shipthing.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"ShipThing docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"ShipThing docs","nav":{"global":null,"languages":[{"language":"en","tabs":[{"tab":"Getting Started","groups":[{"group":" ","pages":[{"title":"Overview","description":"What is ShipThing and how do I get started?","href":"/overview"},{"title":"Tech Stack","href":"/teckstack"},{"title":"FAQ","description":"Frequently asked questions about ShipThing.","href":"/faq"}]},{"group":" ","pages":[{"group":"Installation","pages":[{"title":"Prerequisites","href":"/setup/installation/prerequisites"},{"title":"Clone repository","href":"/setup/installation/clone"},{"title":"Development","href":"/setup/installation/development"}]},{"group":"Codebase","pages":[{"title":"Structure","href":"/setup/codebase/project-structure"},{"title":"Update the codebase","href":"/setup/codebase/update"},{"title":"Managing dependencies","href":"/setup/codebase/manage-dependencies"},{"title":"Adding packages","href":"/setup/codebase/add-packages"},{"title":"Adding apps","href":"/setup/codebase/add-apps"}]},{"group":"Configuration","pages":[{"title":"Environment Variables","href":"/setup/configuration/environment"},{"title":"App configuration","href":"/setup/configuration/app-config"}]},{"group":"Deployment","pages":[{"title":"Checklist","href":"/deployment/checklist"},{"title":"Overview","href":"/deployment/overview"},{"title":"Vercel","href":"/deployment/vercel"},{"title":"Netlify","href":"/deployment/netlify"},{"title":"Render","href":"/deployment/render"},{"title":"Fly.io","href":"/deployment/flyio"},{"title":"Coolify","href":"/deployment/coolify"},{"title":"Railway","href":"/deployment/railway"},{"title":"AWS Amplify","href":"/deployment/aws"},{"title":"Docker","href":"/deployment/docker"},{"title":"Standalone API","href":"/deployment/standalone-api"}]}]}]},{"tab":"Apps","pages":[{"title":"Apps","href":"/apps/web"}]},{"tab":"Packages","pages":[{"title":"Packages","href":"/packages/ai"}]},{"tab":"Migrations","pages":[{"title":"Migrations","href":"/migrations/authentication/authjs"}]},{"tab":"Recipes","pages":[{"title":"Recipes","href":"/recipes/ai-chatbot"}]}]},{"language":"zh","pages":[{"title":"zh","href":"/zh/teckstack"}]}]},"title":"Tech Stack - ShipThing docs","buildId":"dpl_CUnGQP1HgFUzoxatVC37y4zP83Vx","deploymentId":"dpl_CUnGQP1HgFUzoxatVC37y4zP83Vx","dynamics":[],"chunks":[]}