[{"data":1,"prerenderedAt":982},["ShallowReactive",2],{"navigation":3,"-docs-getting-started-deploy":438,"-docs-getting-started-deploy-description":971},[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":46,"body":440,"description":51,"extension":966,"framework":15,"index":437,"links":15,"meta":967,"navigation":15,"path":47,"seo":969,"stem":48,"__hash__":970},"docs\u002Fdocs\u002F1.getting-started\u002F5.deploy\u002F1.index.md",{"type":441,"value":442,"toc":946},"minimark",[443,452,484,492,497,504,507,512,515,530,544,553,557,559,570,576,583,586,589,593,596,600,603,608,611,622,625,636,640,642,650,652,660,662,673,677,680,687,690,701,704,712,715,730,734,737,802,806,810,852,856,893,897],[444,445,446,447,451],"p",{},"This guide covers deployment of the ",[448,449,450],"strong",{},"core delivery"," only:",[453,454,455,471],"ul",{},[456,457,458,461,462,466,467,470],"li",{},[448,459,460],{},"Frontend",": ",[463,464,465],"code",{},"apps\u002Fweb-astro"," (user site), ",[463,468,469],{},"apps\u002Fadmin"," (admin console)",[456,472,473,461,476,479,480,483],{},[448,474,475],{},"Backend",[463,477,478],{},"node1-auth"," ~ ",[463,481,482],{},"node11-email"," (11 Workers)",[444,485,486,487,491],{},"Value-added services (e.g. AI Provider Service) are not included. See ",[488,489,490],"a",{"href":19},"Value-Added Services",".",[493,494,496],"h2",{"id":495},"choose-your-path","Choose your path",[444,498,499,500,503],{},"In the documentation sidebar, every step for both tracks is listed under ",[448,501,502],{},"Deployment Guide",". Pick one track below and follow only those pages in order.",[444,505,506],{},"ZShip supports two ways to set up local development and deploy to Cloudflare:",[508,509,511],"h3",{"id":510},"cli-manual-commands","CLI (manual commands)",[444,513,514],{},"Use this path if:",[453,516,517,524,527],{},[456,518,519,520,523],{},"You are on a ",[448,521,522],{},"base\u002Fminimal setup"," without Dev Console",[456,525,526],{},"You prefer the command line or need to script deployments (CI, automation)",[456,528,529],{},"You want full control over each step",[444,531,532,533,536,537,536,540,543],{},"You will run ",[463,534,535],{},"pnpm install",", ",[463,538,539],{},"wrangler d1 create",[463,541,542],{},"wrangler deploy",", and similar commands manually in your terminal.",[444,545,546,549,550],{},[448,547,548],{},"Start here:"," ",[488,551,552],{"href":101},"CLI: Before You Start",[508,554,556],{"id":555},"dev-console-ui","Dev Console (UI)",[444,558,514],{},[453,560,561,564,567],{},[456,562,563],{},"You have the full ZShip template with Dev Console",[456,565,566],{},"You prefer a graphical interface for local startup and deployment",[456,568,569],{},"You want fewer commands to remember and fewer steps to miss",[444,571,532,572,575],{},[463,573,574],{},"pnpm dev:console"," once, then use the browser UI for setup, migrations, service startup, and Cloudflare deployment.",[444,577,578,549,580],{},[448,579,548],{},[488,581,582],{"href":54},"Meet the Dev Console",[584,585],"hr",{},[444,587,588],{},"Please read your chosen path in order the first time through.",[493,590,592],{"id":591},"two-ways-to-get-the-source-code","Two ways to get the source code",[444,594,595],{},"When users receive this template, there are usually two approaches.",[508,597,599],{"id":598},"option-1-github-fork","Option 1: GitHub Fork",[444,601,602],{},"This means:",[453,604,605],{},[456,606,607],{},"The user directly forks the official repository into their own GitHub account or organization.",[444,609,610],{},"Advantages:",[453,612,613,616,619],{},[456,614,615],{},"It keeps the upstream relationship with the official repository.",[456,617,618],{},"It is easier to manually sync future template updates.",[456,620,621],{},"It fits the common workflow where the official template keeps evolving and users build their own product on top of it.",[444,623,624],{},"Disadvantages:",[453,626,627,630,633],{},[456,628,629],{},"It does not update automatically.",[456,631,632],{},"Users still need to sync upstream changes by hand.",[456,634,635],{},"If a user changes a lot locally, future syncs can create conflicts.",[508,637,639],{"id":638},"option-2-copy-the-code-and-create-a-new-repository","Option 2: Copy the code and create a new repository",[444,641,602],{},[453,643,644,647],{},[456,645,646],{},"The user downloads the official codebase.",[456,648,649],{},"They then create a brand-new Git repository under their own account.",[444,651,610],{},[453,653,654,657],{},[456,655,656],{},"The repository history looks cleaner.",[456,658,659],{},"Some teams prefer the feeling that this is fully their own project from day one.",[444,661,624],{},[453,663,664,667,670],{},[456,665,666],{},"There is no upstream relationship to the official template.",[456,668,669],{},"Future official updates will not have a ready-made sync path.",[456,671,672],{},"Keeping up with template improvements usually means manual compare-and-copy work.",[493,674,676],{"id":675},"recommended-approach","Recommended approach",[444,678,679],{},"We recommend users start with:",[453,681,682],{},[456,683,684],{},[463,685,686],{},"GitHub Fork",[444,688,689],{},"Why:",[453,691,692,695,698],{},[456,693,694],{},"The official template will continue to evolve.",[456,696,697],{},"A fork at least preserves a clean path for manually syncing future official changes.",[456,699,700],{},"For most users, long-term maintenance cost is lower than copying the repo into a totally separate history.",[444,702,703],{},"But this point must be crystal clear:",[453,705,706],{},[456,707,708,711],{},[463,709,710],{},"Fork"," does not mean you automatically receive official updates.",[444,713,714],{},"In practice that means:",[453,716,717,720,723],{},[456,718,719],{},"The official template can keep moving.",[456,721,722],{},"Users will not receive those changes automatically.",[456,724,725,726,729],{},"Users must sync ",[463,727,728],{},"upstream"," manually.",[493,731,733],{"id":732},"what-this-guide-covers","What this guide covers",[444,735,736],{},"This guide covers the Cloudflare deployment path for:",[453,738,739,744,749,754,759,764,769,774,779,784,789,794,798],{},[456,740,741],{},[463,742,743],{},"backend\u002Fnode1-auth-service",[456,745,746],{},[463,747,748],{},"backend\u002Fnode2-support-service",[456,750,751],{},[463,752,753],{},"backend\u002Fnode3-pay-service",[456,755,756],{},[463,757,758],{},"backend\u002Fnode4-notify-service",[456,760,761],{},[463,762,763],{},"backend\u002Fnode5-blog-service",[456,765,766],{},[463,767,768],{},"backend\u002Fnode6-cdn-service",[456,770,771],{},[463,772,773],{},"backend\u002Fnode7-site-service",[456,775,776],{},[463,777,778],{},"backend\u002Fnode8-prompt-service",[456,780,781],{},[463,782,783],{},"backend\u002Fnode9-checkin-service",[456,785,786],{},[463,787,788],{},"backend\u002Fnode10-ai-service",[456,790,791],{},[463,792,793],{},"backend\u002Fnode11-email-service",[456,795,796],{},[463,797,465],{},[456,799,800],{},[463,801,469],{},[493,803,805],{"id":804},"reading-order-by-track","Reading order by track",[508,807,809],{"id":808},"if-you-use-the-cli","If you use the CLI",[811,812,813,817,822,827,832,837,842,847],"ol",{},[456,814,815],{},[488,816,552],{"href":101},[456,818,819],{},[488,820,821],{"href":106},"CLI: Local Development",[456,823,824],{},[488,825,826],{"href":110},"CLI: Prepare Cloudflare Resources",[456,828,829],{},[488,830,831],{"href":114},"CLI: Deploy Backend Workers",[456,833,834],{},[488,835,836],{"href":118},"CLI: Deploy Frontend Apps",[456,838,839],{},[488,840,841],{"href":79},"Bind Domains and Environment Variables",[456,843,844],{},[488,845,846],{"href":84},"Initialize Your System",[456,848,849],{},[488,850,851],{"href":89},"Launch Checks and Common Errors",[508,853,855],{"id":854},"if-you-use-dev-console","If you use Dev Console",[811,857,858,862,866,871,876,881,885,889],{},[456,859,860],{},[488,861,582],{"href":54},[456,863,864],{},[488,865,58],{"href":59},[456,867,868],{},[488,869,870],{"href":64},"Prepare Cloudflare Resources",[456,872,873],{},[488,874,875],{"href":69},"Deploy Backend Workers",[456,877,878],{},[488,879,880],{"href":74},"Deploy Frontend Apps",[456,882,883],{},[488,884,841],{"href":79},[456,886,887],{},[488,888,846],{"href":84},[456,890,891],{},[488,892,851],{"href":89},[493,894,896],{"id":895},"troubleshooting-and-ops-index","Troubleshooting and ops index",[898,899,900,913],"table",{},[901,902,903],"thead",{},[904,905,906,910],"tr",{},[907,908,909],"th",{},"Topic",[907,911,912],{},"Doc",[914,915,916,926,936],"tbody",{},[904,917,918,922],{},[919,920,921],"td",{},"Launch checklist, Observability, CDN\u002FR2, email & webhooks, common errors",[919,923,924],{},[488,925,88],{"href":89},[904,927,928,931],{},[919,929,930],{},"Dev Console vs Cloudflare Dashboard",[919,932,933],{},[488,934,935],{"href":54},"Meet the Dev Console §4",[904,937,938,941],{},[919,939,940],{},"Secrets and repo safety",[919,942,943],{},[488,944,945],{"href":32},"Important Notes — Security",{"title":947,"searchDepth":948,"depth":948,"links":949},"",2,[950,955,959,960,961,965],{"id":495,"depth":948,"text":496,"children":951},[952,954],{"id":510,"depth":953,"text":511},3,{"id":555,"depth":953,"text":556},{"id":591,"depth":948,"text":592,"children":956},[957,958],{"id":598,"depth":953,"text":599},{"id":638,"depth":953,"text":639},{"id":675,"depth":948,"text":676},{"id":732,"depth":948,"text":733},{"id":804,"depth":948,"text":805,"children":962},[963,964],{"id":808,"depth":953,"text":809},{"id":854,"depth":953,"text":855},{"id":895,"depth":948,"text":896},"md",{"lastUpdated":968},"2026-03-22",{"title":46,"description":51},"9TWB14LBz9D7fRgniw_-tZlIIC10CBsFBk3CtTEl8qM",{"data":972,"body":973},{},{"type":974,"children":975},"root",[976],{"type":977,"tag":444,"props":978,"children":979},"element",{},[980],{"type":981,"value":51},"text",1785489848846]