[{"data":1,"prerenderedAt":2536},["ShallowReactive",2],{"navigation_docs":3,"-developer-experience-developer-docs-getting-started":1185,"-developer-experience-developer-docs-getting-started-surround":2531},[4,231,468,507,728,818,902,959,1181],{"title":5,"path":6,"stem":7,"children":8,"page":78},"Getting Started","/getting-started","01.getting-started",[9,220,225],{"title":10,"order":11,"path":12,"stem":13,"children":14,"page":78},"Admin Onboarding: Getting Started",1,"/getting-started/admin-onboarding-getting-started","01.getting-started/01.admin-onboarding-getting-started",[15,19,23,27,34,38,45,79,128,141,152,156,169,173,182,199,207,213],{"title":16,"path":17,"stem":18},"Setting the Stage: How Predictability becomes Reality in DevStride","/getting-started/admin-onboarding-getting-started/setting-the-stage","01.getting-started/01.admin-onboarding-getting-started/01.setting-the-stage",{"title":20,"path":21,"stem":22},"Admin Onboarding - Getting Started","/getting-started/admin-onboarding-getting-started/admin-onboarding-guide","01.getting-started/01.admin-onboarding-getting-started/02.admin-onboarding-guide",{"title":24,"path":25,"stem":26},"Basic Terms","/getting-started/admin-onboarding-getting-started/basic-terms","01.getting-started/01.admin-onboarding-getting-started/03.basic-terms",{"title":28,"path":29,"stem":30,"children":31},"Setting Up Users and Teams","/getting-started/admin-onboarding-getting-started/setting-up-users-and-teams","01.getting-started/01.admin-onboarding-getting-started/04.setting-up-users-and-teams/index",[32],{"title":33,"path":29,"stem":30},"Admin Onboarding - Setting up  Users and Teams",{"title":35,"path":36,"stem":37},"Admin Onboarding - Configuring Your Work Model","/getting-started/admin-onboarding-getting-started/configuring-your-work-model","01.getting-started/01.admin-onboarding-getting-started/05.configuring-your-work-model",{"title":39,"path":40,"stem":41,"children":42},"Map Value: WorkStreams","/getting-started/admin-onboarding-getting-started/map-value-workstreams","01.getting-started/01.admin-onboarding-getting-started/06.map-value-workstreams/index",[43],{"title":44,"path":40,"stem":41},"Admin Onboarding: Understanding Workstreams",{"title":46,"path":47,"stem":48,"children":49,"page":78},"Items","/getting-started/admin-onboarding-getting-started/items","01.getting-started/01.admin-onboarding-getting-started/07.items",[50,54,61,67,74],{"title":51,"path":52,"stem":53},"Setting up Your Item Type Hierarchy","/getting-started/admin-onboarding-getting-started/items/setting-up-item-type-hierarchy","01.getting-started/01.admin-onboarding-getting-started/07.items/01.setting-up-item-type-hierarchy",{"title":55,"path":56,"stem":57,"children":58},"Items: Setting Up Custom Fields","/getting-started/admin-onboarding-getting-started/items/setting-up-custom-fields","01.getting-started/01.admin-onboarding-getting-started/07.items/02.setting-up-custom-fields/index",[59],{"title":60,"path":56,"stem":57},"Admin Onboarding - Setting up Custom Fields",{"title":62,"path":63,"stem":64,"children":65},"Admin Onboarding - Setting up Tags","/getting-started/admin-onboarding-getting-started/items/setting-up-tags","01.getting-started/01.admin-onboarding-getting-started/07.items/03.setting-up-tags/index",[66],{"title":62,"path":63,"stem":64},{"title":68,"path":69,"stem":70,"children":71},"Items: Creating and Managing Forms","/getting-started/admin-onboarding-getting-started/items/creating-and-managing-forms","01.getting-started/01.admin-onboarding-getting-started/07.items/04.creating-and-managing-forms/index",[72],{"title":73,"path":69,"stem":70},"Admin Onboarding - Creating and Managing Forms",{"title":75,"path":76,"stem":77},"Create Items with AI","/getting-started/admin-onboarding-getting-started/items/create-items-with-ai","01.getting-started/01.admin-onboarding-getting-started/07.items/05.create-items-with-ai",false,{"title":80,"path":81,"stem":82,"children":83,"page":78},"Item Workspace Tour","/getting-started/admin-onboarding-getting-started/item-workspace-tour","01.getting-started/01.admin-onboarding-getting-started/08.item-workspace-tour",[84,88,92,96,100,104,108,112,116,120,124],{"title":85,"path":86,"stem":87},"Admin Onboarding - Item Workspace Header","/getting-started/admin-onboarding-getting-started/item-workspace-tour/header","01.getting-started/01.admin-onboarding-getting-started/08.item-workspace-tour/01.header",{"title":89,"path":90,"stem":91},"Admin Onboarding - Item Workspace Tabs","/getting-started/admin-onboarding-getting-started/item-workspace-tour/tabs","01.getting-started/01.admin-onboarding-getting-started/08.item-workspace-tour/02.tabs",{"title":93,"path":94,"stem":95},"Admin Onboarding - Item Workspace Quick Links","/getting-started/admin-onboarding-getting-started/item-workspace-tour/quick-links","01.getting-started/01.admin-onboarding-getting-started/08.item-workspace-tour/03.quick-links",{"title":97,"path":98,"stem":99},"Admin Onboarding - Item Workspace - Right Bar: Team through Status","/getting-started/admin-onboarding-getting-started/item-workspace-tour/right-bar-team-through-status","01.getting-started/01.admin-onboarding-getting-started/08.item-workspace-tour/04.right-bar-team-through-status",{"title":101,"path":102,"stem":103},"Admin Onboarding - Item Workspace - Right Bar: Point Estimates","/getting-started/admin-onboarding-getting-started/item-workspace-tour/right-bar-point-estimates","01.getting-started/01.admin-onboarding-getting-started/08.item-workspace-tour/05.right-bar-point-estimates",{"title":105,"path":106,"stem":107},"Admin Onboarding - Item Workspace - Right Bar: Time Estimates","/getting-started/admin-onboarding-getting-started/item-workspace-tour/right-bar-time-estimates","01.getting-started/01.admin-onboarding-getting-started/08.item-workspace-tour/06.right-bar-time-estimates",{"title":109,"path":110,"stem":111},"Admin Onboarding - Item Workspace -Right Bar: Best Practice time estimates","/getting-started/admin-onboarding-getting-started/item-workspace-tour/right-bar-best-practice-time-estimates","01.getting-started/01.admin-onboarding-getting-started/08.item-workspace-tour/07.right-bar-best-practice-time-estimates",{"title":113,"path":114,"stem":115},"Admin Onboarding - Item Workspace - Right Bar: Time Spent","/getting-started/admin-onboarding-getting-started/item-workspace-tour/right-bar-time-spent","01.getting-started/01.admin-onboarding-getting-started/08.item-workspace-tour/08.right-bar-time-spent",{"title":117,"path":118,"stem":119},"Admin Onboarding - Item Workspace - Right Bar: Priority","/getting-started/admin-onboarding-getting-started/item-workspace-tour/right-bar-priority","01.getting-started/01.admin-onboarding-getting-started/08.item-workspace-tour/09.right-bar-priority",{"title":121,"path":122,"stem":123},"Admin Onboarding - Item Workspace - Right Bar: Start Dates and Due Dates","/getting-started/admin-onboarding-getting-started/item-workspace-tour/right-bar-start-dates-and-due-dates","01.getting-started/01.admin-onboarding-getting-started/08.item-workspace-tour/10.right-bar-start-dates-and-due-dates",{"title":125,"path":126,"stem":127},"Admin Onboarding - Item Workspace - Right Bar: Progress Tracking","/getting-started/admin-onboarding-getting-started/item-workspace-tour/right-bar-progress-tracking","01.getting-started/01.admin-onboarding-getting-started/08.item-workspace-tour/11.right-bar-progress-tracking",{"title":129,"path":130,"stem":131,"children":132,"page":78},"Creating and Using Statuses","/getting-started/admin-onboarding-getting-started/creating-and-using-statuses","01.getting-started/01.admin-onboarding-getting-started/09.creating-and-using-statuses",[133,137],{"title":134,"path":135,"stem":136},"Admin Onboarding - Setting Up Workflow Statuses","/getting-started/admin-onboarding-getting-started/creating-and-using-statuses/setting-up-workflow-statuses","01.getting-started/01.admin-onboarding-getting-started/09.creating-and-using-statuses/01.setting-up-workflow-statuses",{"title":138,"path":139,"stem":140},"Admin Onboarding - Create Custom Status Collections","/getting-started/admin-onboarding-getting-started/creating-and-using-statuses/create-custom-status-collections","01.getting-started/01.admin-onboarding-getting-started/09.creating-and-using-statuses/02.create-custom-status-collections",{"title":142,"path":143,"stem":144,"children":145},"Populating and Managing WorkStreams","/getting-started/admin-onboarding-getting-started/populating-and-managing-workstreams","01.getting-started/01.admin-onboarding-getting-started/10.populating-and-managing-workstreams/index",[146,148],{"title":147,"path":143,"stem":144},"Admin Onboarding - Populating and Managing Workstreams",{"title":149,"path":150,"stem":151},"Import Templates","/getting-started/admin-onboarding-getting-started/populating-and-managing-workstreams/import-templates","01.getting-started/01.admin-onboarding-getting-started/10.populating-and-managing-workstreams/01.import-templates",{"title":153,"path":154,"stem":155},"Boards: Managing Workflow and Statuses","/getting-started/admin-onboarding-getting-started/boards-managing-workflow-and-statuses","01.getting-started/01.admin-onboarding-getting-started/11.boards-managing-workflow-and-statuses",{"title":157,"path":158,"stem":159,"children":160,"page":78},"Creating Cadences","/getting-started/admin-onboarding-getting-started/creating-cadences","01.getting-started/01.admin-onboarding-getting-started/12.creating-cadences",[161,165],{"title":162,"path":163,"stem":164},"Admin Onboarding - Organizing the When: Understanding Planning Cadences","/getting-started/admin-onboarding-getting-started/creating-cadences/understanding-planning-cadences","01.getting-started/01.admin-onboarding-getting-started/12.creating-cadences/01.understanding-planning-cadences",{"title":166,"path":167,"stem":168},"Admin Onboarding - Setting Up Cadences and Timeboxes","/getting-started/admin-onboarding-getting-started/creating-cadences/setting-up-cadences-and-timeboxes","01.getting-started/01.admin-onboarding-getting-started/12.creating-cadences/02.setting-up-cadences-and-timeboxes",{"title":170,"path":171,"stem":172},"Track Progress - Gantt Charts","/getting-started/admin-onboarding-getting-started/track-progress-gantt-charts","01.getting-started/01.admin-onboarding-getting-started/13.track-progress-gantt-charts",{"title":174,"path":175,"stem":176,"children":177,"page":78},"Using AI in DevStride","/getting-started/admin-onboarding-getting-started/using-ai-in-devstride","01.getting-started/01.admin-onboarding-getting-started/14.using-ai-in-devstride",[178],{"title":179,"path":180,"stem":181},"Creating Items with AI","/getting-started/admin-onboarding-getting-started/using-ai-in-devstride/create-items-with-ai","01.getting-started/01.admin-onboarding-getting-started/14.using-ai-in-devstride/01.create-items-with-ai",{"title":183,"path":184,"stem":185,"children":186,"page":78},"More on Permissions","/getting-started/admin-onboarding-getting-started/permissions","01.getting-started/01.admin-onboarding-getting-started/15.permissions",[187,191,195],{"title":188,"path":189,"stem":190},"Understanding Permissions","/getting-started/admin-onboarding-getting-started/permissions/understanding-permissions","01.getting-started/01.admin-onboarding-getting-started/15.permissions/01.understanding-permissions",{"title":192,"path":193,"stem":194},"Roles & Permissions","/getting-started/admin-onboarding-getting-started/permissions/roles-and-permissions","01.getting-started/01.admin-onboarding-getting-started/15.permissions/02.roles-and-permissions",{"title":196,"path":197,"stem":198},"Sharing & Access","/getting-started/admin-onboarding-getting-started/permissions/sharing-and-access","01.getting-started/01.admin-onboarding-getting-started/15.permissions/03.sharing-and-access",{"title":200,"path":201,"stem":202,"children":203,"page":78},"API Keys","/getting-started/admin-onboarding-getting-started/api-keys","01.getting-started/01.admin-onboarding-getting-started/16.api-keys",[204],{"title":200,"path":205,"stem":206},"/getting-started/admin-onboarding-getting-started/api-keys/api-keys","01.getting-started/01.admin-onboarding-getting-started/16.api-keys/01.api-keys",{"title":208,"path":209,"stem":210,"children":211},"Pulling it all together: Planned Value to Delivery","/getting-started/admin-onboarding-getting-started/overall-flow-and-best-practices","01.getting-started/01.admin-onboarding-getting-started/17.overall-flow-and-best-practices/index",[212],{"title":208,"path":209,"stem":210},{"title":214,"path":215,"stem":216,"children":217},"Best Practices for Project Management in DevStride","/getting-started/admin-onboarding-getting-started/best-practices-for-project-management","01.getting-started/01.admin-onboarding-getting-started/18.best-practices-for-project-management/index",[218],{"title":219,"path":215,"stem":216},"Handling incomplete items from Sprint to Sprint",{"title":24,"path":221,"stem":222,"children":223},"/getting-started/basic-terms","01.getting-started/02.basic-terms/index",[224],{"title":24,"path":221,"stem":222},{"title":226,"path":227,"stem":228,"children":229},"Keyboard Shortcuts","/getting-started/keyboard-shortcuts","01.getting-started/03.keyboard-shortcuts/index",[230],{"title":226,"path":227,"stem":228},{"title":232,"path":233,"stem":234,"children":235,"page":78},"Major Modules","/major-modules","02.major-modules",[236,294,348,369,427],{"title":237,"order":238,"path":239,"stem":240,"children":241,"page":78},"Map Value: Workstreams and Work Items",2,"/major-modules/workstreams-and-work-items","02.major-modules/01.workstreams-and-work-items",[242,246,250,253,257,261,265,269,272],{"title":243,"path":244,"stem":245},"Creating Items","/major-modules/workstreams-and-work-items/creating-work-items","02.major-modules/01.workstreams-and-work-items/01.creating-work-items",{"title":247,"path":248,"stem":249},"The Items Table","/major-modules/workstreams-and-work-items/manage-items-table","02.major-modules/01.workstreams-and-work-items/02.manage-items-table",{"title":179,"path":251,"stem":252},"/major-modules/workstreams-and-work-items/ai-item-creation","02.major-modules/01.workstreams-and-work-items/03.ai-item-creation",{"title":254,"path":255,"stem":256},"Published Lists","/major-modules/workstreams-and-work-items/published-lists","02.major-modules/01.workstreams-and-work-items/04.published-lists",{"title":258,"path":259,"stem":260},"Using the Map","/major-modules/workstreams-and-work-items/using-the-map","02.major-modules/01.workstreams-and-work-items/05.using-the-map",{"title":262,"path":263,"stem":264},"Dependency Graph","/major-modules/workstreams-and-work-items/dependency-graph","02.major-modules/01.workstreams-and-work-items/06.dependency-graph",{"title":266,"path":267,"stem":268},"Workstream & Item Permissions","/major-modules/workstreams-and-work-items/workstream-and-item-permissions","02.major-modules/01.workstreams-and-work-items/07.workstream-and-item-permissions",{"title":149,"path":270,"stem":271},"/major-modules/workstreams-and-work-items/import-templates","02.major-modules/01.workstreams-and-work-items/08.import-templates",{"title":273,"order":274,"path":275,"stem":276,"children":277,"page":78},"Workspace Capabilities",8,"/major-modules/workstreams-and-work-items/workspace-capabilities","02.major-modules/01.workstreams-and-work-items/09.workspace-capabilities",[278,282,286,290],{"title":279,"path":280,"stem":281},"Explore the Workspace","/major-modules/workstreams-and-work-items/workspace-capabilities/explore-the-workspace","02.major-modules/01.workstreams-and-work-items/09.workspace-capabilities/01.explore-the-workspace",{"title":283,"path":284,"stem":285},"Workspace Editor & Collaboration","/major-modules/workstreams-and-work-items/workspace-capabilities/workspace-sidebar","02.major-modules/01.workstreams-and-work-items/09.workspace-capabilities/02.workspace-sidebar",{"title":287,"path":288,"stem":289},"Themes & Appearance","/major-modules/workstreams-and-work-items/workspace-capabilities/themes-and-appearance","02.major-modules/01.workstreams-and-work-items/09.workspace-capabilities/03.themes-and-appearance",{"title":291,"path":292,"stem":293},"Getting Help & Support","/major-modules/workstreams-and-work-items/workspace-capabilities/getting-help-and-support","02.major-modules/01.workstreams-and-work-items/09.workspace-capabilities/04.getting-help-and-support",{"title":295,"order":296,"path":297,"stem":298,"children":299,"page":78},"Plan Delivery: Boards",3,"/major-modules/boards","02.major-modules/02.boards",[300,304,308,312,316,320,324,328,332,336,340,344],{"title":301,"path":302,"stem":303},"How DevStride manages the When: Perpetual vs. Cycle-based Boards","/major-modules/boards/how-devstride-manages-the-when","02.major-modules/02.boards/01.how-devstride-manages-the-when",{"title":305,"path":306,"stem":307},"Working Group Folders: Organizing the Who of the work","/major-modules/boards/working-group-folders","02.major-modules/02.boards/02.working-group-folders",{"title":309,"path":310,"stem":311},"Understanding Board Views","/major-modules/boards/understanding-board-views","02.major-modules/02.boards/03.understanding-board-views",{"title":313,"path":314,"stem":315},"Import Stories and Epics into Boards","/major-modules/boards/import-stories-and-epics-into-boards","02.major-modules/02.boards/04.import-stories-and-epics-into-boards",{"title":317,"path":318,"stem":319},"Adding a Folder","/major-modules/boards/adding-a-folder","02.major-modules/02.boards/05.adding-a-folder",{"title":321,"path":322,"stem":323},"Manage and Edit Dependencies","/major-modules/boards/manage-and-edit-dependencies","02.major-modules/02.boards/06.manage-and-edit-dependencies",{"title":325,"path":326,"stem":327},"Creating Subfolders in DevStride","/major-modules/boards/creating-subfolders-in-devstride","02.major-modules/02.boards/07.creating-subfolders-in-devstride",{"title":329,"path":330,"stem":331},"Setting up and Using Perpetual Boards","/major-modules/boards/setting-up-and-using-perpetual-boards","02.major-modules/02.boards/08.setting-up-and-using-perpetual-boards",{"title":333,"path":334,"stem":335},"Using Cycle Boards","/major-modules/boards/using-cycle-boards","02.major-modules/02.boards/09.using-cycle-boards",{"title":337,"path":338,"stem":339},"Track and Move Work with Board Views","/major-modules/boards/track-and-move-work-with-board-views","02.major-modules/02.boards/10.track-and-move-work-with-board-views",{"title":341,"path":342,"stem":343},"Boards and WIP Limiters","/major-modules/boards/boards-and-wip-limiters","02.major-modules/02.boards/11.boards-and-wip-limiters",{"title":345,"path":346,"stem":347},"Board & Folder Permissions","/major-modules/boards/board-and-folder-permissions","02.major-modules/02.boards/12.board-and-folder-permissions",{"title":349,"path":350,"stem":351,"children":352,"page":78},"Track Progress: Gantts","/major-modules/track-progress-gantts","02.major-modules/03.track-progress-gantts",[353,357,361,365],{"title":354,"path":355,"stem":356},"Track Progress: Setting Up Gantt Charts","/major-modules/track-progress-gantts/setting-up-gantt-charts","02.major-modules/03.track-progress-gantts/01.setting-up-gantt-charts",{"title":358,"path":359,"stem":360},"Viewing Gantt Charts","/major-modules/track-progress-gantts/viewing-gantt-charts","02.major-modules/03.track-progress-gantts/02.viewing-gantt-charts",{"title":362,"path":363,"stem":364},"Using Gantt Charts: Navigating the timeline","/major-modules/track-progress-gantts/navigating-the-timeline","02.major-modules/03.track-progress-gantts/03.navigating-the-timeline",{"title":366,"path":367,"stem":368},"Using Gantt Charts: Navigating the table","/major-modules/track-progress-gantts/navigating-the-table","02.major-modules/03.track-progress-gantts/04.navigating-the-table",{"title":370,"order":371,"path":372,"stem":373,"children":374,"page":78},"Measure Performance: Reports",4,"/major-modules/measure-performance-reports","02.major-modules/04.measure-performance-reports",[375,379,383,387,391,395,399,403,407,411,415,419,423],{"title":376,"path":377,"stem":378},"Reports Overview","/major-modules/measure-performance-reports/viewing-optimization","02.major-modules/04.measure-performance-reports/01.viewing-optimization",{"title":380,"path":381,"stem":382},"Using AI for powerful reports","/major-modules/measure-performance-reports/using-ai-for-powerful-reports","02.major-modules/04.measure-performance-reports/02.using-ai-for-powerful-reports",{"title":384,"path":385,"stem":386},"Report Customization Options","/major-modules/measure-performance-reports/report-filters-and-options","02.major-modules/04.measure-performance-reports/03.report-filters-and-options",{"title":388,"path":389,"stem":390},"What is Current Progress?","/major-modules/measure-performance-reports/what-is-current-progress","02.major-modules/04.measure-performance-reports/04.what-is-current-progress",{"title":392,"path":393,"stem":394},"What is Trending Progress","/major-modules/measure-performance-reports/what-is-trending-progress","02.major-modules/04.measure-performance-reports/05.what-is-trending-progress",{"title":396,"path":397,"stem":398},"What is Cycle Time?","/major-modules/measure-performance-reports/what-is-cycle-time","02.major-modules/04.measure-performance-reports/06.what-is-cycle-time",{"title":400,"path":401,"stem":402},"What is Throughput?","/major-modules/measure-performance-reports/what-is-throughput","02.major-modules/04.measure-performance-reports/07.what-is-throughput",{"title":404,"path":405,"stem":406},"What is Cumulative Flow?","/major-modules/measure-performance-reports/what-is-cumulative-flow","02.major-modules/04.measure-performance-reports/08.what-is-cumulative-flow",{"title":408,"path":409,"stem":410},"What is Velocity?","/major-modules/measure-performance-reports/what-is-velocity","02.major-modules/04.measure-performance-reports/09.what-is-velocity",{"title":412,"path":413,"stem":414},"What is Burn Up?","/major-modules/measure-performance-reports/what-is-burn-up","02.major-modules/04.measure-performance-reports/10.what-is-burn-up",{"title":416,"path":417,"stem":418},"What is Burn Down?","/major-modules/measure-performance-reports/what-is-burn-down","02.major-modules/04.measure-performance-reports/11.what-is-burn-down",{"title":420,"path":421,"stem":422},"What is User Time Completed?","/major-modules/measure-performance-reports/what-is-user-time-completed","02.major-modules/04.measure-performance-reports/12.what-is-user-time-completed",{"title":424,"path":425,"stem":426},"What is Churn?","/major-modules/measure-performance-reports/what-is-churn","02.major-modules/04.measure-performance-reports/13.what-is-churn",{"title":428,"order":274,"path":429,"stem":430,"children":431,"page":78},"Service Desk","/major-modules/service-desk","02.major-modules/05.service-desk",[432,436,440,444,448,452,456,460,464],{"title":433,"path":434,"stem":435},"Overview","/major-modules/service-desk/overview","02.major-modules/05.service-desk/01.overview",{"title":437,"path":438,"stem":439},"Enabling Service Desk","/major-modules/service-desk/enabling-service-desk","02.major-modules/05.service-desk/02.enabling-service-desk",{"title":441,"path":442,"stem":443},"Email Channels & Setup","/major-modules/service-desk/email-channels","02.major-modules/05.service-desk/03.email-channels",{"title":445,"path":446,"stem":447},"Requesters & Companies","/major-modules/service-desk/requesters-and-companies","02.major-modules/05.service-desk/04.requesters-and-companies",{"title":449,"path":450,"stem":451},"Working a Ticket","/major-modules/service-desk/working-a-ticket","02.major-modules/05.service-desk/05.working-a-ticket",{"title":453,"path":454,"stem":455},"Request Forms","/major-modules/service-desk/request-forms","02.major-modules/05.service-desk/06.request-forms",{"title":457,"path":458,"stem":459},"The Suspended Queue","/major-modules/service-desk/suspended-messages","02.major-modules/05.service-desk/07.suspended-messages",{"title":461,"path":462,"stem":463},"Finding & Filtering Tickets","/major-modules/service-desk/finding-and-filtering-tickets","02.major-modules/05.service-desk/08.finding-and-filtering-tickets",{"title":465,"path":466,"stem":467},"Permissions","/major-modules/service-desk/permissions","02.major-modules/05.service-desk/09.permissions",{"title":469,"path":470,"stem":471,"children":472,"page":78},"Personal Workspace","/personal-workspace","03.personal-workspace",[473,479,493,504],{"title":474,"path":475,"stem":476,"children":477},"My Work","/personal-workspace/my-work","03.personal-workspace/01.my-work/index",[478],{"title":474,"path":475,"stem":476},{"title":480,"order":481,"path":482,"stem":483,"children":484,"page":78},"Notifications",7,"/personal-workspace/notifications","03.personal-workspace/02.notifications",[485,489],{"title":486,"path":487,"stem":488},"Notifications in DevStride","/personal-workspace/notifications/overview-of-notification-options","03.personal-workspace/02.notifications/01.overview-of-notification-options",{"title":490,"path":491,"stem":492},"Customizing Notification Settings for Individuals and Teams","/personal-workspace/notifications/customizing-notification-settings-for-individuals-and-teams","03.personal-workspace/02.notifications/02.customizing-notification-settings-for-individuals-and-teams",{"title":494,"path":495,"stem":496,"children":497,"page":78},"My Account","/personal-workspace/my-account","03.personal-workspace/03.my-account",[498,501],{"title":433,"path":499,"stem":500},"/personal-workspace/my-account/overview","03.personal-workspace/03.my-account/01.overview",{"title":200,"path":502,"stem":503},"/personal-workspace/my-account/api-keys","03.personal-workspace/03.my-account/02.api-keys",{"title":226,"path":505,"stem":506},"/personal-workspace/keyboard-shortcuts","03.personal-workspace/04.keyboard-shortcuts",{"title":508,"path":509,"stem":510,"children":511,"page":78},"Workspace Administration","/workspace-administration","04.workspace-administration",[512,532,542,635,648],{"title":513,"path":514,"stem":515,"children":516,"page":78},"Manage Items Module","/workspace-administration/manage-items","04.workspace-administration/01.manage-items",[517,520,524,528],{"title":433,"path":518,"stem":519},"/workspace-administration/manage-items/overview","04.workspace-administration/01.manage-items/01.overview",{"title":521,"path":522,"stem":523},"Finding & Filtering Items","/workspace-administration/manage-items/finding-and-filtering-items","04.workspace-administration/01.manage-items/02.finding-and-filtering-items",{"title":525,"path":526,"stem":527},"Creating & Sharing Views","/workspace-administration/manage-items/creating-and-sharing-views","04.workspace-administration/01.manage-items/03.creating-and-sharing-views",{"title":529,"path":530,"stem":531},"Item Hierarchy","/workspace-administration/manage-items/item-hierarchy","04.workspace-administration/01.manage-items/04.item-hierarchy",{"title":533,"order":534,"path":535,"stem":536,"children":537,"page":78},"Automate Workflows",5,"/workspace-administration/automations","04.workspace-administration/02.automations",[538],{"title":539,"path":540,"stem":541},"Setting Up Basic Automations","/workspace-administration/automations/setting-up-basic-automations","04.workspace-administration/02.automations/01.setting-up-basic-automations",{"title":543,"order":544,"path":545,"stem":546,"children":547,"page":78},"Configure Settings",6,"/workspace-administration/settings","04.workspace-administration/03.settings",[548,561,598,607,631],{"title":549,"path":550,"stem":551,"children":552,"page":78},"Organization","/workspace-administration/settings/organization","04.workspace-administration/03.settings/01.organization",[553,557],{"title":554,"path":555,"stem":556},"Org Configuration","/workspace-administration/settings/organization/org-profile","04.workspace-administration/03.settings/01.organization/01.org-profile",{"title":558,"path":559,"stem":560},"Users, Roles & MFA","/workspace-administration/settings/organization/users-roles-and-mfa","04.workspace-administration/03.settings/01.organization/02.users-roles-and-mfa",{"title":562,"path":563,"stem":564,"children":565,"page":78},"Data Model","/workspace-administration/settings/data-model","04.workspace-administration/03.settings/02.data-model",[566,570,574,578,582,586,590,594],{"title":567,"path":568,"stem":569},"Cadences","/workspace-administration/settings/data-model/cadences","04.workspace-administration/03.settings/02.data-model/01.cadences",{"title":571,"path":572,"stem":573},"Item Types","/workspace-administration/settings/data-model/item-types","04.workspace-administration/03.settings/02.data-model/02.item-types",{"title":575,"path":576,"stem":577},"Tags","/workspace-administration/settings/data-model/tags","04.workspace-administration/03.settings/02.data-model/03.tags",{"title":579,"path":580,"stem":581},"Custom Fields","/workspace-administration/settings/data-model/custom-fields","04.workspace-administration/03.settings/02.data-model/04.custom-fields",{"title":583,"path":584,"stem":585},"Priority Levels","/workspace-administration/settings/data-model/priority-levels","04.workspace-administration/03.settings/02.data-model/05.priority-levels",{"title":587,"path":588,"stem":589},"Effort Points and Time Estimation","/workspace-administration/settings/data-model/effort-points-and-time-estimation","04.workspace-administration/03.settings/02.data-model/06.effort-points-and-time-estimation",{"title":591,"path":592,"stem":593},"Statuses and WIP Limiters","/workspace-administration/settings/data-model/statuses-and-wip-limiters","04.workspace-administration/03.settings/02.data-model/07.statuses-and-wip-limiters",{"title":595,"path":596,"stem":597},"Customizing the Item Drawer","/workspace-administration/settings/data-model/customizing-the-item-drawer","04.workspace-administration/03.settings/02.data-model/08.customizing-the-item-drawer",{"title":599,"path":600,"stem":601,"children":602,"page":78},"Forms","/workspace-administration/settings/forms","04.workspace-administration/03.settings/03.forms",[603],{"title":604,"path":605,"stem":606},"Item Request Forms","/workspace-administration/settings/forms/item-request-forms","04.workspace-administration/03.settings/03.forms/item-request-forms",{"title":608,"path":609,"stem":610,"children":611,"page":78},"Integrations","/workspace-administration/settings/integrations","04.workspace-administration/03.settings/04.integrations",[612,616,620,624,628],{"title":613,"path":614,"stem":615},"GitHub","/workspace-administration/settings/integrations/github","04.workspace-administration/03.settings/04.integrations/01.github",{"title":617,"path":618,"stem":619},"Connect AI & the MCP Server","/workspace-administration/settings/integrations/connect-ai-and-mcp","04.workspace-administration/03.settings/04.integrations/02.connect-ai-and-mcp",{"title":621,"path":622,"stem":623},"Database Access for BI Tools","/workspace-administration/settings/integrations/database-access","04.workspace-administration/03.settings/04.integrations/03.database-access",{"title":625,"path":626,"stem":627},"Jira Integration","/workspace-administration/settings/integrations/jira","04.workspace-administration/03.settings/04.integrations/04.jira",{"title":200,"path":629,"stem":630},"/workspace-administration/settings/integrations/api-keys","04.workspace-administration/03.settings/04.integrations/05.api-keys",{"title":632,"path":633,"stem":634},"Subscription & Billing","/workspace-administration/settings/subscription-and-billing","04.workspace-administration/03.settings/05.subscription-and-billing",{"title":465,"path":636,"stem":637,"children":638,"page":78},"/workspace-administration/permissions","04.workspace-administration/04.permissions",[639,642,645],{"title":188,"path":640,"stem":641},"/workspace-administration/permissions/understanding-permissions","04.workspace-administration/04.permissions/01.understanding-permissions",{"title":192,"path":643,"stem":644},"/workspace-administration/permissions/roles-and-permissions","04.workspace-administration/04.permissions/02.roles-and-permissions",{"title":196,"path":646,"stem":647},"/workspace-administration/permissions/sharing-and-access","04.workspace-administration/04.permissions/03.sharing-and-access",{"title":649,"order":650,"path":651,"stem":652,"children":653,"page":78},"Filters",10,"/workspace-administration/filters","04.workspace-administration/05.filters",[654,657,660,664,668,672,676,679,683,687,707],{"title":474,"path":655,"stem":656},"/workspace-administration/filters/my-work","04.workspace-administration/05.filters/01.my-work",{"title":480,"path":658,"stem":659},"/workspace-administration/filters/notifications","04.workspace-administration/05.filters/02.notifications",{"title":661,"path":662,"stem":663},"Workstreams","/workspace-administration/filters/workstreams","04.workspace-administration/05.filters/03.workstreams",{"title":665,"path":666,"stem":667},"Cycles","/workspace-administration/filters/cycles","04.workspace-administration/05.filters/04.cycles",{"title":669,"path":670,"stem":671},"Boards","/workspace-administration/filters/boards","04.workspace-administration/05.filters/05.boards",{"title":673,"path":674,"stem":675},"Gantt","/workspace-administration/filters/gantt","04.workspace-administration/05.filters/06.gantt",{"title":46,"path":677,"stem":678},"/workspace-administration/filters/items","04.workspace-administration/05.filters/07.items",{"title":680,"path":681,"stem":682},"Reports","/workspace-administration/filters/reports","04.workspace-administration/05.filters/08.reports",{"title":684,"path":685,"stem":686},"Automations","/workspace-administration/filters/automations","04.workspace-administration/05.filters/09.automations",{"title":688,"path":689,"stem":690,"children":691,"page":78},"Sort ","/workspace-administration/filters/sort","04.workspace-administration/05.filters/10.sort",[692,695,698,701,704],{"title":474,"path":693,"stem":694},"/workspace-administration/filters/sort/my-work","04.workspace-administration/05.filters/10.sort/01.my-work",{"title":661,"path":696,"stem":697},"/workspace-administration/filters/sort/workstreams","04.workspace-administration/05.filters/10.sort/02.workstreams",{"title":665,"path":699,"stem":700},"/workspace-administration/filters/sort/cycles","04.workspace-administration/05.filters/10.sort/03.cycles",{"title":669,"path":702,"stem":703},"/workspace-administration/filters/sort/boards","04.workspace-administration/05.filters/10.sort/04.boards",{"title":46,"path":705,"stem":706},"/workspace-administration/filters/sort/items","04.workspace-administration/05.filters/10.sort/05.items",{"title":708,"path":709,"stem":710,"children":711,"page":78},"Options","/workspace-administration/filters/options","04.workspace-administration/05.filters/11.options",[712,715,718,722,725],{"title":474,"path":713,"stem":714},"/workspace-administration/filters/options/my-work","04.workspace-administration/05.filters/11.options/01.my-work",{"title":661,"path":716,"stem":717},"/workspace-administration/filters/options/workstreams","04.workspace-administration/05.filters/11.options/02.workstreams",{"title":719,"path":720,"stem":721},"Cycle","/workspace-administration/filters/options/cycle","04.workspace-administration/05.filters/11.options/03.cycle",{"title":669,"path":723,"stem":724},"/workspace-administration/filters/options/boards","04.workspace-administration/05.filters/11.options/04.boards",{"title":46,"path":726,"stem":727},"/workspace-administration/filters/options/items","04.workspace-administration/05.filters/11.options/05.items",{"title":729,"path":730,"stem":731,"children":732,"page":78},"Planning Concepts & Use Cases","/planning-concepts-and-use-cases","05.planning-concepts-and-use-cases",[733,789],{"title":734,"order":735,"path":736,"stem":737,"children":738,"page":78},"Understanding Project Planning Tools",9,"/planning-concepts-and-use-cases/project-planning-tools","05.planning-concepts-and-use-cases/01.project-planning-tools",[739,772],{"title":740,"path":741,"stem":742,"children":743,"page":78},"Gantt Charts","/planning-concepts-and-use-cases/project-planning-tools/gantt-charts","05.planning-concepts-and-use-cases/01.project-planning-tools/gantt-charts",[744,748,752,756,760,764,768],{"title":745,"path":746,"stem":747},"Gantt Charts Basics","/planning-concepts-and-use-cases/project-planning-tools/gantt-charts/gantt-charts-basics","05.planning-concepts-and-use-cases/01.project-planning-tools/gantt-charts/01.gantt-charts-basics",{"title":749,"path":750,"stem":751},"Create New Gantt","/planning-concepts-and-use-cases/project-planning-tools/gantt-charts/create-new-gantt","05.planning-concepts-and-use-cases/01.project-planning-tools/gantt-charts/02.create-new-gantt",{"title":753,"path":754,"stem":755},"Add to Gantt","/planning-concepts-and-use-cases/project-planning-tools/gantt-charts/add-to-gantt","05.planning-concepts-and-use-cases/01.project-planning-tools/gantt-charts/03.add-to-gantt",{"title":757,"path":758,"stem":759},"Gantt Charts Toolbar","/planning-concepts-and-use-cases/project-planning-tools/gantt-charts/gantt-charts-toolbar","05.planning-concepts-and-use-cases/01.project-planning-tools/gantt-charts/04.gantt-charts-toolbar",{"title":761,"path":762,"stem":763},"Scenario Planning","/planning-concepts-and-use-cases/project-planning-tools/gantt-charts/scenario-planning","05.planning-concepts-and-use-cases/01.project-planning-tools/gantt-charts/05.scenario-planning",{"title":765,"path":766,"stem":767},"Tips for Effective Gantt Chart Planning","/planning-concepts-and-use-cases/project-planning-tools/gantt-charts/tips-for-effective-gantt-chart-planning","05.planning-concepts-and-use-cases/01.project-planning-tools/gantt-charts/06.tips-for-effective-gantt-chart-planning",{"title":769,"path":770,"stem":771},"Link Mode","/planning-concepts-and-use-cases/project-planning-tools/gantt-charts/link-mode","05.planning-concepts-and-use-cases/01.project-planning-tools/gantt-charts/07.link-mode",{"title":773,"path":774,"stem":775,"children":776,"page":78},"Kanban Boards","/planning-concepts-and-use-cases/project-planning-tools/kanban-boards","05.planning-concepts-and-use-cases/01.project-planning-tools/kanban-boards",[777,781,785],{"title":778,"path":779,"stem":780},"Setting Up Your Kanban Board","/planning-concepts-and-use-cases/project-planning-tools/kanban-boards/setting-up-your-kanban-board","05.planning-concepts-and-use-cases/01.project-planning-tools/kanban-boards/01.setting-up-your-kanban-board",{"title":782,"path":783,"stem":784},"Using Kanban for Workflow Visualization","/planning-concepts-and-use-cases/project-planning-tools/kanban-boards/using-kanban-for-workflow-visualization","05.planning-concepts-and-use-cases/01.project-planning-tools/kanban-boards/02.using-kanban-for-workflow-visualization",{"title":786,"path":787,"stem":788},"Kanban Best Practices","/planning-concepts-and-use-cases/project-planning-tools/kanban-boards/kanban-best-practices","05.planning-concepts-and-use-cases/01.project-planning-tools/kanban-boards/03.kanban-best-practices",{"title":790,"order":791,"path":792,"stem":793,"children":794,"page":78},"Use Cases",12,"/planning-concepts-and-use-cases/use-cases","05.planning-concepts-and-use-cases/02.use-cases",[795,798,802,806,810,814],{"title":740,"path":796,"stem":797},"/planning-concepts-and-use-cases/use-cases/gantt-charts","05.planning-concepts-and-use-cases/02.use-cases/01.gantt-charts",{"title":799,"path":800,"stem":801},"Plan a Sprint","/planning-concepts-and-use-cases/use-cases/plan-a-sprint","05.planning-concepts-and-use-cases/02.use-cases/02.plan-a-sprint",{"title":803,"path":804,"stem":805},"Conduct a Standup","/planning-concepts-and-use-cases/use-cases/conduct-a-standup","05.planning-concepts-and-use-cases/02.use-cases/03.conduct-a-standup",{"title":807,"path":808,"stem":809},"Manage Cadences","/planning-concepts-and-use-cases/use-cases/manage-cadences","05.planning-concepts-and-use-cases/02.use-cases/04.manage-cadences",{"title":811,"path":812,"stem":813},"Customizing Item Types","/planning-concepts-and-use-cases/use-cases/customizing-item-types","05.planning-concepts-and-use-cases/02.use-cases/05.customizing-item-types",{"title":815,"path":816,"stem":817},"Backlog Refinement","/planning-concepts-and-use-cases/use-cases/backlog-refinement","05.planning-concepts-and-use-cases/02.use-cases/06.backlog-refinement",{"title":819,"path":820,"stem":821,"children":822,"page":78},"Integrations & Extensibility","/integrations-and-extensibility","06.integrations-and-extensibility",[823,844],{"title":824,"path":825,"stem":826,"children":827,"page":78},"DevStride MCP Server","/integrations-and-extensibility/devstride-mcp-server","06.integrations-and-extensibility/01.devstride-mcp-server",[828,832,836,840],{"title":829,"path":830,"stem":831},"What Is the DevStride MCP Server?","/integrations-and-extensibility/devstride-mcp-server/what-is-the-devstride-mcp-server","06.integrations-and-extensibility/01.devstride-mcp-server/01.what-is-the-devstride-mcp-server",{"title":833,"path":834,"stem":835},"Setting Up Your Connection","/integrations-and-extensibility/devstride-mcp-server/setting-up-your-connection","06.integrations-and-extensibility/01.devstride-mcp-server/02.setting-up-your-connection",{"title":837,"path":838,"stem":839},"Doing Real Work with the DevStride MCP Server","/integrations-and-extensibility/devstride-mcp-server/doing-real-work-with-the-devstride-mcp-server","06.integrations-and-extensibility/01.devstride-mcp-server/03.doing-real-work-with-the-devstride-mcp-server",{"title":841,"path":842,"stem":843},"Best Practices & Tips","/integrations-and-extensibility/devstride-mcp-server/best-practices-and-tips","06.integrations-and-extensibility/01.devstride-mcp-server/04.best-practices-and-tips",{"title":845,"path":846,"stem":847,"children":848},"Plugins","/integrations-and-extensibility/plugins","06.integrations-and-extensibility/02.plugins/index",[849,851],{"title":850,"path":846,"stem":847},"Getting Started With Plugins",{"title":852,"path":853,"stem":854,"children":855,"page":78},"Weekly Logs","/integrations-and-extensibility/plugins/weekly-logs","06.integrations-and-extensibility/02.plugins/01.weekly-logs",[856,859,863,867,871,875,879,883,886,890,894,898],{"title":433,"path":857,"stem":858},"/integrations-and-extensibility/plugins/weekly-logs/overview","06.integrations-and-extensibility/02.plugins/01.weekly-logs/01.overview",{"title":860,"path":861,"stem":862},"Grid","/integrations-and-extensibility/plugins/weekly-logs/grid","06.integrations-and-extensibility/02.plugins/01.weekly-logs/02.grid",{"title":864,"path":865,"stem":866},"Views","/integrations-and-extensibility/plugins/weekly-logs/views","06.integrations-and-extensibility/02.plugins/01.weekly-logs/03.views",{"title":868,"path":869,"stem":870},"Navigation","/integrations-and-extensibility/plugins/weekly-logs/navigation","06.integrations-and-extensibility/02.plugins/01.weekly-logs/04.navigation",{"title":872,"path":873,"stem":874},"Proposed Items","/integrations-and-extensibility/plugins/weekly-logs/proposed-items","06.integrations-and-extensibility/02.plugins/01.weekly-logs/05.proposed-items",{"title":876,"path":877,"stem":878},"Search","/integrations-and-extensibility/plugins/weekly-logs/search","06.integrations-and-extensibility/02.plugins/01.weekly-logs/06.search",{"title":880,"path":881,"stem":882},"Time Logging","/integrations-and-extensibility/plugins/weekly-logs/logging","06.integrations-and-extensibility/02.plugins/01.weekly-logs/07.logging",{"title":649,"path":884,"stem":885},"/integrations-and-extensibility/plugins/weekly-logs/filtering","06.integrations-and-extensibility/02.plugins/01.weekly-logs/08.filtering",{"title":887,"path":888,"stem":889},"Team Logs","/integrations-and-extensibility/plugins/weekly-logs/team-logs","06.integrations-and-extensibility/02.plugins/01.weekly-logs/09.team-logs",{"title":891,"path":892,"stem":893},"Organization Switch","/integrations-and-extensibility/plugins/weekly-logs/organization-switch","06.integrations-and-extensibility/02.plugins/01.weekly-logs/10.organization-switch",{"title":895,"path":896,"stem":897},"Export","/integrations-and-extensibility/plugins/weekly-logs/export","06.integrations-and-extensibility/02.plugins/01.weekly-logs/11.export",{"title":899,"path":900,"stem":901},"Meetings","/integrations-and-extensibility/plugins/weekly-logs/meetings","06.integrations-and-extensibility/02.plugins/01.weekly-logs/12.meetings",{"title":903,"path":904,"stem":905,"children":906,"page":78},"Developer Experience","/developer-experience","07.developer-experience",[907],{"title":908,"path":909,"stem":910,"children":911,"page":78},"Developer Docs","/developer-experience/developer-docs","07.developer-experience/01.developer-docs",[912,916,919,923,927,931,935,939,943,947,951,955],{"title":913,"path":914,"stem":915},"Introduction to the ds CLI","/developer-experience/developer-docs/introduction","07.developer-experience/01.developer-docs/01.introduction",{"title":5,"path":917,"stem":918},"/developer-experience/developer-docs/getting-started","07.developer-experience/01.developer-docs/02.getting-started",{"title":920,"path":921,"stem":922},"Local Development","/developer-experience/developer-docs/local-development","07.developer-experience/01.developer-docs/03.local-development",{"title":924,"path":925,"stem":926},"Deployment","/developer-experience/developer-docs/deployment","07.developer-experience/01.developer-docs/04.deployment",{"title":928,"path":929,"stem":930},"API Development","/developer-experience/developer-docs/api-development","07.developer-experience/01.developer-docs/05.api-development",{"title":932,"path":933,"stem":934},"Golden Dataset","/developer-experience/developer-docs/golden-dataset","07.developer-experience/01.developer-docs/06.golden-dataset",{"title":936,"path":937,"stem":938},"Stripe Integration","/developer-experience/developer-docs/stripe-integration","07.developer-experience/01.developer-docs/07.stripe-integration",{"title":940,"path":941,"stem":942},"Maintenance & Codebase Checks","/developer-experience/developer-docs/maintenance-and-codebase-checks","07.developer-experience/01.developer-docs/08.maintenance-and-codebase-checks",{"title":944,"path":945,"stem":946},"Command Reference","/developer-experience/developer-docs/command-reference","07.developer-experience/01.developer-docs/09.command-reference",{"title":948,"path":949,"stem":950},"Claude Code Skills: AI-Assisted Development","/developer-experience/developer-docs/claude-code-skills-overview","07.developer-experience/01.developer-docs/10.claude-code-skills-overview",{"title":952,"path":953,"stem":954},"The Planning Loop","/developer-experience/developer-docs/claude-skills-planning-loop","07.developer-experience/01.developer-docs/11.claude-skills-planning-loop",{"title":956,"path":957,"stem":958},"The Delivery Loop","/developer-experience/developer-docs/claude-skills-delivery-loop","07.developer-experience/01.developer-docs/12.claude-skills-delivery-loop",{"title":960,"order":961,"path":962,"stem":963,"children":964,"page":78},"Release Notes",11,"/release-notes","08.release-notes",[965,969,973,977,981,985,989,993,997,1001,1005,1009,1013,1017,1021,1025,1029,1033,1037,1041,1045,1049,1053,1057,1061,1065,1069,1073,1077,1081,1085,1089,1093,1097,1101,1105,1109,1113,1117,1121,1125,1129,1133,1137,1141,1145,1149,1153,1157,1161,1165,1169,1173,1177],{"title":966,"path":967,"stem":968},"2026-07-02","/release-notes/2026-07-02","08.release-notes/54.2026-07-02",{"title":970,"path":971,"stem":972},"2026-06-30","/release-notes/2026-06-30","08.release-notes/53.2026-06-30",{"title":974,"path":975,"stem":976},"2026-06-17","/release-notes/2026-06-17","08.release-notes/52.2026-06-17",{"title":978,"path":979,"stem":980},"2026-06-12","/release-notes/2026-06-12","08.release-notes/51.2026-06-12",{"title":982,"path":983,"stem":984},"2026-05-29","/release-notes/2026-05-29","08.release-notes/50.2026-05-29",{"title":986,"path":987,"stem":988},"2026-05-13","/release-notes/2026-05-13","08.release-notes/49.2026-05-13",{"title":990,"path":991,"stem":992},"2026-04-29","/release-notes/2026-04-29","08.release-notes/48.2026-04-29",{"title":994,"path":995,"stem":996},"2026-04-14","/release-notes/2026-04-14","08.release-notes/47.2026-04-14",{"title":998,"path":999,"stem":1000},"2026-04-09","/release-notes/2026-04-09","08.release-notes/46.2026-04-09",{"title":1002,"path":1003,"stem":1004},"2026-03-13","/release-notes/2026-03-13","08.release-notes/45.2026-03-13",{"title":1006,"path":1007,"stem":1008},"2026-02-16","/release-notes/2026-02-16","08.release-notes/44.2026-02-16",{"title":1010,"path":1011,"stem":1012},"2026-02-06","/release-notes/2026-02-06","08.release-notes/43.2026-02-06",{"title":1014,"path":1015,"stem":1016},"2026-01-30","/release-notes/2026-01-30","08.release-notes/42.2026-01-30",{"title":1018,"path":1019,"stem":1020},"2026-01-19","/release-notes/2026-01-19","08.release-notes/41.2026-01-19",{"title":1022,"path":1023,"stem":1024},"2025-09-27","/release-notes/2025-09-27","08.release-notes/40.2025-09-27",{"title":1026,"path":1027,"stem":1028},"2025-07-07","/release-notes/2025-07-07","08.release-notes/39.2025-07-07",{"title":1030,"path":1031,"stem":1032},"2025-06-16","/release-notes/2025-06-16","08.release-notes/38.2025-06-16",{"title":1034,"path":1035,"stem":1036},"2025-05-29","/release-notes/2025-05-29","08.release-notes/37.2025-05-29",{"title":1038,"path":1039,"stem":1040},"2025-04-28","/release-notes/2025-04-28","08.release-notes/36.2025-04-28",{"title":1042,"path":1043,"stem":1044},"2025-03-24","/release-notes/2025-03-24","08.release-notes/35.2025-03-24",{"title":1046,"path":1047,"stem":1048},"2024-12-20","/release-notes/2024-12-20","08.release-notes/34.2024-12-20",{"title":1050,"path":1051,"stem":1052},"2024-10-21","/release-notes/2024-10-21","08.release-notes/33.2024-10-21",{"title":1054,"path":1055,"stem":1056},"2024-10-11","/release-notes/2024-10-11","08.release-notes/32.2024-10-11",{"title":1058,"path":1059,"stem":1060},"2024-09-11","/release-notes/2024-09-11","08.release-notes/31.2024-09-11",{"title":1062,"path":1063,"stem":1064},"2024-08-28","/release-notes/2024-08-28","08.release-notes/30.2024-08-28",{"title":1066,"path":1067,"stem":1068},"2024-07-10","/release-notes/2024-07-10","08.release-notes/29.2024-07-10",{"title":1070,"path":1071,"stem":1072},"2024-06-24","/release-notes/2024-06-24","08.release-notes/28.2024-06-24",{"title":1074,"path":1075,"stem":1076},"2024-05-15","/release-notes/2024-05-15","08.release-notes/27.2024-05-15",{"title":1078,"path":1079,"stem":1080},"2024-04-29","/release-notes/2024-04-29","08.release-notes/26.2024-04-29",{"title":1082,"path":1083,"stem":1084},"2024-03-18","/release-notes/2024-03-18","08.release-notes/25.2024-03-18",{"title":1086,"path":1087,"stem":1088},"2024-03-04","/release-notes/2024-03-04","08.release-notes/24.2024-03-04",{"title":1090,"path":1091,"stem":1092},"2024-02-26","/release-notes/2024-02-26","08.release-notes/23.2024-02-26",{"title":1094,"path":1095,"stem":1096},"2024-01-17","/release-notes/2024-01-17","08.release-notes/22.2024-01-17",{"title":1098,"path":1099,"stem":1100},"2023-12-27","/release-notes/2023-12-27","08.release-notes/21.2023-12-27",{"title":1102,"path":1103,"stem":1104},"2023-11-08","/release-notes/2023-11-08","08.release-notes/20.2023-11-08",{"title":1106,"path":1107,"stem":1108},"2023-10-10","/release-notes/2023-10-10","08.release-notes/19.2023-10-10",{"title":1110,"path":1111,"stem":1112},"2023-09-27","/release-notes/2023-09-27","08.release-notes/18.2023-09-27",{"title":1114,"path":1115,"stem":1116},"2023-09-18","/release-notes/2023-09-18","08.release-notes/17.2023-09-18",{"title":1118,"path":1119,"stem":1120},"2023-09-04","/release-notes/2023-09-04","08.release-notes/16.2023-09-04",{"title":1122,"path":1123,"stem":1124},"2023-08-04","/release-notes/2023-08-04","08.release-notes/15.2023-08-04",{"title":1126,"path":1127,"stem":1128},"2023-07-11","/release-notes/2023-07-11","08.release-notes/14.2023-07-11",{"title":1130,"path":1131,"stem":1132},"2023-06-21","/release-notes/2023-06-21","08.release-notes/13.2023-06-21",{"title":1134,"path":1135,"stem":1136},"2023-05-24","/release-notes/2023-05-24","08.release-notes/12.2023-05-24",{"title":1138,"path":1139,"stem":1140},"2023-04-24","/release-notes/2023-04-24","08.release-notes/11.2023-04-24",{"title":1142,"path":1143,"stem":1144},"2023-04-20","/release-notes/2023-04-20","08.release-notes/10.2023-04-20",{"title":1146,"path":1147,"stem":1148},"2023-03-20","/release-notes/2023-03-20","08.release-notes/09.2023-03-20",{"title":1150,"path":1151,"stem":1152},"2023-02-28","/release-notes/2023-02-28","08.release-notes/08.2023-02-28",{"title":1154,"path":1155,"stem":1156},"2023-01-17","/release-notes/2023-01-17","08.release-notes/07.2023-01-17",{"title":1158,"path":1159,"stem":1160},"2023-01-23","/release-notes/2023-01-23","08.release-notes/06.2023-01-23",{"title":1162,"path":1163,"stem":1164},"2022-12-21","/release-notes/2022-12-21","08.release-notes/05.2022-12-21",{"title":1166,"path":1167,"stem":1168},"2022-12-06","/release-notes/2022-12-06","08.release-notes/04.2022-12-06",{"title":1170,"path":1171,"stem":1172},"2022-11-15","/release-notes/2022-11-15","08.release-notes/03.2022-11-15",{"title":1174,"path":1175,"stem":1176},"2022-11-02","/release-notes/2022-11-02","08.release-notes/02.2022-11-02",{"title":1178,"path":1179,"stem":1180},"2022-10-17","/release-notes/2022-10-17","08.release-notes/01.2022-10-17",{"title":1182,"path":1183,"target":1184},"API","https://api-docs.devstride.com/","_blank",{"id":1186,"title":5,"body":1187,"description":2525,"extension":2526,"links":2527,"meta":2528,"navigation":1515,"path":917,"seo":2529,"stem":918,"__hash__":2530},"docs/07.developer-experience/01.developer-docs/02.getting-started.md",{"type":1188,"value":1189,"toc":2504},"minimark",[1190,1194,1211,1260,1265,1392,1419,1423,1426,1431,1438,1679,1685,1689,1696,1712,1799,1802,1827,1857,1861,1915,1922,1925,1941,1958,1963,2116,2122,2127,2149,2158,2164,2179,2200,2204,2219,2234,2241,2256,2274,2303,2307,2310,2363,2378,2382,2385,2397,2411,2427,2431,2438,2470,2474,2500],[1191,1192,5],"h1",{"id":1193},"getting-started",[1195,1196,1197,1198,1202,1203,1206,1207,1210],"p",{},"This guide walks through bootstrapping a local DevStride development environment from a clean checkout. There is no single onboarding command that does this for you — it's a short, one-time sequence of shell config, AWS SSO setup, and a hand-filled ",[1199,1200,1201],"code",{},".env"," file, followed by two commands (",[1199,1204,1205],{},"ds run backend"," and ",[1199,1208,1209],{},"ds run ui",") that you'll use every day after that.",[1212,1213,1216,1217,1220,1221,1224,1225,1228,1229,1232,1233,1220,1236,1220,1239,1220,1242,1220,1245,1220,1248,1220,1251,1254,1255,1259],"alert",{"title":1214,"type":1215},"No `ds setup`","info","There is no ",[1199,1218,1219],{},"ds setup",", ",[1199,1222,1223],{},"ds deploy",", or similar all-in-one bootstrap command. Every ",[1199,1226,1227],{},"ds"," invocation maps to one of seven Commander programs under ",[1199,1230,1231],{},"cli/commands/"," (",[1199,1234,1235],{},"run",[1199,1237,1238],{},"migrations",[1199,1240,1241],{},"data",[1199,1243,1244],{},"golden",[1199,1246,1247],{},"script",[1199,1249,1250],{},"stripe",[1199,1252,1253],{},"g",") — see the ",[1256,1257,944],"a",{"href":1258},"/developer-docs/command-reference"," for the full list. Bootstrapping is the manual sequence below.",[1261,1262,1264],"h2",{"id":1263},"prerequisites","Prerequisites",[1266,1267,1268,1284],"table",{},[1269,1270,1271],"thead",{},[1272,1273,1274,1278,1281],"tr",{},[1275,1276,1277],"th",{},"Tool",[1275,1279,1280],{},"Purpose",[1275,1282,1283],{},"Notes",[1285,1286,1287,1312,1336,1356,1376],"tbody",{},[1272,1288,1289,1296,1299],{},[1290,1291,1292],"td",{},[1293,1294,1295],"strong",{},"Node.js 22",[1290,1297,1298],{},"Runtime for backend, frontend, and the CLI",[1290,1300,1301,1302,1308,1309],{},"Install via ",[1256,1303,1307],{"href":1304,"rel":1305},"https://github.com/nvm-sh/nvm",[1306],"nofollow","nvm",": ",[1199,1310,1311],{},"nvm install 22 && nvm alias default 22 && nvm use 22",[1272,1313,1314,1319,1322],{},[1290,1315,1316],{},[1293,1317,1318],{},"pnpm",[1290,1320,1321],{},"Package manager for the monorepo",[1290,1323,1324,1325,1328,1329,1332,1333],{},"Pinned by the ",[1199,1326,1327],{},"packageManager"," field in ",[1199,1330,1331],{},"package.json"," — get the matching version via Corepack (bundled with Node 22): ",[1199,1334,1335],{},"corepack enable",[1272,1337,1338,1343,1346],{},[1290,1339,1340],{},[1293,1341,1342],{},"AWS CLI v2",[1290,1344,1345],{},"Required for AWS SSO auth",[1290,1347,1348,1351,1352,1355],{},[1199,1349,1350],{},"brew install awscli",", plus ",[1199,1353,1354],{},"pip3 install aws-sso-credential-process aws-export-credentials"," so SST can use SSO credentials",[1272,1357,1358,1363,1373],{},[1290,1359,1360],{},[1293,1361,1362],{},"AWS SSO access",[1290,1364,1365,1366,1368,1369,1372],{},"Every ",[1199,1367,1227],{}," command (except when passed ",[1199,1370,1371],{},"-u",") authenticates against AWS SSO before running",[1290,1374,1375],{},"Provisioned by a team lead — you'll get an email to set up SSO",[1272,1377,1378,1383,1389],{},[1290,1379,1380],{},[1293,1381,1382],{},"Docker",[1290,1384,1385,1386],{},"Runs local DynamoDB ",[1293,1387,1388],{},"for the backend test suite only",[1290,1390,1391],{},"Not needed for local development — see the callout below",[1212,1393,1396,1398,1399,1402,1403,1406,1407,1410,1411,1414,1415,1418],{"title":1394,"type":1395},"Docker is for tests, not for `ds run backend`","warning",[1199,1397,1205],{}," does ",[1293,1400,1401],{},"not"," start Docker or any local services — it runs ",[1199,1404,1405],{},"pnpm install",", cleans up orphaned CloudFormation stacks, and then ",[1199,1408,1409],{},"pnpm exec sst dev",". In normal (non-test) code, DynamoDB access always points at real AWS. Docker/local DynamoDB is only spun up by the backend test suite itself (",[1199,1412,1413],{},"NODE_ENV=test","), and only if you run ",[1199,1416,1417],{},"cd backend && pnpm test",". You don't need Docker running to develop locally — only to run tests.",[1261,1420,1422],{"id":1421},"bootstrap-sequence","Bootstrap Sequence",[1195,1424,1425],{},"Do this once, in order, from the repo root.",[1427,1428,1430],"h3",{"id":1429},"_1-set-your-shell-environment-variables","1. Set your shell environment variables",[1195,1432,1433,1434,1437],{},"Add to your shell config (e.g. ",[1199,1435,1436],{},".zshrc","):",[1439,1440,1445],"pre",{"className":1441,"code":1442,"language":1443,"meta":1444,"style":1444},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","export DEVSTRIDE_STAGE=${your_name}              # e.g. phil\nexport DEVSTRIDE_DEV_PROFILE=devstride-${your_name}  # e.g. devstride-phil\nexport DEVSTRIDE_REGION=eu-central-1              # or whichever region is nearest you\n\nexport AWS_CONFIGURE_SSO_DEFAULT_SSO_START_URL=https://devstride.awsapps.com/start\nexport AWS_CONFIGURE_SSO_DEFAULT_SSO_REGION=us-east-1\n\nsso(){\n  unset AWS_PROFILE\n  export AWS_PROFILE=$1\n  aws sts get-caller-identity &> /dev/null || aws sso login || (unset AWS_PROFILE && aws-configure-sso-profile --profile $1)\n  eval $(aws-export-credentials --env-export)\n}\n\nalias ds='./ds'\n","bash","",[1199,1446,1447,1473,1496,1511,1517,1529,1541,1545,1554,1563,1577,1632,1648,1654,1659],{"__ignoreMap":1444},[1448,1449,1451,1455,1459,1463,1466,1469],"span",{"class":1450,"line":11},"line",[1448,1452,1454],{"class":1453},"spNyl","export",[1448,1456,1458],{"class":1457},"sTEyZ"," DEVSTRIDE_STAGE",[1448,1460,1462],{"class":1461},"sMK4o","=${",[1448,1464,1465],{"class":1457},"your_name",[1448,1467,1468],{"class":1461},"}",[1448,1470,1472],{"class":1471},"sHwdD","              # e.g. phil\n",[1448,1474,1475,1477,1480,1483,1486,1489,1491,1493],{"class":1450,"line":238},[1448,1476,1454],{"class":1453},[1448,1478,1479],{"class":1457}," DEVSTRIDE_DEV_PROFILE",[1448,1481,1482],{"class":1461},"=",[1448,1484,1485],{"class":1457},"devstride-",[1448,1487,1488],{"class":1461},"${",[1448,1490,1465],{"class":1457},[1448,1492,1468],{"class":1461},[1448,1494,1495],{"class":1471},"  # e.g. devstride-phil\n",[1448,1497,1498,1500,1503,1505,1508],{"class":1450,"line":296},[1448,1499,1454],{"class":1453},[1448,1501,1502],{"class":1457}," DEVSTRIDE_REGION",[1448,1504,1482],{"class":1461},[1448,1506,1507],{"class":1457},"eu-central-1              ",[1448,1509,1510],{"class":1471},"# or whichever region is nearest you\n",[1448,1512,1513],{"class":1450,"line":371},[1448,1514,1516],{"emptyLinePlaceholder":1515},true,"\n",[1448,1518,1519,1521,1524,1526],{"class":1450,"line":534},[1448,1520,1454],{"class":1453},[1448,1522,1523],{"class":1457}," AWS_CONFIGURE_SSO_DEFAULT_SSO_START_URL",[1448,1525,1482],{"class":1461},[1448,1527,1528],{"class":1457},"https://devstride.awsapps.com/start\n",[1448,1530,1531,1533,1536,1538],{"class":1450,"line":544},[1448,1532,1454],{"class":1453},[1448,1534,1535],{"class":1457}," AWS_CONFIGURE_SSO_DEFAULT_SSO_REGION",[1448,1537,1482],{"class":1461},[1448,1539,1540],{"class":1457},"us-east-1\n",[1448,1542,1543],{"class":1450,"line":481},[1448,1544,1516],{"emptyLinePlaceholder":1515},[1448,1546,1547,1551],{"class":1450,"line":274},[1448,1548,1550],{"class":1549},"s2Zo4","sso",[1448,1552,1553],{"class":1461},"(){\n",[1448,1555,1556,1559],{"class":1450,"line":735},[1448,1557,1558],{"class":1549},"  unset",[1448,1560,1562],{"class":1561},"sfazB"," AWS_PROFILE\n",[1448,1564,1565,1568,1571,1573],{"class":1450,"line":650},[1448,1566,1567],{"class":1453},"  export",[1448,1569,1570],{"class":1457}," AWS_PROFILE",[1448,1572,1482],{"class":1461},[1448,1574,1576],{"class":1575},"sHdIc","$1\n",[1448,1578,1579,1583,1586,1589,1592,1595,1598,1601,1604,1607,1610,1612,1615,1617,1620,1623,1626,1629],{"class":1450,"line":961},[1448,1580,1582],{"class":1581},"sBMFI","  aws",[1448,1584,1585],{"class":1561}," sts",[1448,1587,1588],{"class":1561}," get-caller-identity",[1448,1590,1591],{"class":1461}," &>",[1448,1593,1594],{"class":1457}," /dev/null ",[1448,1596,1597],{"class":1461},"||",[1448,1599,1600],{"class":1581}," aws",[1448,1602,1603],{"class":1561}," sso",[1448,1605,1606],{"class":1561}," login",[1448,1608,1609],{"class":1461}," ||",[1448,1611,1232],{"class":1461},[1448,1613,1614],{"class":1549},"unset",[1448,1616,1570],{"class":1561},[1448,1618,1619],{"class":1461}," &&",[1448,1621,1622],{"class":1581}," aws-configure-sso-profile",[1448,1624,1625],{"class":1561}," --profile",[1448,1627,1628],{"class":1575}," $1",[1448,1630,1631],{"class":1461},")\n",[1448,1633,1634,1637,1640,1643,1646],{"class":1450,"line":791},[1448,1635,1636],{"class":1549},"  eval",[1448,1638,1639],{"class":1461}," $(",[1448,1641,1642],{"class":1581},"aws-export-credentials",[1448,1644,1645],{"class":1561}," --env-export",[1448,1647,1631],{"class":1461},[1448,1649,1651],{"class":1450,"line":1650},13,[1448,1652,1653],{"class":1461},"}\n",[1448,1655,1657],{"class":1450,"line":1656},14,[1448,1658,1516],{"emptyLinePlaceholder":1515},[1448,1660,1662,1665,1668,1670,1673,1676],{"class":1450,"line":1661},15,[1448,1663,1664],{"class":1453},"alias",[1448,1666,1667],{"class":1457}," ds",[1448,1669,1482],{"class":1461},[1448,1671,1672],{"class":1461},"'",[1448,1674,1675],{"class":1561},"./ds",[1448,1677,1678],{"class":1461},"'\n",[1195,1680,1681,1684],{},[1199,1682,1683],{},"DEVSTRIDE_STAGE"," becomes the name of your own personal cloud stage — every developer deploys to their own isolated stage, keyed off this value.",[1427,1686,1688],{"id":1687},"_2-set-up-aws-sso","2. Set up AWS SSO",[1195,1690,1691,1692,1695],{},"Install the AWS CLI v2, then configure SSO with the same profile name as ",[1199,1693,1694],{},"DEVSTRIDE_DEV_PROFILE",":",[1439,1697,1699],{"className":1441,"code":1698,"language":1443,"meta":1444,"style":1444},"aws configure sso\n",[1199,1700,1701],{"__ignoreMap":1444},[1448,1702,1703,1706,1709],{"class":1450,"line":11},[1448,1704,1705],{"class":1581},"aws",[1448,1707,1708],{"class":1561}," configure",[1448,1710,1711],{"class":1561}," sso\n",[1439,1713,1715],{"className":1441,"code":1714,"language":1443,"meta":1444,"style":1444},"SSO start URL [None]: https://devstride.awsapps.com/start\nSSO Region [None]: us-east-1\n# after logging in via the browser:\nCLI default client Region [None]: eu-central-1   # nearest region for you\nCLI default output format [None]: json\nCLI profile name [AWSAdministratorAccess-xxxxxxxxxxxx]: devstride-${your_name}\n",[1199,1716,1717,1731,1741,1746,1765,1780],{"__ignoreMap":1444},[1448,1718,1719,1722,1725,1728],{"class":1450,"line":11},[1448,1720,1721],{"class":1581},"SSO",[1448,1723,1724],{"class":1561}," start",[1448,1726,1727],{"class":1561}," URL",[1448,1729,1730],{"class":1457}," [None]: https://devstride.awsapps.com/start\n",[1448,1732,1733,1735,1738],{"class":1450,"line":238},[1448,1734,1721],{"class":1581},[1448,1736,1737],{"class":1561}," Region",[1448,1739,1740],{"class":1457}," [None]: us-east-1\n",[1448,1742,1743],{"class":1450,"line":296},[1448,1744,1745],{"class":1471},"# after logging in via the browser:\n",[1448,1747,1748,1751,1754,1757,1759,1762],{"class":1450,"line":371},[1448,1749,1750],{"class":1581},"CLI",[1448,1752,1753],{"class":1561}," default",[1448,1755,1756],{"class":1561}," client",[1448,1758,1737],{"class":1561},[1448,1760,1761],{"class":1457}," [None]: eu-central-1   ",[1448,1763,1764],{"class":1471},"# nearest region for you\n",[1448,1766,1767,1769,1771,1774,1777],{"class":1450,"line":534},[1448,1768,1750],{"class":1581},[1448,1770,1753],{"class":1561},[1448,1772,1773],{"class":1561}," output",[1448,1775,1776],{"class":1561}," format",[1448,1778,1779],{"class":1457}," [None]: json\n",[1448,1781,1782,1784,1787,1790,1793,1795,1797],{"class":1450,"line":544},[1448,1783,1750],{"class":1581},[1448,1785,1786],{"class":1561}," profile",[1448,1788,1789],{"class":1561}," name",[1448,1791,1792],{"class":1457}," [AWSAdministratorAccess-xxxxxxxxxxxx]: devstride-",[1448,1794,1488],{"class":1461},[1448,1796,1465],{"class":1457},[1448,1798,1653],{"class":1461},[1195,1800,1801],{},"Then install the two helper packages SST needs to consume SSO credentials:",[1439,1803,1805],{"className":1441,"code":1804,"language":1443,"meta":1444,"style":1444},"pip3 install aws-sso-credential-process\npip3 install aws-export-credentials\n",[1199,1806,1807,1818],{"__ignoreMap":1444},[1448,1808,1809,1812,1815],{"class":1450,"line":11},[1448,1810,1811],{"class":1581},"pip3",[1448,1813,1814],{"class":1561}," install",[1448,1816,1817],{"class":1561}," aws-sso-credential-process\n",[1448,1819,1820,1822,1824],{"class":1450,"line":238},[1448,1821,1811],{"class":1581},[1448,1823,1814],{"class":1561},[1448,1825,1826],{"class":1561}," aws-export-credentials\n",[1212,1828,1830,1831,1833,1834,1837,1838,1841,1842,1844,1845,1848,1849,1852,1853,1856],{"title":1829,"type":1215},"Every `ds` command re-checks SSO","The ",[1199,1832,1675],{}," wrapper runs ",[1199,1835,1836],{},"aws sts get-caller-identity"," (falling back to ",[1199,1839,1840],{},"aws sso login",") before every command, unless you pass ",[1199,1843,1371],{}," to skip auth. It also (re)generates a stage/region bind cache at ",[1199,1846,1847],{},".ds/bind/\u003Cstage>-\u003Cregion>.env"," — pass ",[1199,1850,1851],{},"-b"," to force a fresh bind even if a cached one exists. Usage: ",[1199,1854,1855],{},"ds [-b] [-r] [-u] \u003Ccommand> [subcommand] [args]",".",[1427,1858,1860],{"id":1859},"_3-install-node-22-and-pnpm","3. Install Node 22 and pnpm",[1439,1862,1864],{"className":1441,"code":1863,"language":1443,"meta":1444,"style":1444},"nvm install 22\nnvm alias default 22\nnvm use 22\n\ncorepack enable\npnpm install\n",[1199,1865,1866,1876,1887,1896,1900,1908],{"__ignoreMap":1444},[1448,1867,1868,1870,1872],{"class":1450,"line":11},[1448,1869,1307],{"class":1581},[1448,1871,1814],{"class":1561},[1448,1873,1875],{"class":1874},"sbssI"," 22\n",[1448,1877,1878,1880,1883,1885],{"class":1450,"line":238},[1448,1879,1307],{"class":1581},[1448,1881,1882],{"class":1561}," alias",[1448,1884,1753],{"class":1561},[1448,1886,1875],{"class":1874},[1448,1888,1889,1891,1894],{"class":1450,"line":296},[1448,1890,1307],{"class":1581},[1448,1892,1893],{"class":1561}," use",[1448,1895,1875],{"class":1874},[1448,1897,1898],{"class":1450,"line":371},[1448,1899,1516],{"emptyLinePlaceholder":1515},[1448,1901,1902,1905],{"class":1450,"line":534},[1448,1903,1904],{"class":1581},"corepack",[1448,1906,1907],{"class":1561}," enable\n",[1448,1909,1910,1912],{"class":1450,"line":544},[1448,1911,1318],{"class":1581},[1448,1913,1914],{"class":1561}," install\n",[1427,1916,1918,1919,1921],{"id":1917},"_4-fill-in-your-env-file","4. Fill in your ",[1199,1920,1201],{}," file",[1195,1923,1924],{},"Copy the sample and fill in real values by hand:",[1439,1926,1928],{"className":1441,"code":1927,"language":1443,"meta":1444,"style":1444},"cp .env.sample .env\n",[1199,1929,1930],{"__ignoreMap":1444},[1448,1931,1932,1935,1938],{"class":1450,"line":11},[1448,1933,1934],{"class":1581},"cp",[1448,1936,1937],{"class":1561}," .env.sample",[1448,1939,1940],{"class":1561}," .env\n",[1212,1942,1944,1945,1948,1949,1952,1953,1955,1956,1856],{"title":1943,"type":1395},"There is no secrets-pull command","DevStride has no CLI command that fetches these values for you. ",[1199,1946,1947],{},".env.sample"," ships with ",[1199,1950,1951],{},"changeme"," placeholders — you get the real values from a teammate and paste them in yourself. Nothing in ",[1199,1954,1227],{}," reaches into AWS Secrets Manager (or anywhere else) to populate your local ",[1199,1957,1201],{},[1195,1959,1960,1962],{},[1199,1961,1947],{}," lists the following, all needing real values before the app will run correctly:",[1266,1964,1965,1975],{},[1269,1966,1967],{},[1272,1968,1969,1972],{},[1275,1970,1971],{},"Group",[1275,1973,1974],{},"Variables",[1285,1976,1977,1987,1997,2022,2041,2057,2067,2080,2091],{},[1272,1978,1979,1982],{},[1290,1980,1981],{},"Domain",[1290,1983,1984],{},[1199,1985,1986],{},"DOMAIN",[1272,1988,1989,1992],{},[1290,1990,1991],{},"Giphy",[1290,1993,1994],{},[1199,1995,1996],{},"GIPHY_API_KEY",[1272,1998,1999,2002],{},[1290,2000,2001],{},"GitHub App",[1290,2003,2004,1220,2007,1220,2010,1220,2013,1220,2016,1220,2019],{},[1199,2005,2006],{},"GITHUB_APP_CERT",[1199,2008,2009],{},"GITHUB_APP_ID",[1199,2011,2012],{},"GITHUB_APP_NAME",[1199,2014,2015],{},"GITHUB_CLIENT_ID",[1199,2017,2018],{},"GITHUB_CLIENT_SECRET",[1199,2020,2021],{},"GITHUB_WEBHOOK_SECRET",[1272,2023,2024,2027],{},[1290,2025,2026],{},"Pusher",[1290,2028,2029,1220,2032,1220,2035,1220,2038],{},[1199,2030,2031],{},"PUSHER_APP_CLUSTER",[1199,2033,2034],{},"PUSHER_APP_ID",[1199,2036,2037],{},"PUSHER_APP_KEY",[1199,2039,2040],{},"PUSHER_APP_SECRET",[1272,2042,2043,2046],{},[1290,2044,2045],{},"Stripe",[1290,2047,2048,1220,2051,1220,2054],{},[1199,2049,2050],{},"STRIPE_PUBLIC_KEY",[1199,2052,2053],{},"STRIPE_SECRET_KEY",[1199,2055,2056],{},"STRIPE_WEBHOOK_SECRET",[1272,2058,2059,2062],{},[1290,2060,2061],{},"OpenAI",[1290,2063,2064],{},[1199,2065,2066],{},"OPENAI_API_KEY",[1272,2068,2069,2072],{},[1290,2070,2071],{},"Database",[1290,2073,2074,1220,2077],{},[1199,2075,2076],{},"DB_CONNECTION_STRING",[1199,2078,2079],{},"DB_CONNECTION_STRING_READ_ONLY",[1272,2081,2082,2085],{},[1290,2083,2084],{},"Encryption",[1290,2086,2087,2090],{},[1199,2088,2089],{},"ENCRYPTION_KEY"," (see step 5)",[1272,2092,2093,2096],{},[1290,2094,2095],{},"SMTP (optional)",[1290,2097,2098,1220,2101,1220,2104,1220,2107,1220,2110,1220,2113],{},[1199,2099,2100],{},"USE_SMTP",[1199,2102,2103],{},"SMTP_HOST",[1199,2105,2106],{},"SMTP_PORT",[1199,2108,2109],{},"SMTP_USER",[1199,2111,2112],{},"SMTP_PASS",[1199,2114,2115],{},"SMTP_FROM",[1427,2117,2119,2120],{"id":2118},"_5-generate-an-encryption_key","5. Generate an ",[1199,2121,2089],{},[1195,2123,2124,2126],{},[1199,2125,2089],{}," must be exactly 32 bytes (64 hex characters) — it's used to encrypt sensitive data such as database credentials in transit:",[1439,2128,2130],{"className":1441,"code":2129,"language":1443,"meta":1444,"style":1444},"node -e \"console.log(require('crypto').randomBytes(32).toString('hex'))\"\n",[1199,2131,2132],{"__ignoreMap":1444},[1448,2133,2134,2137,2140,2143,2146],{"class":1450,"line":11},[1448,2135,2136],{"class":1581},"node",[1448,2138,2139],{"class":1561}," -e",[1448,2141,2142],{"class":1461}," \"",[1448,2144,2145],{"class":1561},"console.log(require('crypto').randomBytes(32).toString('hex'))",[1448,2147,2148],{"class":1461},"\"\n",[1195,2150,2151,2152,2154,2155,2157],{},"Paste the result into ",[1199,2153,1201],{}," as ",[1199,2156,2089],{},". Never commit this value — each environment should have its own unique key.",[1427,2159,2161,2162],{"id":2160},"_6-first-deploy-ds-run-backend","6. First deploy: ",[1199,2163,1205],{},[1439,2165,2167],{"className":1441,"code":2166,"language":1443,"meta":1444,"style":1444},"ds run backend\n",[1199,2168,2169],{"__ignoreMap":1444},[1448,2170,2171,2173,2176],{"class":1450,"line":11},[1448,2172,1227],{"class":1581},[1448,2174,2175],{"class":1561}," run",[1448,2177,2178],{"class":1561}," backend\n",[1195,2180,2181,2182,2186,2187,2189,2190,2192,2193,2195,2196,2199],{},"This is both how you run the backend day-to-day ",[2183,2184,2185],"em",{},"and"," how your personal SST stage gets created the first time — ",[1199,2188,1205],{}," runs ",[1199,2191,1405],{},", cleans up any orphaned CloudFormation stacks, then runs ",[1199,2194,1409],{},", which provisions your stage's AWS resources on first run. Once it finishes deploying, stop it (",[1199,2197,2198],{},"Ctrl+C",") — you need to run migrations and push config before it's actually usable.",[1427,2201,2203],{"id":2202},"_7-run-database-migrations","7. Run database migrations",[1439,2205,2207],{"className":1441,"code":2206,"language":1443,"meta":1444,"style":1444},"ds migrations run\n",[1199,2208,2209],{"__ignoreMap":1444},[1448,2210,2211,2213,2216],{"class":1450,"line":11},[1448,2212,1227],{"class":1581},[1448,2214,2215],{"class":1561}," migrations",[1448,2217,2218],{"class":1561}," run\n",[1212,2220,2223,2226,2227,2230,2231,2233],{"title":2221,"type":2222},"`run` vs `run-sql`","note",[1199,2224,2225],{},"ds migrations run-sql"," currently does exactly the same thing as ",[1199,2228,2229],{},"ds migrations run"," (both run Drizzle SQL migrations to the latest version) — it's a leftover alias from a historical split of the migration path. Either works; ",[1199,2232,2229],{}," is the one documented going forward.",[1427,2235,2237,2238],{"id":2236},"_8-push-your-config-ds-script-set-config","8. Push your config: ",[1199,2239,2240],{},"ds script set-config",[1439,2242,2244],{"className":1441,"code":2243,"language":1443,"meta":1444,"style":1444},"ds script set-config\n",[1199,2245,2246],{"__ignoreMap":1444},[1448,2247,2248,2250,2253],{"class":1450,"line":11},[1448,2249,1227],{"class":1581},[1448,2251,2252],{"class":1561}," script",[1448,2254,2255],{"class":1561}," set-config\n",[1195,2257,2258,2259,2261,2262,2265,2266,2269,2270,2273],{},"This reads your local ",[1199,2260,1201],{},", validates that every required variable is set (DB connection strings, Stripe, OpenAI, GitHub App, Pusher, Slack, encryption key, and more), and ",[1293,2263,2264],{},"pushes"," them up into an SST ",[1199,2267,2268],{},"DEVSTRIDE_CONFIG"," secret (base64-encoded JSON) that your running Lambda / ",[1199,2271,2272],{},"sst dev"," process reads at runtime.",[1212,2275,2277,2279,2280,2282,2283,2285,2286,2289,2290,2293,2294,2296,2297,2299,2300,2302],{"title":2276,"type":1395},"This pushes, it does not pull",[1199,2278,2240],{}," is a one-way push from your local ",[1199,2281,1201],{}," up to SST. It does not fetch or sync anything down. The running backend never reads ",[1199,2284,1201],{}," directly at runtime — the CLI-side ",[1199,2287,2288],{},"dotenv.config()"," only feeds the CLI/build-time process used to synth ",[1199,2291,2292],{},"sst.config.ts","; the deployed Lambda/",[1199,2295,2272],{}," process gets its secrets exclusively through the SST Config binding that this command populates. If you change a value in ",[1199,2298,1201],{},", you must re-run ",[1199,2301,2240],{}," for it to take effect.",[1427,2304,2306],{"id":2305},"_9-set-up-stripe-test-mode","9. Set up Stripe (test mode)",[1195,2308,2309],{},"Ask a teammate to set up a Stripe test account for you, then:",[2311,2312,2313,2331,2354,2360],"ol",{},[2314,2315,2316,2317,2322,2323,2325,2326,2328,2329,1856],"li",{},"Grab the secret key from the ",[1256,2318,2321],{"href":2319,"rel":2320},"https://dashboard.stripe.com/test/apikeys",[1306],"Stripe test API keys page"," and set ",[1199,2324,2053],{}," / ",[1199,2327,2050],{}," in ",[1199,2330,1201],{},[2314,2332,2333,2334,2337,2338,1220,2341,1220,2344,2347,2348,2351,2352,1856],{},"Add a webhook endpoint at ",[1199,2335,2336],{},"https://api.{stage}.devstride.dev/v1/subscriptions/stripe/webhooks",", listening for ",[1199,2339,2340],{},"customer.subscription.created",[1199,2342,2343],{},"customer.subscription.deleted",[1199,2345,2346],{},"customer.subscription.trial_will_end",", and ",[1199,2349,2350],{},"customer.subscription.updated",". Copy the signing secret into ",[1199,2353,2056],{},[2314,2355,2356,2357,2359],{},"Re-run ",[1199,2358,2240],{}," so the updated values are pushed up.",[2314,2361,2362],{},"Seed Stripe products:",[1439,2364,2366],{"className":1441,"code":2365,"language":1443,"meta":1444,"style":1444},"ds stripe add-products\n",[1199,2367,2368],{"__ignoreMap":1444},[1448,2369,2370,2372,2375],{"class":1450,"line":11},[1448,2371,1227],{"class":1581},[1448,2373,2374],{"class":1561}," stripe",[1448,2376,2377],{"class":1561}," add-products\n",[1261,2379,2381],{"id":2380},"daily-use","Daily Use",[1195,2383,2384],{},"Once bootstrapping is done, this is all you run day to day, in two terminal tabs:",[1439,2386,2387],{"className":1441,"code":2166,"language":1443,"meta":1444,"style":1444},[1199,2388,2389],{"__ignoreMap":1444},[1448,2390,2391,2393,2395],{"class":1450,"line":11},[1448,2392,1227],{"class":1581},[1448,2394,2175],{"class":1561},[1448,2396,2178],{"class":1561},[1439,2398,2400],{"className":1441,"code":2399,"language":1443,"meta":1444,"style":1444},"ds run ui\n",[1199,2401,2402],{"__ignoreMap":1444},[1448,2403,2404,2406,2408],{"class":1450,"line":11},[1448,2405,1227],{"class":1581},[1448,2407,2175],{"class":1561},[1448,2409,2410],{"class":1561}," ui\n",[1195,2412,2413,2415,2416,2418,2419,2422,2423,2426],{},[1199,2414,1205],{}," starts SST's live-lambda dev mode against your personal stage. ",[1199,2417,1209],{}," spawns the Vite dev server in ",[1199,2420,2421],{},"frontend/",", wired up with ",[1199,2424,2425],{},"VITE_*"," env vars derived from your bound stage.",[1261,2428,2430],{"id":2429},"running-the-test-suite","Running the Test Suite",[1195,2432,2433,2434,2437],{},"The backend test suite needs Docker for a local DynamoDB — this is the ",[2183,2435,2436],{},"only"," place Docker is required:",[1439,2439,2441],{"className":1441,"code":2440,"language":1443,"meta":1444,"style":1444},"docker pull amazon/dynamodb-local\ncd backend && pnpm test\n",[1199,2442,2443,2454],{"__ignoreMap":1444},[1448,2444,2445,2448,2451],{"class":1450,"line":11},[1448,2446,2447],{"class":1581},"docker",[1448,2449,2450],{"class":1561}," pull",[1448,2452,2453],{"class":1561}," amazon/dynamodb-local\n",[1448,2455,2456,2459,2462,2464,2467],{"class":1450,"line":238},[1448,2457,2458],{"class":1549},"cd",[1448,2460,2461],{"class":1561}," backend",[1448,2463,1619],{"class":1461},[1448,2465,2466],{"class":1581}," pnpm",[1448,2468,2469],{"class":1561}," test\n",[1261,2471,2473],{"id":2472},"next-steps","Next Steps",[2475,2476,2477,2483,2492],"ul",{},[2314,2478,2479,2482],{},[1256,2480,920],{"href":2481},"/developer-docs/local-development"," — Running and debugging locally day-to-day",[2314,2484,2485,2488,2489,2491],{},[1256,2486,913],{"href":2487},"/developer-docs/introduction"," — How ",[1199,2490,1675],{}," resolves and runs a command",[2314,2493,2494,2496,2497,2499],{},[1256,2495,944],{"href":1258}," — Every ",[1199,2498,1227],{}," command, organized by category",[2501,2502,2503],"style",{},"html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}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 .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 pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}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 .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":1444,"searchDepth":238,"depth":238,"links":2505},[2506,2507,2522,2523,2524],{"id":1263,"depth":238,"text":1264},{"id":1421,"depth":238,"text":1422,"children":2508},[2509,2510,2511,2512,2514,2516,2518,2519,2521],{"id":1429,"depth":296,"text":1430},{"id":1687,"depth":296,"text":1688},{"id":1859,"depth":296,"text":1860},{"id":1917,"depth":296,"text":2513},"4. Fill in your .env file",{"id":2118,"depth":296,"text":2515},"5. Generate an ENCRYPTION_KEY",{"id":2160,"depth":296,"text":2517},"6. First deploy: ds run backend",{"id":2202,"depth":296,"text":2203},{"id":2236,"depth":296,"text":2520},"8. Push your config: ds script set-config",{"id":2305,"depth":296,"text":2306},{"id":2380,"depth":238,"text":2381},{"id":2429,"depth":238,"text":2430},{"id":2472,"depth":238,"text":2473},"Bootstrapping a local DevStride development environment by hand — prerequisites, AWS SSO, .env setup, and your first `ds run backend` / `ds run ui`.","md",null,{},{"title":5,"description":2525},"APFuf9Cp0nnLsmoRn53ApNK8RxWNFhkJJjWhLTyj76k",[2532,2534],{"title":913,"path":914,"stem":915,"description":2533,"children":-1},"What the ds CLI actually wraps, how ./ds resolves and runs a command, the global auth/bind flags, and the seven real top-level commands.",{"title":920,"path":921,"stem":922,"description":2535,"children":-1},"The real day-to-day dev loop: running the backend and UI, scaffolding CQRS code, migrations, and managing local data with the ds CLI.",1783015133104]