[{"data":1,"prerenderedAt":865},["ShallowReactive",2],{"navigation":3,"-docs-getting-started-cli-create-zship":438,"-docs-getting-started-cli-create-zship-description":854},[4],{"title":5,"path":6,"stem":7,"children":8,"page":437},"Docs","\u002Fdocs","docs",[9,222,230],{"title":10,"path":11,"stem":12,"children":13,"framework":15,"description":15,"icon":221},"Get Started","\u002Fdocs\u002Fgetting-started","docs\u002F1.getting-started\u002F1.index",[14,17,30,35,40,45,93,127,175,193],{"title":10,"path":11,"stem":12,"framework":15,"description":16},null,"ZShip overview: Cloudflare-native multi-tenant SaaS foundation for AI-powered sites.",{"title":18,"path":19,"stem":20,"children":21,"framework":15,"description":15,"icon":29},"Services","\u002Fdocs\u002Fgetting-started\u002Fservices","docs\u002F1.getting-started\u002F10.services\u002F1.index",[22,24],{"title":18,"path":19,"stem":20,"framework":15,"description":23},"Optional services: AI Provider. Purchasable separately.",{"title":25,"path":26,"stem":27,"framework":15,"description":28},"AI Provider","\u002Fdocs\u002Fgetting-started\u002Fservices\u002Fai-provider","docs\u002F1.getting-started\u002F10.services\u002F2.ai-provider","Unified KIE & WaveSpeed AI gateway with testing, task logs, analytics, public gallery, and security controls.","i-lucide-sparkles",{"title":31,"path":32,"stem":33,"framework":15,"description":34},"Important Notes","\u002Fdocs\u002Fgetting-started\u002Fimportant-notes","docs\u002F1.getting-started\u002F2.important-notes","Rules you must follow: do not modify official apps and backend services.",{"title":36,"path":37,"stem":38,"framework":15,"description":39},"Codebase","\u002Fdocs\u002Fgetting-started\u002Fcodebase","docs\u002F1.getting-started\u002F3.codebase","ZShip project structure: core apps and backend services.",{"title":41,"path":42,"stem":43,"framework":15,"description":44},"GitHub OAuth","\u002Fdocs\u002Fgetting-started\u002Fgithub-oauth","docs\u002F1.getting-started\u002F4.github-oauth","How to configure GitHub OAuth login for your ZShip project.",{"title":46,"path":47,"stem":48,"children":49,"framework":15,"description":15,"icon":92},"Deploy","\u002Fdocs\u002Fgetting-started\u002Fdeploy","docs\u002F1.getting-started\u002F5.deploy\u002F1.index",[50,52,57,62,67,72,77,82,87],{"title":46,"path":47,"stem":48,"framework":15,"description":51},"Deploy ZShip core: apps\u002Fweb-astro, apps\u002Fadmin, and 11 backend Workers.",{"title":53,"path":54,"stem":55,"framework":15,"description":56},"Dev Console","\u002Fdocs\u002Fgetting-started\u002Fdeploy\u002Fdev-console","docs\u002F1.getting-started\u002F5.deploy\u002F2.dev-console","Before deployment, get familiar with the built-in ZShip console so you remember fewer commands, switch folders less often, and miss fewer steps.",{"title":58,"path":59,"stem":60,"framework":15,"description":61},"Before You Start","\u002Fdocs\u002Fgetting-started\u002Fdeploy\u002Fbefore-start","docs\u002F1.getting-started\u002F5.deploy\u002F3.before-start","Preparation before deployment: accounts, source access strategy, local tools, and Wrangler login.",{"title":63,"path":64,"stem":65,"framework":15,"description":66},"Cloudflare","\u002Fdocs\u002Fgetting-started\u002Fdeploy\u002Fcloudflare","docs\u002F1.getting-started\u002F5.deploy\u002F4.cloudflare","One-click deployment: Dev Console creates D1\u002FKV\u002FR2, runs migrations, deploys Workers and frontend.",{"title":68,"path":69,"stem":70,"framework":15,"description":71},"Backend Workers","\u002Fdocs\u002Fgetting-started\u002Fdeploy\u002Fworkers","docs\u002F1.getting-started\u002F5.deploy\u002F5.workers","Use Dev Console to fill secrets, run remote migrations, and deploy the 11 backend Workers.",{"title":73,"path":74,"stem":75,"framework":15,"description":76},"Frontend Apps","\u002Fdocs\u002Fgetting-started\u002Fdeploy\u002Fpages","docs\u002F1.getting-started\u002F5.deploy\u002F6.pages","Use Dev Console to deploy apps\u002Fweb-astro as a Worker and apps\u002Fadmin as a Pages project.",{"title":78,"path":79,"stem":80,"framework":15,"description":81},"Domains & Env","\u002Fdocs\u002Fgetting-started\u002Fdeploy\u002Fdomains-env","docs\u002F1.getting-started\u002F5.deploy\u002F7.domains-env","Bind production domains, switch frontend variables to real online addresses, and understand how copied web apps should be wired.",{"title":83,"path":84,"stem":85,"framework":15,"description":86},"Initialize","\u002Fdocs\u002Fgetting-started\u002Fdeploy\u002Finitialize","docs\u002F1.getting-started\u002F5.deploy\u002F8.initialize","Log in to the admin, create the first project, and finish the core configuration for payments, AI, and site content.",{"title":88,"path":89,"stem":90,"framework":15,"description":91},"Launch Checks","\u002Fdocs\u002Fgetting-started\u002Fdeploy\u002Fchecks","docs\u002F1.getting-started\u002F5.deploy\u002F9.checks","Go-live checklist and fixes: Observability, CDN\u002FR2, email & webhooks, bindings, D1\u002FKV\u002FR2, auth, payments, AI.","i-lucide-cloud-upload",{"title":94,"path":95,"stem":96,"children":97,"framework":15,"description":15,"icon":126},"CLI","\u002Fdocs\u002Fgetting-started\u002Fcli","docs\u002F1.getting-started\u002F6.cli\u002F1.index",[98,100,104,109,113,117,121],{"title":94,"path":95,"stem":96,"framework":15,"description":99},"Deploy ZShip with manual terminal commands.",{"title":58,"path":101,"stem":102,"framework":15,"description":103},"\u002Fdocs\u002Fgetting-started\u002Fcli\u002Fbefore-start","docs\u002F1.getting-started\u002F6.cli\u002F2.before-start","Prerequisites for the CLI path: accounts, source access, local tools, and Wrangler login.",{"title":105,"path":106,"stem":107,"framework":15,"description":108},"Local Development","\u002Fdocs\u002Fgetting-started\u002Fcli\u002Flocal-dev","docs\u002F1.getting-started\u002F6.cli\u002F3.local-dev","Set up local development environment with manual commands: install deps, migrate D1, start services.",{"title":63,"path":110,"stem":111,"framework":15,"description":112},"\u002Fdocs\u002Fgetting-started\u002Fcli\u002Fcloudflare","docs\u002F1.getting-started\u002F6.cli\u002F4.cloudflare","Create Workers, D1 databases, KV namespace, and R2 bucket in Cloudflare using wrangler commands.",{"title":68,"path":114,"stem":115,"framework":15,"description":116},"\u002Fdocs\u002Fgetting-started\u002Fcli\u002Fworkers","docs\u002F1.getting-started\u002F6.cli\u002F5.workers","Deploy backend Workers using wrangler deploy. Fill secrets first, run remote migrations, then deploy in order.",{"title":73,"path":118,"stem":119,"framework":15,"description":120},"\u002Fdocs\u002Fgetting-started\u002Fcli\u002Fpages","docs\u002F1.getting-started\u002F6.cli\u002F6.pages","Deploy apps\u002Fweb-astro as a Cloudflare Worker and apps\u002Fadmin as a Cloudflare Pages project.",{"title":122,"path":123,"stem":124,"framework":15,"description":125},"create-zship","\u002Fdocs\u002Fgetting-started\u002Fcli\u002Fcreate-zship","docs\u002F1.getting-started\u002F6.cli\u002F7.create-zship","Scaffold a standalone Nuxt tenant frontend that connects to an existing ZShip backend with one command.","i-lucide-terminal",{"title":128,"path":129,"stem":130,"children":131,"framework":15,"description":15,"icon":174},"Integrations","\u002Fdocs\u002Fgetting-started\u002Fintegrations","docs\u002F1.getting-started\u002F7.integrations\u002F1.index",[132,134,139,144,149,154,159,164,169],{"title":128,"path":129,"stem":130,"framework":15,"description":133},"Core ZShip product integrations and backend service capabilities.",{"title":135,"path":136,"stem":137,"framework":15,"description":138},"Authentication","\u002Fdocs\u002Fgetting-started\u002Fintegrations\u002Fauth","docs\u002F1.getting-started\u002F7.integrations\u002F2.auth","User auth, OAuth (Google, GitHub), API keys. Backend: node1-auth-service.",{"title":140,"path":141,"stem":142,"framework":15,"description":143},"Payment","\u002Fdocs\u002Fgetting-started\u002Fintegrations\u002Fpayment","docs\u002F1.getting-started\u002F7.integrations\u002F3.payment","Pay channels, price plans, Stripe catalog fetch, project bindings, and localized pricing copy.",{"title":145,"path":146,"stem":147,"framework":15,"description":148},"Email","\u002Fdocs\u002Fgetting-started\u002Fintegrations\u002Femail","docs\u002F1.getting-started\u002F7.integrations\u002F4.email","Configure Resend and Cloudflare Email Service for ZShip, including sender domains, Workers, provider routing, testing, and rollback.",{"title":150,"path":151,"stem":152,"framework":15,"description":153},"Notify","\u002Fdocs\u002Fgetting-started\u002Fintegrations\u002Fnotify","docs\u002F1.getting-started\u002F7.integrations\u002F5.notify","Bark, Feishu, DingTalk. Backend: node4-notify-service.",{"title":155,"path":156,"stem":157,"framework":15,"description":158},"Storage","\u002Fdocs\u002Fgetting-started\u002Fintegrations\u002Fstorage","docs\u002F1.getting-started\u002F7.integrations\u002F6.storage","File upload, CDN. Backend: node6-cdn-service.",{"title":160,"path":161,"stem":162,"framework":15,"description":163},"AI","\u002Fdocs\u002Fgetting-started\u002Fintegrations\u002Fai","docs\u002F1.getting-started\u002F7.integrations\u002F7.ai","AI gateway, multi-model chat, sessions. Backend: node10-ai-service.",{"title":165,"path":166,"stem":167,"framework":15,"description":168},"Blog","\u002Fdocs\u002Fgetting-started\u002Fintegrations\u002Fblog","docs\u002F1.getting-started\u002F7.integrations\u002F8.blog","Blog CMS, posts, public API. Backend: node5-blog-service.",{"title":170,"path":171,"stem":172,"framework":15,"description":173},"Check-in","\u002Fdocs\u002Fgetting-started\u002Fintegrations\u002Fcheckin","docs\u002F1.getting-started\u002F7.integrations\u002F9.checkin","Check-in rules, rewards, daily limits. Backend: node9-checkin-service.","i-lucide-blocks",{"title":176,"path":177,"stem":178,"children":179,"framework":15,"description":15,"icon":192},"Customize","\u002Fdocs\u002Fgetting-started\u002Fcustomize","docs\u002F1.getting-started\u002F8.customize\u002F1.index",[180,182,187],{"title":176,"path":177,"stem":178,"framework":15,"description":181},"Adapt ZShip branding and language for your own product.",{"title":183,"path":184,"stem":185,"framework":15,"description":186},"Branding","\u002Fdocs\u002Fgetting-started\u002Fcustomize\u002Fbranding","docs\u002F1.getting-started\u002F8.customize\u002F2.branding","Site name, logo, colors, SEO. Config files and overrides.",{"title":188,"path":189,"stem":190,"framework":15,"description":191},"i18n","\u002Fdocs\u002Fgetting-started\u002Fcustomize\u002Fi18n","docs\u002F1.getting-started\u002F8.customize\u002F3.i18n","Multi-language support. Translation files and locale config.","i-lucide-palette",{"title":194,"path":195,"stem":196,"children":197,"framework":15,"description":15,"icon":220},"Develop","\u002Fdocs\u002Fgetting-started\u002Fdevelopment","docs\u002F1.getting-started\u002F9.development\u002F1.index",[198,200,205,210,215],{"title":194,"path":195,"stem":196,"framework":15,"description":199},"Extend ZShip with custom apps, admin workflows, and development skills.",{"title":201,"path":202,"stem":203,"framework":15,"description":204},"Development Skills","\u002Fdocs\u002Fgetting-started\u002Fdevelopment\u002Fskills","docs\u002F1.getting-started\u002F9.development\u002F2.skills","ZShip development skills guide: AI-powered tools for common development tasks.",{"title":206,"path":207,"stem":208,"framework":15,"description":209},"Custom Admin","\u002Fdocs\u002Fgetting-started\u002Fdevelopment\u002Fcustom-admin","docs\u002F1.getting-started\u002F9.development\u002F3.custom-admin","Extend the official admin in apps\u002Fadmin with Nuxt layers—do not fork packages\u002Fnuxt-admin-layer—so upstream UI updates never conflict with your code.",{"title":211,"path":212,"stem":213,"framework":15,"description":214},"Admin RBAC","\u002Fdocs\u002Fgetting-started\u002Fdevelopment\u002Fadmin-rbac","docs\u002F1.getting-started\u002F9.development\u002F4.admin-rbac","How ZShip admin permissions work (legacy secret vs operators), passwordless login (magic link & demo links), platform settings, permission keys, and scoped admin accounts.",{"title":216,"path":217,"stem":218,"framework":15,"description":219},"app.zship.ai","\u002Fdocs\u002Fgetting-started\u002Fdevelopment\u002Fapp-zship","docs\u002F1.getting-started\u002F9.development\u002F5.app-zship","What you can do on app.zship.ai: orders, licensing, delivery, downloads, and support.","i-lucide-code-xml","i-lucide-square-play",{"title":223,"path":224,"stem":225,"children":226,"framework":15,"description":15,"icon":229},"Components","\u002Fdocs\u002Fcomponents","docs\u002F2.components\u002F1.index",[227],{"title":223,"path":224,"stem":225,"framework":15,"description":228},"ZShip component store status.","i-lucide-package",{"title":231,"path":232,"stem":233,"children":234,"page":437},"Zh","\u002Fdocs\u002Fzh","docs\u002F8.zh",[235,431],{"title":236,"path":237,"stem":238,"children":239,"framework":15,"description":15,"icon":221},"快速开始","\u002Fdocs\u002Fzh\u002Fgetting-started","docs\u002F8.zh\u002F1.getting-started\u002F1.index",[240,242,253,258,263,267,312,343,389,406],{"title":236,"path":237,"stem":238,"framework":15,"description":241},"ZShip 概览：Cloudflare 原生多租户 AI SaaS 基础架构。",{"title":243,"path":244,"stem":245,"children":246,"framework":15,"description":15,"icon":29},"服务","\u002Fdocs\u002Fzh\u002Fgetting-started\u002Fservices","docs\u002F8.zh\u002F1.getting-started\u002F10.services\u002F1.index",[247,249],{"title":243,"path":244,"stem":245,"framework":15,"description":248},"可单独购买的可选服务：AI 提供商服务等。",{"title":25,"path":250,"stem":251,"framework":15,"description":252},"\u002Fdocs\u002Fzh\u002Fgetting-started\u002Fservices\u002Fai-provider","docs\u002F8.zh\u002F1.getting-started\u002F10.services\u002F2.ai-provider","统一接入 KIE、WaveSpeed AI；含测试、任务日志、统计、公开作品库与安全策略。",{"title":254,"path":255,"stem":256,"framework":15,"description":257},"注意事项","\u002Fdocs\u002Fzh\u002Fgetting-started\u002Fimportant-notes","docs\u002F8.zh\u002F1.getting-started\u002F2.important-notes","必须遵守的边界：不要直接改官方模板与官方后端服务。",{"title":259,"path":260,"stem":261,"framework":15,"description":262},"项目结构","\u002Fdocs\u002Fzh\u002Fgetting-started\u002Fcodebase","docs\u002F8.zh\u002F1.getting-started\u002F3.codebase","ZShip 核心交付的目录与职责。",{"title":41,"path":264,"stem":265,"framework":15,"description":266},"\u002Fdocs\u002Fzh\u002Fgetting-started\u002Fgithub-oauth","docs\u002F8.zh\u002F1.getting-started\u002F4.github-oauth","如何为 ZShip 项目配置 GitHub OAuth 登录。",{"title":268,"path":269,"stem":270,"children":271,"framework":15,"description":15,"icon":92},"部署","\u002Fdocs\u002Fzh\u002Fgetting-started\u002Fdeploy","docs\u002F8.zh\u002F1.getting-started\u002F5.deploy\u002F1.index",[272,274,278,283,287,292,297,302,307],{"title":268,"path":269,"stem":270,"framework":15,"description":273},"部署 ZShip 核心：apps\u002Fweb-astro、apps\u002Fadmin 及 11 个后端 Worker。",{"title":53,"path":275,"stem":276,"framework":15,"description":277},"\u002Fdocs\u002Fzh\u002Fgetting-started\u002Fdeploy\u002Fdev-console","docs\u002F8.zh\u002F1.getting-started\u002F5.deploy\u002F2.dev-console","在开始部署之前，先认识 ZShip 自带的图形化控制台，帮你少记命令、少切目录、少漏步骤。",{"title":279,"path":280,"stem":281,"framework":15,"description":282},"开始之前","\u002Fdocs\u002Fzh\u002Fgetting-started\u002Fdeploy\u002Fbefore-start","docs\u002F8.zh\u002F1.getting-started\u002F5.deploy\u002F3.before-start","部署前的准备工作：账号准备、源码获取方式选择、本地工具安装和 Wrangler 登录。",{"title":63,"path":284,"stem":285,"framework":15,"description":286},"\u002Fdocs\u002Fzh\u002Fgetting-started\u002Fdeploy\u002Fcloudflare","docs\u002F8.zh\u002F1.getting-started\u002F5.deploy\u002F4.cloudflare","一键部署：Dev Console 自动创建 D1\u002FKV\u002FR2、执行迁移、部署 Worker 和前端。",{"title":288,"path":289,"stem":290,"framework":15,"description":291},"后端 Workers","\u002Fdocs\u002Fzh\u002Fgetting-started\u002Fdeploy\u002Fworkers","docs\u002F8.zh\u002F1.getting-started\u002F5.deploy\u002F5.workers","使用 Dev Console 填写密钥、执行远程迁移并部署 11 个后端 Worker。",{"title":293,"path":294,"stem":295,"framework":15,"description":296},"前端应用","\u002Fdocs\u002Fzh\u002Fgetting-started\u002Fdeploy\u002Fpages","docs\u002F8.zh\u002F1.getting-started\u002F5.deploy\u002F6.pages","使用 Dev Console 将 apps\u002Fweb-astro 部署为 Worker，将 apps\u002Fadmin 部署为 Pages 项目。",{"title":298,"path":299,"stem":300,"framework":15,"description":301},"域名与环境变量","\u002Fdocs\u002Fzh\u002Fgetting-started\u002Fdeploy\u002Fdomains-env","docs\u002F8.zh\u002F1.getting-started\u002F5.deploy\u002F7.domains-env","为前端和后端绑定正式域名，理清 zship.app.json、服务环境变量与部署地址之间的关系。",{"title":303,"path":304,"stem":305,"framework":15,"description":306},"初始化","\u002Fdocs\u002Fzh\u002Fgetting-started\u002Fdeploy\u002Finitialize","docs\u002F8.zh\u002F1.getting-started\u002F5.deploy\u002F8.initialize","登录后台，创建 demo 项目，配置支付、AI 和其他模块，完成系统首次初始化。",{"title":308,"path":309,"stem":310,"framework":15,"description":311},"上线检查","\u002Fdocs\u002Fzh\u002Fgetting-started\u002Fdeploy\u002Fchecks","docs\u002F8.zh\u002F1.getting-started\u002F5.deploy\u002F9.checks","部署验收与排障：Observability、CDN\u002FR2、邮件与 Webhook、service binding、D1\u002FKV\u002FR2、登录、支付、AI 等。",{"title":94,"path":313,"stem":314,"children":315,"framework":15,"description":15,"icon":126},"\u002Fdocs\u002Fzh\u002Fgetting-started\u002Fcli","docs\u002F8.zh\u002F1.getting-started\u002F6.cli\u002F1.index",[316,318,322,327,331,335,339],{"title":94,"path":313,"stem":314,"framework":15,"description":317},"使用手动命令部署 ZShip。",{"title":279,"path":319,"stem":320,"framework":15,"description":321},"\u002Fdocs\u002Fzh\u002Fgetting-started\u002Fcli\u002Fbefore-start","docs\u002F8.zh\u002F1.getting-started\u002F6.cli\u002F2.before-start","CLI 路径的前置条件：账号、源码获取方式、本地工具、Wrangler 登录。",{"title":323,"path":324,"stem":325,"framework":15,"description":326},"本地开发","\u002Fdocs\u002Fzh\u002Fgetting-started\u002Fcli\u002Flocal-dev","docs\u002F8.zh\u002F1.getting-started\u002F6.cli\u002F3.local-dev","用手动命令搭建本地开发环境：安装依赖、D1 迁移、启动服务。",{"title":63,"path":328,"stem":329,"framework":15,"description":330},"\u002Fdocs\u002Fzh\u002Fgetting-started\u002Fcli\u002Fcloudflare","docs\u002F8.zh\u002F1.getting-started\u002F6.cli\u002F4.cloudflare","用 wrangler 命令在 Cloudflare 创建 Worker、D1 数据库、KV namespace 和 R2 bucket。",{"title":288,"path":332,"stem":333,"framework":15,"description":334},"\u002Fdocs\u002Fzh\u002Fgetting-started\u002Fcli\u002Fworkers","docs\u002F8.zh\u002F1.getting-started\u002F6.cli\u002F5.workers","用 wrangler deploy 部署后端 Worker。先填 secrets、执行远程迁移，再按顺序部署。",{"title":293,"path":336,"stem":337,"framework":15,"description":338},"\u002Fdocs\u002Fzh\u002Fgetting-started\u002Fcli\u002Fpages","docs\u002F8.zh\u002F1.getting-started\u002F6.cli\u002F6.pages","将 apps\u002Fweb-astro 部署为 Cloudflare Worker，将 apps\u002Fadmin 部署为 Cloudflare Pages 项目。",{"title":122,"path":340,"stem":341,"framework":15,"description":342},"\u002Fdocs\u002Fzh\u002Fgetting-started\u002Fcli\u002Fcreate-zship","docs\u002F8.zh\u002F1.getting-started\u002F6.cli\u002F7.create-zship","一条命令脚手架出一个独立的 Nuxt 租户前端，接入现有 ZShip 后端。",{"title":344,"path":345,"stem":346,"children":347,"framework":15,"description":15,"icon":174},"集成","\u002Fdocs\u002Fzh\u002Fgetting-started\u002Fintegrations","docs\u002F8.zh\u002F1.getting-started\u002F7.integrations\u002F1.index",[348,350,355,360,365,370,375,379,384],{"title":344,"path":345,"stem":346,"framework":15,"description":349},"ZShip 核心产品集成与后端服务能力。",{"title":351,"path":352,"stem":353,"framework":15,"description":354},"认证","\u002Fdocs\u002Fzh\u002Fgetting-started\u002Fintegrations\u002Fauth","docs\u002F8.zh\u002F1.getting-started\u002F7.integrations\u002F2.auth","用户认证、OAuth（Google、GitHub）、API Key。后端：node1-auth-service。",{"title":356,"path":357,"stem":358,"framework":15,"description":359},"支付","\u002Fdocs\u002Fzh\u002Fgetting-started\u002Fintegrations\u002Fpayment","docs\u002F8.zh\u002F1.getting-started\u002F7.integrations\u002F3.payment","支付渠道、价格方案、Stripe 拉取目录、项目绑定与多语言展示。",{"title":361,"path":362,"stem":363,"framework":15,"description":364},"邮件","\u002Fdocs\u002Fzh\u002Fgetting-started\u002Fintegrations\u002Femail","docs\u002F8.zh\u002F1.getting-started\u002F7.integrations\u002F4.email","为 ZShip 配置 Resend 与 Cloudflare Email Service，包含发件域名、Worker、Provider 路由、测试和回滚。",{"title":366,"path":367,"stem":368,"framework":15,"description":369},"通知","\u002Fdocs\u002Fzh\u002Fgetting-started\u002Fintegrations\u002Fnotify","docs\u002F8.zh\u002F1.getting-started\u002F7.integrations\u002F5.notify","Bark、飞书、钉钉。后端：node4-notify-service。",{"title":371,"path":372,"stem":373,"framework":15,"description":374},"存储","\u002Fdocs\u002Fzh\u002Fgetting-started\u002Fintegrations\u002Fstorage","docs\u002F8.zh\u002F1.getting-started\u002F7.integrations\u002F6.storage","文件上传、CDN。后端：node6-cdn-service。",{"title":160,"path":376,"stem":377,"framework":15,"description":378},"\u002Fdocs\u002Fzh\u002Fgetting-started\u002Fintegrations\u002Fai","docs\u002F8.zh\u002F1.getting-started\u002F7.integrations\u002F7.ai","AI 网关、多模型对话、会话。后端：node10-ai-service。",{"title":380,"path":381,"stem":382,"framework":15,"description":383},"博客","\u002Fdocs\u002Fzh\u002Fgetting-started\u002Fintegrations\u002Fblog","docs\u002F8.zh\u002F1.getting-started\u002F7.integrations\u002F8.blog","博客 CMS、文章、公开 API。后端：node5-blog-service。",{"title":385,"path":386,"stem":387,"framework":15,"description":388},"签到","\u002Fdocs\u002Fzh\u002Fgetting-started\u002Fintegrations\u002Fcheckin","docs\u002F8.zh\u002F1.getting-started\u002F7.integrations\u002F9.checkin","签到规则、奖励、每日限制。后端：node9-checkin-service。",{"title":390,"path":391,"stem":392,"children":393,"framework":15,"description":15,"icon":192},"定制","\u002Fdocs\u002Fzh\u002Fgetting-started\u002Fcustomize","docs\u002F8.zh\u002F1.getting-started\u002F8.customize\u002F1.index",[394,396,401],{"title":390,"path":391,"stem":392,"framework":15,"description":395},"把 ZShip 调整为你的品牌和语言。",{"title":397,"path":398,"stem":399,"framework":15,"description":400},"品牌定制","\u002Fdocs\u002Fzh\u002Fgetting-started\u002Fcustomize\u002Fbranding","docs\u002F8.zh\u002F1.getting-started\u002F8.customize\u002F2.branding","站点名称、Logo、颜色、SEO。配置文件与覆盖。",{"title":402,"path":403,"stem":404,"framework":15,"description":405},"多语言","\u002Fdocs\u002Fzh\u002Fgetting-started\u002Fcustomize\u002Fi18n","docs\u002F8.zh\u002F1.getting-started\u002F8.customize\u002F3.i18n","多语言支持。翻译文件与 locale 配置。",{"title":407,"path":408,"stem":409,"children":410,"framework":15,"description":15,"icon":220},"开发","\u002Fdocs\u002Fzh\u002Fgetting-started\u002Fdevelopment","docs\u002F8.zh\u002F1.getting-started\u002F9.development\u002F1.index",[411,413,418,423,427],{"title":407,"path":408,"stem":409,"framework":15,"description":412},"扩展 ZShip 的应用、管理后台与开发技能。",{"title":414,"path":415,"stem":416,"framework":15,"description":417},"开发技能","\u002Fdocs\u002Fzh\u002Fgetting-started\u002Fdevelopment\u002Fskills","docs\u002F8.zh\u002F1.getting-started\u002F9.development\u002F2.skills","ZShip 开发技能指南：用于常见开发任务的 AI 驱动工具。",{"title":419,"path":420,"stem":421,"framework":15,"description":422},"自定义管理后台","\u002Fdocs\u002Fzh\u002Fgetting-started\u002Fdevelopment\u002Fcustom-admin","docs\u002F8.zh\u002F1.getting-started\u002F9.development\u002F3.custom-admin","在 apps\u002Fadmin 中通过 Nuxt 层扩展官方管理端，请勿修改 packages\u002Fnuxt-admin-layer，以便上游 UI 更新与您的业务代码互不冲突。",{"title":211,"path":424,"stem":425,"framework":15,"description":426},"\u002Fdocs\u002Fzh\u002Fgetting-started\u002Fdevelopment\u002Fadmin-rbac","docs\u002F8.zh\u002F1.getting-started\u002F9.development\u002F4.admin-rbac","ZShip 管理端权限模型（密钥超级管理员 vs 操作员）、无密码登录（邮件魔法链接与客户演示链接）、管理平台设置、权限串说明与分级管理员账号。",{"title":216,"path":428,"stem":429,"framework":15,"description":430},"\u002Fdocs\u002Fzh\u002Fgetting-started\u002Fdevelopment\u002Fapp-zship","docs\u002F8.zh\u002F1.getting-started\u002F9.development\u002F5.app-zship","app.zship.ai 上可用的购后能力：订单、授权、交付、下载与支持。",{"title":223,"path":432,"stem":433,"children":434,"framework":15,"description":15,"icon":229},"\u002Fdocs\u002Fzh\u002Fcomponents","docs\u002F8.zh\u002F2.components\u002F1.index",[435],{"title":223,"path":432,"stem":433,"framework":15,"description":436},"ZShip 组件商店状态。",false,{"id":439,"title":122,"body":440,"description":125,"extension":849,"framework":15,"index":437,"links":15,"meta":850,"navigation":15,"path":123,"seo":852,"stem":124,"__hash__":853},"docs\u002Fdocs\u002F1.getting-started\u002F6.cli\u002F7.create-zship.md",{"type":441,"value":442,"toc":842},"minimark",[443,463,488,493,539,549,553,556,581,585,653,662,666,766,802,806,809,828,838],[444,445,446,449,450,454,455,458,459,462],"p",{},[447,448,122],"code",{}," is the official scaffolding CLI. It generates a ",[451,452,453],"strong",{},"standalone Nuxt tenant frontend"," — a trimmed monorepo (",[447,456,457],{},"apps\u002Fweb"," plus its workspace package closure) that connects to an existing, shared multi-tenant ZShip backend. Data stays isolated by ",[447,460,461],{},"app_key",".",[464,465,468],"callout",{"color":466,"icon":467},"warning","i-lucide-triangle-alert",[444,469,470,473,474,477,478,481,482,487],{},[451,471,472],{},"Not yet published to npm."," ",[447,475,476],{},"pnpm create zship@latest"," and ",[447,479,480],{},"npx create-zship@latest"," will only work after the package is released. The commands below are the planned post-publish entry points — see ",[483,484,486],"a",{"href":485},"#use-from-the-monorepo-today","Use from the monorepo"," for what works today.",[489,490,492],"h2",{"id":491},"usage-after-npm-publish","Usage (after npm publish)",[494,495,500],"pre",{"className":496,"code":497,"language":498,"meta":499,"style":499},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pnpm create zship@latest my-saas\n# or\nnpx create-zship@latest my-saas\n","bash","",[447,501,502,521,528],{"__ignoreMap":499},[503,504,507,511,515,518],"span",{"class":505,"line":506},"line",1,[503,508,510],{"class":509},"sBMFI","pnpm",[503,512,514],{"class":513},"sfazB"," create",[503,516,517],{"class":513}," zship@latest",[503,519,520],{"class":513}," my-saas\n",[503,522,524],{"class":505,"line":523},2,[503,525,527],{"class":526},"sHwdD","# or\n",[503,529,531,534,537],{"class":505,"line":530},3,[503,532,533],{"class":509},"npx",[503,535,536],{"class":513}," create-zship@latest",[503,538,520],{"class":513},[444,540,541,542,545,546,462],{},"The interactive prompts ask for the app key, site name, and domain, then generate the project, run ",[447,543,544],{},"pnpm install",", and optionally ",[447,547,548],{},"git init",[489,550,552],{"id":551},"use-from-the-monorepo-today","Use from the monorepo (today)",[444,554,555],{},"Until the package is published, run the CLI directly from a ZShip monorepo checkout:",[494,557,559],{"className":496,"code":558,"language":498,"meta":499,"style":499},"node packages\u002Fcreate-zship\u002Fbin\u002Fcreate-zship.js my-saas --yes --skip-install --skip-git\n",[447,560,561],{"__ignoreMap":499},[503,562,563,566,569,572,575,578],{"class":505,"line":506},[503,564,565],{"class":509},"node",[503,567,568],{"class":513}," packages\u002Fcreate-zship\u002Fbin\u002Fcreate-zship.js",[503,570,571],{"class":513}," my-saas",[503,573,574],{"class":513}," --yes",[503,576,577],{"class":513}," --skip-install",[503,579,580],{"class":513}," --skip-git\n",[489,582,584],{"id":583},"what-you-get","What you get",[586,587,588,601],"table",{},[589,590,591],"thead",{},[592,593,594,598],"tr",{},[595,596,597],"th",{},"Included",[595,599,600],{},"Not included",[602,603,604,615,627,642],"tbody",{},[592,605,606,613],{},[607,608,609,610,612],"td",{},"Nuxt app (",[447,611,457],{},") + workspace package closure",[607,614,68],{},[592,616,617,624],{},[607,618,619,620,623],{},"Parameterized ",[447,621,622],{},"appKey"," \u002F brand \u002F wrangler name",[607,625,626],{},"Admin tenant registration",[592,628,629,639],{},[607,630,631,634,635,638],{},[447,632,633],{},".env.example",", ",[447,636,637],{},"doctor",", README",[607,640,641],{},"Cloudflare resource provisioning",[592,643,644,651],{},[607,645,646,648,649],{},[447,647,544],{}," + optional ",[447,650,548],{},[607,652,46],{},[444,654,655,656,659,660,462],{},"The backend mode is fixed to ",[451,657,658],{},"existing",": your new frontend talks to the shared multi-tenant ZShip services, and all data is scoped by ",[447,661,461],{},[489,663,665],{"id":664},"flags","Flags",[494,667,669],{"className":496,"code":668,"language":498,"meta":499,"style":499},"create-zship my-saas \\\n  --template nuxt \\\n  --app-key my-saas \\\n  --site-name \"My SaaS\" \\\n  --domain my-saas.example \\\n  --backend existing \\\n  --port 4323 \\\n  --skip-install \\\n  --skip-git\n",[447,670,671,681,691,700,718,729,740,752,760],{"__ignoreMap":499},[503,672,673,675,677],{"class":505,"line":506},[503,674,122],{"class":509},[503,676,571],{"class":513},[503,678,680],{"class":679},"sTEyZ"," \\\n",[503,682,683,686,689],{"class":505,"line":523},[503,684,685],{"class":513},"  --template",[503,687,688],{"class":513}," nuxt",[503,690,680],{"class":679},[503,692,693,696,698],{"class":505,"line":530},[503,694,695],{"class":513},"  --app-key",[503,697,571],{"class":513},[503,699,680],{"class":679},[503,701,703,706,710,713,716],{"class":505,"line":702},4,[503,704,705],{"class":513},"  --site-name",[503,707,709],{"class":708},"sMK4o"," \"",[503,711,712],{"class":513},"My SaaS",[503,714,715],{"class":708},"\"",[503,717,680],{"class":679},[503,719,721,724,727],{"class":505,"line":720},5,[503,722,723],{"class":513},"  --domain",[503,725,726],{"class":513}," my-saas.example",[503,728,680],{"class":679},[503,730,732,735,738],{"class":505,"line":731},6,[503,733,734],{"class":513},"  --backend",[503,736,737],{"class":513}," existing",[503,739,680],{"class":679},[503,741,743,746,750],{"class":505,"line":742},7,[503,744,745],{"class":513},"  --port",[503,747,749],{"class":748},"sbssI"," 4323",[503,751,680],{"class":679},[503,753,755,758],{"class":505,"line":754},8,[503,756,757],{"class":513},"  --skip-install",[503,759,680],{"class":679},[503,761,763],{"class":505,"line":762},9,[503,764,765],{"class":513},"  --skip-git\n",[767,768,769,776,790,796],"ul",{},[770,771,772,775],"li",{},[447,773,774],{},"--yes"," — accept defaults, skip prompts",[770,777,778,781,782,785,786,781,788],{},[447,779,780],{},"--skip-install"," \u002F ",[447,783,784],{},"--skip-git"," — skip ",[447,787,544],{},[447,789,548],{},[770,791,792,795],{},[447,793,794],{},"--source-root \u003Cpath>"," — copy from a local ZShip monorepo",[770,797,798,801],{},[447,799,800],{},"--template-dir \u003Cpath>"," — copy from a packed template directory",[489,803,805],{"id":804},"next-steps","Next steps",[444,807,808],{},"Scaffolding only creates the frontend. To go live you still need to:",[810,811,812,818,823],"ol",{},[770,813,814,815,817],{},"Register the project (",[447,816,461],{},") in the Admin Console",[770,819,820,821],{},"Configure environment variables from ",[447,822,633],{},[770,824,825,826],{},"Deploy the frontend to Cloudflare — see ",[483,827,73],{"href":118},[444,829,830,831,834,835,462],{},"For the full tenant onboarding flow, read the repository guide ",[447,832,833],{},"docs\u002FNEW_PROJECT_GUIDE.md","; for CLI internals and the publish checklist, see ",[447,836,837],{},"packages\u002Fcreate-zship\u002FREADME.md",[839,840,841],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":499,"searchDepth":523,"depth":523,"links":843},[844,845,846,847,848],{"id":491,"depth":523,"text":492},{"id":551,"depth":523,"text":552},{"id":583,"depth":523,"text":584},{"id":664,"depth":523,"text":665},{"id":804,"depth":523,"text":805},"md",{"lastUpdated":851},"2026-07-31",{"title":122,"description":125},"BvbbWOseLvVzQyMAL8DgJNpPw5Zgv7wd5UdIw-tHpkI",{"data":855,"body":856},{},{"type":857,"children":858},"root",[859],{"type":860,"tag":444,"props":861,"children":862},"element",{},[863],{"type":864,"value":125},"text",1785489848846]