[{"data":1,"prerenderedAt":2585},["ShallowReactive",2],{"navigation_docs":3,"-developer-experience-intro-getting-started":1214,"-developer-experience-intro-getting-started-surround":2580},[4,231,472,511,732,822,906,976,1210],{"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,468],{"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},"Service Level Agreements (SLA)","/major-modules/service-desk/sla","02.major-modules/05.service-desk/10.sla",{"title":473,"path":474,"stem":475,"children":476,"page":78},"Personal Workspace","/personal-workspace","03.personal-workspace",[477,483,497,508],{"title":478,"path":479,"stem":480,"children":481},"My Work","/personal-workspace/my-work","03.personal-workspace/01.my-work/index",[482],{"title":478,"path":479,"stem":480},{"title":484,"order":485,"path":486,"stem":487,"children":488,"page":78},"Notifications",7,"/personal-workspace/notifications","03.personal-workspace/02.notifications",[489,493],{"title":490,"path":491,"stem":492},"Notifications in DevStride","/personal-workspace/notifications/overview-of-notification-options","03.personal-workspace/02.notifications/01.overview-of-notification-options",{"title":494,"path":495,"stem":496},"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":498,"path":499,"stem":500,"children":501,"page":78},"My Account","/personal-workspace/my-account","03.personal-workspace/03.my-account",[502,505],{"title":433,"path":503,"stem":504},"/personal-workspace/my-account/overview","03.personal-workspace/03.my-account/01.overview",{"title":200,"path":506,"stem":507},"/personal-workspace/my-account/api-keys","03.personal-workspace/03.my-account/02.api-keys",{"title":226,"path":509,"stem":510},"/personal-workspace/keyboard-shortcuts","03.personal-workspace/04.keyboard-shortcuts",{"title":512,"path":513,"stem":514,"children":515,"page":78},"Workspace Administration","/workspace-administration","04.workspace-administration",[516,536,546,639,652],{"title":517,"path":518,"stem":519,"children":520,"page":78},"Manage Items Module","/workspace-administration/manage-items","04.workspace-administration/01.manage-items",[521,524,528,532],{"title":433,"path":522,"stem":523},"/workspace-administration/manage-items/overview","04.workspace-administration/01.manage-items/01.overview",{"title":525,"path":526,"stem":527},"Finding & Filtering Items","/workspace-administration/manage-items/finding-and-filtering-items","04.workspace-administration/01.manage-items/02.finding-and-filtering-items",{"title":529,"path":530,"stem":531},"Creating & Sharing Views","/workspace-administration/manage-items/creating-and-sharing-views","04.workspace-administration/01.manage-items/03.creating-and-sharing-views",{"title":533,"path":534,"stem":535},"Item Hierarchy","/workspace-administration/manage-items/item-hierarchy","04.workspace-administration/01.manage-items/04.item-hierarchy",{"title":537,"order":538,"path":539,"stem":540,"children":541,"page":78},"Automate Workflows",5,"/workspace-administration/automations","04.workspace-administration/02.automations",[542],{"title":543,"path":544,"stem":545},"Setting Up Basic Automations","/workspace-administration/automations/setting-up-basic-automations","04.workspace-administration/02.automations/01.setting-up-basic-automations",{"title":547,"order":548,"path":549,"stem":550,"children":551,"page":78},"Configure Settings",6,"/workspace-administration/settings","04.workspace-administration/03.settings",[552,565,602,611,635],{"title":553,"path":554,"stem":555,"children":556,"page":78},"Organization","/workspace-administration/settings/organization","04.workspace-administration/03.settings/01.organization",[557,561],{"title":558,"path":559,"stem":560},"Org Configuration","/workspace-administration/settings/organization/org-profile","04.workspace-administration/03.settings/01.organization/01.org-profile",{"title":562,"path":563,"stem":564},"Users, Roles & MFA","/workspace-administration/settings/organization/users-roles-and-mfa","04.workspace-administration/03.settings/01.organization/02.users-roles-and-mfa",{"title":566,"path":567,"stem":568,"children":569,"page":78},"Data Model","/workspace-administration/settings/data-model","04.workspace-administration/03.settings/02.data-model",[570,574,578,582,586,590,594,598],{"title":571,"path":572,"stem":573},"Cadences","/workspace-administration/settings/data-model/cadences","04.workspace-administration/03.settings/02.data-model/01.cadences",{"title":575,"path":576,"stem":577},"Item Types","/workspace-administration/settings/data-model/item-types","04.workspace-administration/03.settings/02.data-model/02.item-types",{"title":579,"path":580,"stem":581},"Tags","/workspace-administration/settings/data-model/tags","04.workspace-administration/03.settings/02.data-model/03.tags",{"title":583,"path":584,"stem":585},"Custom Fields","/workspace-administration/settings/data-model/custom-fields","04.workspace-administration/03.settings/02.data-model/04.custom-fields",{"title":587,"path":588,"stem":589},"Priority Levels","/workspace-administration/settings/data-model/priority-levels","04.workspace-administration/03.settings/02.data-model/05.priority-levels",{"title":591,"path":592,"stem":593},"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":595,"path":596,"stem":597},"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":599,"path":600,"stem":601},"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":603,"path":604,"stem":605,"children":606,"page":78},"Forms","/workspace-administration/settings/forms","04.workspace-administration/03.settings/03.forms",[607],{"title":608,"path":609,"stem":610},"Item Request Forms","/workspace-administration/settings/forms/item-request-forms","04.workspace-administration/03.settings/03.forms/item-request-forms",{"title":612,"path":613,"stem":614,"children":615,"page":78},"Integrations","/workspace-administration/settings/integrations","04.workspace-administration/03.settings/04.integrations",[616,620,624,628,632],{"title":617,"path":618,"stem":619},"GitHub","/workspace-administration/settings/integrations/github","04.workspace-administration/03.settings/04.integrations/01.github",{"title":621,"path":622,"stem":623},"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":625,"path":626,"stem":627},"Database Access for BI Tools","/workspace-administration/settings/integrations/database-access","04.workspace-administration/03.settings/04.integrations/03.database-access",{"title":629,"path":630,"stem":631},"Jira Integration","/workspace-administration/settings/integrations/jira","04.workspace-administration/03.settings/04.integrations/04.jira",{"title":200,"path":633,"stem":634},"/workspace-administration/settings/integrations/api-keys","04.workspace-administration/03.settings/04.integrations/05.api-keys",{"title":636,"path":637,"stem":638},"Subscription & Billing","/workspace-administration/settings/subscription-and-billing","04.workspace-administration/03.settings/05.subscription-and-billing",{"title":465,"path":640,"stem":641,"children":642,"page":78},"/workspace-administration/permissions","04.workspace-administration/04.permissions",[643,646,649],{"title":188,"path":644,"stem":645},"/workspace-administration/permissions/understanding-permissions","04.workspace-administration/04.permissions/01.understanding-permissions",{"title":192,"path":647,"stem":648},"/workspace-administration/permissions/roles-and-permissions","04.workspace-administration/04.permissions/02.roles-and-permissions",{"title":196,"path":650,"stem":651},"/workspace-administration/permissions/sharing-and-access","04.workspace-administration/04.permissions/03.sharing-and-access",{"title":653,"order":654,"path":655,"stem":656,"children":657,"page":78},"Filters",10,"/workspace-administration/filters","04.workspace-administration/05.filters",[658,661,664,668,672,676,680,683,687,691,711],{"title":478,"path":659,"stem":660},"/workspace-administration/filters/my-work","04.workspace-administration/05.filters/01.my-work",{"title":484,"path":662,"stem":663},"/workspace-administration/filters/notifications","04.workspace-administration/05.filters/02.notifications",{"title":665,"path":666,"stem":667},"Workstreams","/workspace-administration/filters/workstreams","04.workspace-administration/05.filters/03.workstreams",{"title":669,"path":670,"stem":671},"Cycles","/workspace-administration/filters/cycles","04.workspace-administration/05.filters/04.cycles",{"title":673,"path":674,"stem":675},"Boards","/workspace-administration/filters/boards","04.workspace-administration/05.filters/05.boards",{"title":677,"path":678,"stem":679},"Gantt","/workspace-administration/filters/gantt","04.workspace-administration/05.filters/06.gantt",{"title":46,"path":681,"stem":682},"/workspace-administration/filters/items","04.workspace-administration/05.filters/07.items",{"title":684,"path":685,"stem":686},"Reports","/workspace-administration/filters/reports","04.workspace-administration/05.filters/08.reports",{"title":688,"path":689,"stem":690},"Automations","/workspace-administration/filters/automations","04.workspace-administration/05.filters/09.automations",{"title":692,"path":693,"stem":694,"children":695,"page":78},"Sort ","/workspace-administration/filters/sort","04.workspace-administration/05.filters/10.sort",[696,699,702,705,708],{"title":478,"path":697,"stem":698},"/workspace-administration/filters/sort/my-work","04.workspace-administration/05.filters/10.sort/01.my-work",{"title":665,"path":700,"stem":701},"/workspace-administration/filters/sort/workstreams","04.workspace-administration/05.filters/10.sort/02.workstreams",{"title":669,"path":703,"stem":704},"/workspace-administration/filters/sort/cycles","04.workspace-administration/05.filters/10.sort/03.cycles",{"title":673,"path":706,"stem":707},"/workspace-administration/filters/sort/boards","04.workspace-administration/05.filters/10.sort/04.boards",{"title":46,"path":709,"stem":710},"/workspace-administration/filters/sort/items","04.workspace-administration/05.filters/10.sort/05.items",{"title":712,"path":713,"stem":714,"children":715,"page":78},"Options","/workspace-administration/filters/options","04.workspace-administration/05.filters/11.options",[716,719,722,726,729],{"title":478,"path":717,"stem":718},"/workspace-administration/filters/options/my-work","04.workspace-administration/05.filters/11.options/01.my-work",{"title":665,"path":720,"stem":721},"/workspace-administration/filters/options/workstreams","04.workspace-administration/05.filters/11.options/02.workstreams",{"title":723,"path":724,"stem":725},"Cycle","/workspace-administration/filters/options/cycle","04.workspace-administration/05.filters/11.options/03.cycle",{"title":673,"path":727,"stem":728},"/workspace-administration/filters/options/boards","04.workspace-administration/05.filters/11.options/04.boards",{"title":46,"path":730,"stem":731},"/workspace-administration/filters/options/items","04.workspace-administration/05.filters/11.options/05.items",{"title":733,"path":734,"stem":735,"children":736,"page":78},"Planning Concepts & Use Cases","/planning-concepts-and-use-cases","05.planning-concepts-and-use-cases",[737,793],{"title":738,"order":739,"path":740,"stem":741,"children":742,"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",[743,776],{"title":744,"path":745,"stem":746,"children":747,"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",[748,752,756,760,764,768,772],{"title":749,"path":750,"stem":751},"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":753,"path":754,"stem":755},"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":757,"path":758,"stem":759},"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":761,"path":762,"stem":763},"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":765,"path":766,"stem":767},"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":769,"path":770,"stem":771},"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":773,"path":774,"stem":775},"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":777,"path":778,"stem":779,"children":780,"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",[781,785,789],{"title":782,"path":783,"stem":784},"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":786,"path":787,"stem":788},"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":790,"path":791,"stem":792},"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":794,"order":795,"path":796,"stem":797,"children":798,"page":78},"Use Cases",12,"/planning-concepts-and-use-cases/use-cases","05.planning-concepts-and-use-cases/02.use-cases",[799,802,806,810,814,818],{"title":744,"path":800,"stem":801},"/planning-concepts-and-use-cases/use-cases/gantt-charts","05.planning-concepts-and-use-cases/02.use-cases/01.gantt-charts",{"title":803,"path":804,"stem":805},"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":807,"path":808,"stem":809},"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":811,"path":812,"stem":813},"Manage Cadences","/planning-concepts-and-use-cases/use-cases/manage-cadences","05.planning-concepts-and-use-cases/02.use-cases/04.manage-cadences",{"title":815,"path":816,"stem":817},"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":819,"path":820,"stem":821},"Backlog Refinement","/planning-concepts-and-use-cases/use-cases/backlog-refinement","05.planning-concepts-and-use-cases/02.use-cases/06.backlog-refinement",{"title":823,"path":824,"stem":825,"children":826,"page":78},"Integrations & Extensibility","/integrations-and-extensibility","06.integrations-and-extensibility",[827,848],{"title":828,"path":829,"stem":830,"children":831,"page":78},"DevStride MCP Server","/integrations-and-extensibility/devstride-mcp-server","06.integrations-and-extensibility/01.devstride-mcp-server",[832,836,840,844],{"title":833,"path":834,"stem":835},"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":837,"path":838,"stem":839},"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":841,"path":842,"stem":843},"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":845,"path":846,"stem":847},"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":849,"path":850,"stem":851,"children":852},"Plugins","/integrations-and-extensibility/plugins","06.integrations-and-extensibility/02.plugins/index",[853,855],{"title":854,"path":850,"stem":851},"Getting Started With Plugins",{"title":856,"path":857,"stem":858,"children":859,"page":78},"Weekly Logs","/integrations-and-extensibility/plugins/weekly-logs","06.integrations-and-extensibility/02.plugins/01.weekly-logs",[860,863,867,871,875,879,883,887,890,894,898,902],{"title":433,"path":861,"stem":862},"/integrations-and-extensibility/plugins/weekly-logs/overview","06.integrations-and-extensibility/02.plugins/01.weekly-logs/01.overview",{"title":864,"path":865,"stem":866},"Grid","/integrations-and-extensibility/plugins/weekly-logs/grid","06.integrations-and-extensibility/02.plugins/01.weekly-logs/02.grid",{"title":868,"path":869,"stem":870},"Views","/integrations-and-extensibility/plugins/weekly-logs/views","06.integrations-and-extensibility/02.plugins/01.weekly-logs/03.views",{"title":872,"path":873,"stem":874},"Navigation","/integrations-and-extensibility/plugins/weekly-logs/navigation","06.integrations-and-extensibility/02.plugins/01.weekly-logs/04.navigation",{"title":876,"path":877,"stem":878},"Proposed Items","/integrations-and-extensibility/plugins/weekly-logs/proposed-items","06.integrations-and-extensibility/02.plugins/01.weekly-logs/05.proposed-items",{"title":880,"path":881,"stem":882},"Search","/integrations-and-extensibility/plugins/weekly-logs/search","06.integrations-and-extensibility/02.plugins/01.weekly-logs/06.search",{"title":884,"path":885,"stem":886},"Time Logging","/integrations-and-extensibility/plugins/weekly-logs/logging","06.integrations-and-extensibility/02.plugins/01.weekly-logs/07.logging",{"title":653,"path":888,"stem":889},"/integrations-and-extensibility/plugins/weekly-logs/filtering","06.integrations-and-extensibility/02.plugins/01.weekly-logs/08.filtering",{"title":891,"path":892,"stem":893},"Team Logs","/integrations-and-extensibility/plugins/weekly-logs/team-logs","06.integrations-and-extensibility/02.plugins/01.weekly-logs/09.team-logs",{"title":895,"path":896,"stem":897},"Organization Switch","/integrations-and-extensibility/plugins/weekly-logs/organization-switch","06.integrations-and-extensibility/02.plugins/01.weekly-logs/10.organization-switch",{"title":899,"path":900,"stem":901},"Export","/integrations-and-extensibility/plugins/weekly-logs/export","06.integrations-and-extensibility/02.plugins/01.weekly-logs/11.export",{"title":903,"path":904,"stem":905},"Meetings","/integrations-and-extensibility/plugins/weekly-logs/meetings","06.integrations-and-extensibility/02.plugins/01.weekly-logs/12.meetings",{"title":907,"path":908,"stem":909,"children":910,"page":78},"Developer Experience","/developer-experience","07.developer-experience",[911,955],{"title":912,"path":913,"stem":914,"children":915,"page":78},"Intro","/developer-experience/intro","07.developer-experience/01.intro",[916,919,923,927,931,935,939,943,947,951],{"title":5,"path":917,"stem":918},"/developer-experience/intro/getting-started","07.developer-experience/01.intro/01.getting-started",{"title":920,"path":921,"stem":922},"Introduction to the ds CLI","/developer-experience/intro/introduction","07.developer-experience/01.intro/02.introduction",{"title":924,"path":925,"stem":926},"Command Reference","/developer-experience/intro/command-reference","07.developer-experience/01.intro/03.command-reference",{"title":928,"path":929,"stem":930},"Local Development","/developer-experience/intro/local-development","07.developer-experience/01.intro/04.local-development",{"title":932,"path":933,"stem":934},"Dockerized Worktree Development","/developer-experience/intro/dockerized-worktree-development","07.developer-experience/01.intro/05.dockerized-worktree-development",{"title":936,"path":937,"stem":938},"Golden Dataset","/developer-experience/intro/golden-dataset","07.developer-experience/01.intro/06.golden-dataset",{"title":940,"path":941,"stem":942},"Deployment","/developer-experience/intro/deployment","07.developer-experience/01.intro/07.deployment",{"title":944,"path":945,"stem":946},"API Development","/developer-experience/intro/api-development","07.developer-experience/01.intro/08.api-development",{"title":948,"path":949,"stem":950},"Stripe Integration","/developer-experience/intro/stripe-integration","07.developer-experience/01.intro/09.stripe-integration",{"title":952,"path":953,"stem":954},"Maintenance & Codebase Checks","/developer-experience/intro/maintenance-and-codebase-checks","07.developer-experience/01.intro/10.maintenance-and-codebase-checks",{"title":956,"path":957,"stem":958,"children":959,"page":78},"Agentic Skills","/developer-experience/agentic-skills","07.developer-experience/02.agentic-skills",[960,964,968,972],{"title":961,"path":962,"stem":963},"Claude Code Skills: AI-Assisted Development","/developer-experience/agentic-skills/claude-code-skills-overview","07.developer-experience/02.agentic-skills/01.claude-code-skills-overview",{"title":965,"path":966,"stem":967},"Skill Audit","/developer-experience/agentic-skills/skill-audit","07.developer-experience/02.agentic-skills/02.skill-audit",{"title":969,"path":970,"stem":971},"The Planning Loop","/developer-experience/agentic-skills/claude-skills-planning-loop","07.developer-experience/02.agentic-skills/03.claude-skills-planning-loop",{"title":973,"path":974,"stem":975},"The Delivery Loop","/developer-experience/agentic-skills/claude-skills-delivery-loop","07.developer-experience/02.agentic-skills/04.claude-skills-delivery-loop",{"title":977,"order":978,"path":979,"stem":980,"children":981,"page":78},"Release Notes",11,"/release-notes","08.release-notes",[982,986,990,994,998,1002,1006,1010,1014,1018,1022,1026,1030,1034,1038,1042,1046,1050,1054,1058,1062,1066,1070,1074,1078,1082,1086,1090,1094,1098,1102,1106,1110,1114,1118,1122,1126,1130,1134,1138,1142,1146,1150,1154,1158,1162,1166,1170,1174,1178,1182,1186,1190,1194,1198,1202,1206],{"title":983,"path":984,"stem":985},"2026-07-09","/release-notes/2026-07-09","08.release-notes/57.2026-07-09",{"title":987,"path":988,"stem":989},"2026-07-07","/release-notes/2026-07-07","08.release-notes/56.2026-07-07",{"title":991,"path":992,"stem":993},"2026-07-06","/release-notes/2026-07-06","08.release-notes/55.2026-07-06",{"title":995,"path":996,"stem":997},"2026-07-02","/release-notes/2026-07-02","08.release-notes/54.2026-07-02",{"title":999,"path":1000,"stem":1001},"2026-06-30","/release-notes/2026-06-30","08.release-notes/53.2026-06-30",{"title":1003,"path":1004,"stem":1005},"2026-06-17","/release-notes/2026-06-17","08.release-notes/52.2026-06-17",{"title":1007,"path":1008,"stem":1009},"2026-06-12","/release-notes/2026-06-12","08.release-notes/51.2026-06-12",{"title":1011,"path":1012,"stem":1013},"2026-05-29","/release-notes/2026-05-29","08.release-notes/50.2026-05-29",{"title":1015,"path":1016,"stem":1017},"2026-05-13","/release-notes/2026-05-13","08.release-notes/49.2026-05-13",{"title":1019,"path":1020,"stem":1021},"2026-04-29","/release-notes/2026-04-29","08.release-notes/48.2026-04-29",{"title":1023,"path":1024,"stem":1025},"2026-04-14","/release-notes/2026-04-14","08.release-notes/47.2026-04-14",{"title":1027,"path":1028,"stem":1029},"2026-04-09","/release-notes/2026-04-09","08.release-notes/46.2026-04-09",{"title":1031,"path":1032,"stem":1033},"2026-03-13","/release-notes/2026-03-13","08.release-notes/45.2026-03-13",{"title":1035,"path":1036,"stem":1037},"2026-02-16","/release-notes/2026-02-16","08.release-notes/44.2026-02-16",{"title":1039,"path":1040,"stem":1041},"2026-02-06","/release-notes/2026-02-06","08.release-notes/43.2026-02-06",{"title":1043,"path":1044,"stem":1045},"2026-01-30","/release-notes/2026-01-30","08.release-notes/42.2026-01-30",{"title":1047,"path":1048,"stem":1049},"2026-01-19","/release-notes/2026-01-19","08.release-notes/41.2026-01-19",{"title":1051,"path":1052,"stem":1053},"2025-09-27","/release-notes/2025-09-27","08.release-notes/40.2025-09-27",{"title":1055,"path":1056,"stem":1057},"2025-07-07","/release-notes/2025-07-07","08.release-notes/39.2025-07-07",{"title":1059,"path":1060,"stem":1061},"2025-06-16","/release-notes/2025-06-16","08.release-notes/38.2025-06-16",{"title":1063,"path":1064,"stem":1065},"2025-05-29","/release-notes/2025-05-29","08.release-notes/37.2025-05-29",{"title":1067,"path":1068,"stem":1069},"2025-04-28","/release-notes/2025-04-28","08.release-notes/36.2025-04-28",{"title":1071,"path":1072,"stem":1073},"2025-03-24","/release-notes/2025-03-24","08.release-notes/35.2025-03-24",{"title":1075,"path":1076,"stem":1077},"2024-12-20","/release-notes/2024-12-20","08.release-notes/34.2024-12-20",{"title":1079,"path":1080,"stem":1081},"2024-10-21","/release-notes/2024-10-21","08.release-notes/33.2024-10-21",{"title":1083,"path":1084,"stem":1085},"2024-10-11","/release-notes/2024-10-11","08.release-notes/32.2024-10-11",{"title":1087,"path":1088,"stem":1089},"2024-09-11","/release-notes/2024-09-11","08.release-notes/31.2024-09-11",{"title":1091,"path":1092,"stem":1093},"2024-08-28","/release-notes/2024-08-28","08.release-notes/30.2024-08-28",{"title":1095,"path":1096,"stem":1097},"2024-07-10","/release-notes/2024-07-10","08.release-notes/29.2024-07-10",{"title":1099,"path":1100,"stem":1101},"2024-06-24","/release-notes/2024-06-24","08.release-notes/28.2024-06-24",{"title":1103,"path":1104,"stem":1105},"2024-05-15","/release-notes/2024-05-15","08.release-notes/27.2024-05-15",{"title":1107,"path":1108,"stem":1109},"2024-04-29","/release-notes/2024-04-29","08.release-notes/26.2024-04-29",{"title":1111,"path":1112,"stem":1113},"2024-03-18","/release-notes/2024-03-18","08.release-notes/25.2024-03-18",{"title":1115,"path":1116,"stem":1117},"2024-03-04","/release-notes/2024-03-04","08.release-notes/24.2024-03-04",{"title":1119,"path":1120,"stem":1121},"2024-02-26","/release-notes/2024-02-26","08.release-notes/23.2024-02-26",{"title":1123,"path":1124,"stem":1125},"2024-01-17","/release-notes/2024-01-17","08.release-notes/22.2024-01-17",{"title":1127,"path":1128,"stem":1129},"2023-12-27","/release-notes/2023-12-27","08.release-notes/21.2023-12-27",{"title":1131,"path":1132,"stem":1133},"2023-11-08","/release-notes/2023-11-08","08.release-notes/20.2023-11-08",{"title":1135,"path":1136,"stem":1137},"2023-10-10","/release-notes/2023-10-10","08.release-notes/19.2023-10-10",{"title":1139,"path":1140,"stem":1141},"2023-09-27","/release-notes/2023-09-27","08.release-notes/18.2023-09-27",{"title":1143,"path":1144,"stem":1145},"2023-09-18","/release-notes/2023-09-18","08.release-notes/17.2023-09-18",{"title":1147,"path":1148,"stem":1149},"2023-09-04","/release-notes/2023-09-04","08.release-notes/16.2023-09-04",{"title":1151,"path":1152,"stem":1153},"2023-08-04","/release-notes/2023-08-04","08.release-notes/15.2023-08-04",{"title":1155,"path":1156,"stem":1157},"2023-07-11","/release-notes/2023-07-11","08.release-notes/14.2023-07-11",{"title":1159,"path":1160,"stem":1161},"2023-06-21","/release-notes/2023-06-21","08.release-notes/13.2023-06-21",{"title":1163,"path":1164,"stem":1165},"2023-05-24","/release-notes/2023-05-24","08.release-notes/12.2023-05-24",{"title":1167,"path":1168,"stem":1169},"2023-04-24","/release-notes/2023-04-24","08.release-notes/11.2023-04-24",{"title":1171,"path":1172,"stem":1173},"2023-04-20","/release-notes/2023-04-20","08.release-notes/10.2023-04-20",{"title":1175,"path":1176,"stem":1177},"2023-03-20","/release-notes/2023-03-20","08.release-notes/09.2023-03-20",{"title":1179,"path":1180,"stem":1181},"2023-02-28","/release-notes/2023-02-28","08.release-notes/08.2023-02-28",{"title":1183,"path":1184,"stem":1185},"2023-01-17","/release-notes/2023-01-17","08.release-notes/07.2023-01-17",{"title":1187,"path":1188,"stem":1189},"2023-01-23","/release-notes/2023-01-23","08.release-notes/06.2023-01-23",{"title":1191,"path":1192,"stem":1193},"2022-12-21","/release-notes/2022-12-21","08.release-notes/05.2022-12-21",{"title":1195,"path":1196,"stem":1197},"2022-12-06","/release-notes/2022-12-06","08.release-notes/04.2022-12-06",{"title":1199,"path":1200,"stem":1201},"2022-11-15","/release-notes/2022-11-15","08.release-notes/03.2022-11-15",{"title":1203,"path":1204,"stem":1205},"2022-11-02","/release-notes/2022-11-02","08.release-notes/02.2022-11-02",{"title":1207,"path":1208,"stem":1209},"2022-10-17","/release-notes/2022-10-17","08.release-notes/01.2022-10-17",{"title":1211,"path":1212,"target":1213},"API","https://api-docs.devstride.com/","_blank",{"id":1215,"title":5,"body":1216,"description":2574,"extension":2575,"links":2576,"meta":2577,"navigation":1567,"path":917,"seo":2578,"stem":918,"__hash__":2579},"docs/07.developer-experience/01.intro/01.getting-started.md",{"type":1217,"value":1218,"toc":2553},"minimark",[1219,1223,1240,1306,1311,1444,1471,1475,1478,1483,1490,1731,1737,1741,1748,1764,1851,1854,1879,1908,1912,1966,1973,1976,1992,2009,2014,2167,2173,2178,2200,2209,2215,2230,2251,2255,2270,2285,2292,2307,2325,2354,2358,2361,2414,2429,2433,2436,2448,2462,2478,2482,2489,2521,2525,2549],[1220,1221,5],"h1",{"id":1222},"getting-started",[1224,1225,1226,1227,1231,1232,1235,1236,1239],"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 ",[1228,1229,1230],"code",{},".env"," file, followed by two commands (",[1228,1233,1234],{},"ds run backend"," and ",[1228,1237,1238],{},"ds run ui",") that you'll use every day after that.",[1241,1242,1245,1246,1249,1250,1253,1254,1257,1258,1261,1262,1249,1265,1249,1268,1249,1271,1249,1274,1249,1277,1249,1280,1249,1283,1286,1287,1290,1291,1294,1295,1302,1303,1305],"alert",{"title":1243,"type":1244},"No `ds setup`","info","There is no ",[1228,1247,1248],{},"ds setup",", ",[1228,1251,1252],{},"ds deploy",", or similar all-in-one bootstrap command. Every ",[1228,1255,1256],{},"ds"," invocation maps to one of eight Commander programs under ",[1228,1259,1260],{},"cli/commands/"," (",[1228,1263,1264],{},"run",[1228,1266,1267],{},"migrations",[1228,1269,1270],{},"data",[1228,1272,1273],{},"golden",[1228,1275,1276],{},"script",[1228,1278,1279],{},"stripe",[1228,1281,1282],{},"g",[1228,1284,1285],{},"worktree",") — bootstrapping is the manual sequence below. This guide uses a few CLI mechanics (the ",[1228,1288,1289],{},"-u","/",[1228,1292,1293],{},"-b"," flags, the bind cache, personal stages) before they're formally explained; the very next page, ",[1296,1297,1298,1299,1301],"a",{"href":921},"Introduction to the ",[1228,1300,1256],{}," CLI",", covers all of them, and the ",[1296,1304,924],{"href":925}," has the full flag list.",[1307,1308,1310],"h2",{"id":1309},"prerequisites","Prerequisites",[1312,1313,1314,1330],"table",{},[1315,1316,1317],"thead",{},[1318,1319,1320,1324,1327],"tr",{},[1321,1322,1323],"th",{},"Tool",[1321,1325,1326],{},"Purpose",[1321,1328,1329],{},"Notes",[1331,1332,1333,1358,1382,1402,1428],"tbody",{},[1318,1334,1335,1342,1345],{},[1336,1337,1338],"td",{},[1339,1340,1341],"strong",{},"Node.js 22",[1336,1343,1344],{},"Runtime for backend, frontend, and the CLI",[1336,1346,1347,1348,1354,1355],{},"Install via ",[1296,1349,1353],{"href":1350,"rel":1351},"https://github.com/nvm-sh/nvm",[1352],"nofollow","nvm",": ",[1228,1356,1357],{},"nvm install 22 && nvm alias default 22 && nvm use 22",[1318,1359,1360,1365,1368],{},[1336,1361,1362],{},[1339,1363,1364],{},"pnpm",[1336,1366,1367],{},"Package manager for the monorepo",[1336,1369,1370,1371,1374,1375,1378,1379],{},"Pinned by the ",[1228,1372,1373],{},"packageManager"," field in ",[1228,1376,1377],{},"package.json"," — get the matching version via Corepack (bundled with Node 22): ",[1228,1380,1381],{},"corepack enable",[1318,1383,1384,1389,1392],{},[1336,1385,1386],{},[1339,1387,1388],{},"AWS CLI v2",[1336,1390,1391],{},"Required for AWS SSO auth",[1336,1393,1394,1397,1398,1401],{},[1228,1395,1396],{},"brew install awscli",", plus ",[1228,1399,1400],{},"pip3 install aws-sso-credential-process aws-export-credentials"," so SST can use SSO credentials",[1318,1403,1404,1409,1425],{},[1336,1405,1406],{},[1339,1407,1408],{},"AWS SSO access",[1336,1410,1411,1412,1414,1415,1249,1417,1420,1421,1424],{},"Every AWS-bound ",[1228,1413,1256],{}," command (i.e. not ",[1228,1416,1289],{},[1228,1418,1419],{},"ds run local",", or ",[1228,1422,1423],{},"ds worktree",") authenticates against AWS SSO before running",[1336,1426,1427],{},"Provisioned by a team lead — you'll get an email to set up SSO",[1318,1429,1430,1435,1441],{},[1336,1431,1432],{},[1339,1433,1434],{},"Docker",[1336,1436,1437,1438],{},"Runs local DynamoDB ",[1339,1439,1440],{},"for the backend test suite only",[1336,1442,1443],{},"Not needed for local development — see the callout below",[1241,1445,1448,1450,1451,1454,1455,1458,1459,1462,1463,1466,1467,1470],{"title":1446,"type":1447},"Docker is for tests, not for `ds run backend`","warning",[1228,1449,1234],{}," does ",[1339,1452,1453],{},"not"," start Docker or any local services — it runs ",[1228,1456,1457],{},"pnpm install",", cleans up orphaned CloudFormation stacks, and then ",[1228,1460,1461],{},"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 (",[1228,1464,1465],{},"NODE_ENV=test","), and only if you run ",[1228,1468,1469],{},"cd backend && pnpm test",". You don't need Docker running to develop locally — only to run tests.",[1307,1472,1474],{"id":1473},"bootstrap-sequence","Bootstrap Sequence",[1224,1476,1477],{},"Do this once, in order, from the repo root.",[1479,1480,1482],"h3",{"id":1481},"_1-set-your-shell-environment-variables","1. Set your shell environment variables",[1224,1484,1485,1486,1489],{},"Add to your shell config (e.g. ",[1228,1487,1488],{},".zshrc","):",[1491,1492,1497],"pre",{"className":1493,"code":1494,"language":1495,"meta":1496,"style":1496},"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","",[1228,1498,1499,1525,1548,1563,1569,1581,1593,1597,1606,1615,1629,1684,1700,1706,1711],{"__ignoreMap":1496},[1500,1501,1503,1507,1511,1515,1518,1521],"span",{"class":1502,"line":11},"line",[1500,1504,1506],{"class":1505},"spNyl","export",[1500,1508,1510],{"class":1509},"sTEyZ"," DEVSTRIDE_STAGE",[1500,1512,1514],{"class":1513},"sMK4o","=${",[1500,1516,1517],{"class":1509},"your_name",[1500,1519,1520],{"class":1513},"}",[1500,1522,1524],{"class":1523},"sHwdD","              # e.g. phil\n",[1500,1526,1527,1529,1532,1535,1538,1541,1543,1545],{"class":1502,"line":238},[1500,1528,1506],{"class":1505},[1500,1530,1531],{"class":1509}," DEVSTRIDE_DEV_PROFILE",[1500,1533,1534],{"class":1513},"=",[1500,1536,1537],{"class":1509},"devstride-",[1500,1539,1540],{"class":1513},"${",[1500,1542,1517],{"class":1509},[1500,1544,1520],{"class":1513},[1500,1546,1547],{"class":1523},"  # e.g. devstride-phil\n",[1500,1549,1550,1552,1555,1557,1560],{"class":1502,"line":296},[1500,1551,1506],{"class":1505},[1500,1553,1554],{"class":1509}," DEVSTRIDE_REGION",[1500,1556,1534],{"class":1513},[1500,1558,1559],{"class":1509},"eu-central-1              ",[1500,1561,1562],{"class":1523},"# or whichever region is nearest you\n",[1500,1564,1565],{"class":1502,"line":371},[1500,1566,1568],{"emptyLinePlaceholder":1567},true,"\n",[1500,1570,1571,1573,1576,1578],{"class":1502,"line":538},[1500,1572,1506],{"class":1505},[1500,1574,1575],{"class":1509}," AWS_CONFIGURE_SSO_DEFAULT_SSO_START_URL",[1500,1577,1534],{"class":1513},[1500,1579,1580],{"class":1509},"https://devstride.awsapps.com/start\n",[1500,1582,1583,1585,1588,1590],{"class":1502,"line":548},[1500,1584,1506],{"class":1505},[1500,1586,1587],{"class":1509}," AWS_CONFIGURE_SSO_DEFAULT_SSO_REGION",[1500,1589,1534],{"class":1513},[1500,1591,1592],{"class":1509},"us-east-1\n",[1500,1594,1595],{"class":1502,"line":485},[1500,1596,1568],{"emptyLinePlaceholder":1567},[1500,1598,1599,1603],{"class":1502,"line":274},[1500,1600,1602],{"class":1601},"s2Zo4","sso",[1500,1604,1605],{"class":1513},"(){\n",[1500,1607,1608,1611],{"class":1502,"line":739},[1500,1609,1610],{"class":1601},"  unset",[1500,1612,1614],{"class":1613},"sfazB"," AWS_PROFILE\n",[1500,1616,1617,1620,1623,1625],{"class":1502,"line":654},[1500,1618,1619],{"class":1505},"  export",[1500,1621,1622],{"class":1509}," AWS_PROFILE",[1500,1624,1534],{"class":1513},[1500,1626,1628],{"class":1627},"sHdIc","$1\n",[1500,1630,1631,1635,1638,1641,1644,1647,1650,1653,1656,1659,1662,1664,1667,1669,1672,1675,1678,1681],{"class":1502,"line":978},[1500,1632,1634],{"class":1633},"sBMFI","  aws",[1500,1636,1637],{"class":1613}," sts",[1500,1639,1640],{"class":1613}," get-caller-identity",[1500,1642,1643],{"class":1513}," &>",[1500,1645,1646],{"class":1509}," /dev/null ",[1500,1648,1649],{"class":1513},"||",[1500,1651,1652],{"class":1633}," aws",[1500,1654,1655],{"class":1613}," sso",[1500,1657,1658],{"class":1613}," login",[1500,1660,1661],{"class":1513}," ||",[1500,1663,1261],{"class":1513},[1500,1665,1666],{"class":1601},"unset",[1500,1668,1622],{"class":1613},[1500,1670,1671],{"class":1513}," &&",[1500,1673,1674],{"class":1633}," aws-configure-sso-profile",[1500,1676,1677],{"class":1613}," --profile",[1500,1679,1680],{"class":1627}," $1",[1500,1682,1683],{"class":1513},")\n",[1500,1685,1686,1689,1692,1695,1698],{"class":1502,"line":795},[1500,1687,1688],{"class":1601},"  eval",[1500,1690,1691],{"class":1513}," $(",[1500,1693,1694],{"class":1633},"aws-export-credentials",[1500,1696,1697],{"class":1613}," --env-export",[1500,1699,1683],{"class":1513},[1500,1701,1703],{"class":1502,"line":1702},13,[1500,1704,1705],{"class":1513},"}\n",[1500,1707,1709],{"class":1502,"line":1708},14,[1500,1710,1568],{"emptyLinePlaceholder":1567},[1500,1712,1714,1717,1720,1722,1725,1728],{"class":1502,"line":1713},15,[1500,1715,1716],{"class":1505},"alias",[1500,1718,1719],{"class":1509}," ds",[1500,1721,1534],{"class":1513},[1500,1723,1724],{"class":1513},"'",[1500,1726,1727],{"class":1613},"./ds",[1500,1729,1730],{"class":1513},"'\n",[1224,1732,1733,1736],{},[1228,1734,1735],{},"DEVSTRIDE_STAGE"," becomes the name of your own personal cloud stage — every developer deploys to their own isolated stage, keyed off this value.",[1479,1738,1740],{"id":1739},"_2-set-up-aws-sso","2. Set up AWS SSO",[1224,1742,1743,1744,1747],{},"Install the AWS CLI v2, then configure SSO with the same profile name as ",[1228,1745,1746],{},"DEVSTRIDE_DEV_PROFILE",":",[1491,1749,1751],{"className":1493,"code":1750,"language":1495,"meta":1496,"style":1496},"aws configure sso\n",[1228,1752,1753],{"__ignoreMap":1496},[1500,1754,1755,1758,1761],{"class":1502,"line":11},[1500,1756,1757],{"class":1633},"aws",[1500,1759,1760],{"class":1613}," configure",[1500,1762,1763],{"class":1613}," sso\n",[1491,1765,1767],{"className":1493,"code":1766,"language":1495,"meta":1496,"style":1496},"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",[1228,1768,1769,1783,1793,1798,1817,1832],{"__ignoreMap":1496},[1500,1770,1771,1774,1777,1780],{"class":1502,"line":11},[1500,1772,1773],{"class":1633},"SSO",[1500,1775,1776],{"class":1613}," start",[1500,1778,1779],{"class":1613}," URL",[1500,1781,1782],{"class":1509}," [None]: https://devstride.awsapps.com/start\n",[1500,1784,1785,1787,1790],{"class":1502,"line":238},[1500,1786,1773],{"class":1633},[1500,1788,1789],{"class":1613}," Region",[1500,1791,1792],{"class":1509}," [None]: us-east-1\n",[1500,1794,1795],{"class":1502,"line":296},[1500,1796,1797],{"class":1523},"# after logging in via the browser:\n",[1500,1799,1800,1803,1806,1809,1811,1814],{"class":1502,"line":371},[1500,1801,1802],{"class":1633},"CLI",[1500,1804,1805],{"class":1613}," default",[1500,1807,1808],{"class":1613}," client",[1500,1810,1789],{"class":1613},[1500,1812,1813],{"class":1509}," [None]: eu-central-1   ",[1500,1815,1816],{"class":1523},"# nearest region for you\n",[1500,1818,1819,1821,1823,1826,1829],{"class":1502,"line":538},[1500,1820,1802],{"class":1633},[1500,1822,1805],{"class":1613},[1500,1824,1825],{"class":1613}," output",[1500,1827,1828],{"class":1613}," format",[1500,1830,1831],{"class":1509}," [None]: json\n",[1500,1833,1834,1836,1839,1842,1845,1847,1849],{"class":1502,"line":548},[1500,1835,1802],{"class":1633},[1500,1837,1838],{"class":1613}," profile",[1500,1840,1841],{"class":1613}," name",[1500,1843,1844],{"class":1509}," [AWSAdministratorAccess-xxxxxxxxxxxx]: devstride-",[1500,1846,1540],{"class":1513},[1500,1848,1517],{"class":1509},[1500,1850,1705],{"class":1513},[1224,1852,1853],{},"Then install the two helper packages SST needs to consume SSO credentials:",[1491,1855,1857],{"className":1493,"code":1856,"language":1495,"meta":1496,"style":1496},"pip3 install aws-sso-credential-process\npip3 install aws-export-credentials\n",[1228,1858,1859,1870],{"__ignoreMap":1496},[1500,1860,1861,1864,1867],{"class":1502,"line":11},[1500,1862,1863],{"class":1633},"pip3",[1500,1865,1866],{"class":1613}," install",[1500,1868,1869],{"class":1613}," aws-sso-credential-process\n",[1500,1871,1872,1874,1876],{"class":1502,"line":238},[1500,1873,1863],{"class":1633},[1500,1875,1866],{"class":1613},[1500,1877,1878],{"class":1613}," aws-export-credentials\n",[1241,1880,1882,1883,1885,1886,1889,1890,1893,1894,1896,1897,1900,1901,1903,1904,1907],{"title":1881,"type":1244},"Every `ds` command re-checks SSO","The ",[1228,1884,1727],{}," wrapper runs ",[1228,1887,1888],{},"aws sts get-caller-identity"," (falling back to ",[1228,1891,1892],{},"aws sso login",") before every command, unless you pass ",[1228,1895,1289],{}," to skip auth. It also (re)generates a stage/region bind cache at ",[1228,1898,1899],{},".ds/bind/\u003Cstage>-\u003Cregion>.env"," — pass ",[1228,1902,1293],{}," to force a fresh bind even if a cached one exists. Usage: ",[1228,1905,1906],{},"ds [-b] [-r] [-u] \u003Ccommand> [subcommand] [args]",".",[1479,1909,1911],{"id":1910},"_3-install-node-22-and-pnpm","3. Install Node 22 and pnpm",[1491,1913,1915],{"className":1493,"code":1914,"language":1495,"meta":1496,"style":1496},"nvm install 22\nnvm alias default 22\nnvm use 22\n\ncorepack enable\npnpm install\n",[1228,1916,1917,1927,1938,1947,1951,1959],{"__ignoreMap":1496},[1500,1918,1919,1921,1923],{"class":1502,"line":11},[1500,1920,1353],{"class":1633},[1500,1922,1866],{"class":1613},[1500,1924,1926],{"class":1925},"sbssI"," 22\n",[1500,1928,1929,1931,1934,1936],{"class":1502,"line":238},[1500,1930,1353],{"class":1633},[1500,1932,1933],{"class":1613}," alias",[1500,1935,1805],{"class":1613},[1500,1937,1926],{"class":1925},[1500,1939,1940,1942,1945],{"class":1502,"line":296},[1500,1941,1353],{"class":1633},[1500,1943,1944],{"class":1613}," use",[1500,1946,1926],{"class":1925},[1500,1948,1949],{"class":1502,"line":371},[1500,1950,1568],{"emptyLinePlaceholder":1567},[1500,1952,1953,1956],{"class":1502,"line":538},[1500,1954,1955],{"class":1633},"corepack",[1500,1957,1958],{"class":1613}," enable\n",[1500,1960,1961,1963],{"class":1502,"line":548},[1500,1962,1364],{"class":1633},[1500,1964,1965],{"class":1613}," install\n",[1479,1967,1969,1970,1972],{"id":1968},"_4-fill-in-your-env-file","4. Fill in your ",[1228,1971,1230],{}," file",[1224,1974,1975],{},"Copy the sample and fill in real values by hand:",[1491,1977,1979],{"className":1493,"code":1978,"language":1495,"meta":1496,"style":1496},"cp .env.sample .env\n",[1228,1980,1981],{"__ignoreMap":1496},[1500,1982,1983,1986,1989],{"class":1502,"line":11},[1500,1984,1985],{"class":1633},"cp",[1500,1987,1988],{"class":1613}," .env.sample",[1500,1990,1991],{"class":1613}," .env\n",[1241,1993,1995,1996,1999,2000,2003,2004,2006,2007,1907],{"title":1994,"type":1447},"There is no secrets-pull command","DevStride has no CLI command that fetches these values for you. ",[1228,1997,1998],{},".env.sample"," ships with ",[1228,2001,2002],{},"changeme"," placeholders — you get the real values from a teammate and paste them in yourself. Nothing in ",[1228,2005,1256],{}," reaches into AWS Secrets Manager (or anywhere else) to populate your local ",[1228,2008,1230],{},[1224,2010,2011,2013],{},[1228,2012,1998],{}," lists the following, all needing real values before the app will run correctly:",[1312,2015,2016,2026],{},[1315,2017,2018],{},[1318,2019,2020,2023],{},[1321,2021,2022],{},"Group",[1321,2024,2025],{},"Variables",[1331,2027,2028,2038,2048,2073,2092,2108,2118,2131,2142],{},[1318,2029,2030,2033],{},[1336,2031,2032],{},"Domain",[1336,2034,2035],{},[1228,2036,2037],{},"DOMAIN",[1318,2039,2040,2043],{},[1336,2041,2042],{},"Giphy",[1336,2044,2045],{},[1228,2046,2047],{},"GIPHY_API_KEY",[1318,2049,2050,2053],{},[1336,2051,2052],{},"GitHub App",[1336,2054,2055,1249,2058,1249,2061,1249,2064,1249,2067,1249,2070],{},[1228,2056,2057],{},"GITHUB_APP_CERT",[1228,2059,2060],{},"GITHUB_APP_ID",[1228,2062,2063],{},"GITHUB_APP_NAME",[1228,2065,2066],{},"GITHUB_CLIENT_ID",[1228,2068,2069],{},"GITHUB_CLIENT_SECRET",[1228,2071,2072],{},"GITHUB_WEBHOOK_SECRET",[1318,2074,2075,2078],{},[1336,2076,2077],{},"Pusher",[1336,2079,2080,1249,2083,1249,2086,1249,2089],{},[1228,2081,2082],{},"PUSHER_APP_CLUSTER",[1228,2084,2085],{},"PUSHER_APP_ID",[1228,2087,2088],{},"PUSHER_APP_KEY",[1228,2090,2091],{},"PUSHER_APP_SECRET",[1318,2093,2094,2097],{},[1336,2095,2096],{},"Stripe",[1336,2098,2099,1249,2102,1249,2105],{},[1228,2100,2101],{},"STRIPE_PUBLIC_KEY",[1228,2103,2104],{},"STRIPE_SECRET_KEY",[1228,2106,2107],{},"STRIPE_WEBHOOK_SECRET",[1318,2109,2110,2113],{},[1336,2111,2112],{},"OpenAI",[1336,2114,2115],{},[1228,2116,2117],{},"OPENAI_API_KEY",[1318,2119,2120,2123],{},[1336,2121,2122],{},"Database",[1336,2124,2125,1249,2128],{},[1228,2126,2127],{},"DB_CONNECTION_STRING",[1228,2129,2130],{},"DB_CONNECTION_STRING_READ_ONLY",[1318,2132,2133,2136],{},[1336,2134,2135],{},"Encryption",[1336,2137,2138,2141],{},[1228,2139,2140],{},"ENCRYPTION_KEY"," (see step 5)",[1318,2143,2144,2147],{},[1336,2145,2146],{},"SMTP (optional)",[1336,2148,2149,1249,2152,1249,2155,1249,2158,1249,2161,1249,2164],{},[1228,2150,2151],{},"USE_SMTP",[1228,2153,2154],{},"SMTP_HOST",[1228,2156,2157],{},"SMTP_PORT",[1228,2159,2160],{},"SMTP_USER",[1228,2162,2163],{},"SMTP_PASS",[1228,2165,2166],{},"SMTP_FROM",[1479,2168,2170,2171],{"id":2169},"_5-generate-an-encryption_key","5. Generate an ",[1228,2172,2140],{},[1224,2174,2175,2177],{},[1228,2176,2140],{}," must be exactly 32 bytes (64 hex characters) — it's used to encrypt sensitive data such as database credentials in transit:",[1491,2179,2181],{"className":1493,"code":2180,"language":1495,"meta":1496,"style":1496},"node -e \"console.log(require('crypto').randomBytes(32).toString('hex'))\"\n",[1228,2182,2183],{"__ignoreMap":1496},[1500,2184,2185,2188,2191,2194,2197],{"class":1502,"line":11},[1500,2186,2187],{"class":1633},"node",[1500,2189,2190],{"class":1613}," -e",[1500,2192,2193],{"class":1513}," \"",[1500,2195,2196],{"class":1613},"console.log(require('crypto').randomBytes(32).toString('hex'))",[1500,2198,2199],{"class":1513},"\"\n",[1224,2201,2202,2203,2205,2206,2208],{},"Paste the result into ",[1228,2204,1230],{}," as ",[1228,2207,2140],{},". Never commit this value — each environment should have its own unique key.",[1479,2210,2212,2213],{"id":2211},"_6-first-deploy-ds-run-backend","6. First deploy: ",[1228,2214,1234],{},[1491,2216,2218],{"className":1493,"code":2217,"language":1495,"meta":1496,"style":1496},"ds run backend\n",[1228,2219,2220],{"__ignoreMap":1496},[1500,2221,2222,2224,2227],{"class":1502,"line":11},[1500,2223,1256],{"class":1633},[1500,2225,2226],{"class":1613}," run",[1500,2228,2229],{"class":1613}," backend\n",[1224,2231,2232,2233,2237,2238,2240,2241,2243,2244,2246,2247,2250],{},"This is both how you run the backend day-to-day ",[2234,2235,2236],"em",{},"and"," how your personal SST stage gets created the first time — ",[1228,2239,1234],{}," runs ",[1228,2242,1457],{},", cleans up any orphaned CloudFormation stacks, then runs ",[1228,2245,1461],{},", which provisions your stage's AWS resources on first run. Once it finishes deploying, stop it (",[1228,2248,2249],{},"Ctrl+C",") — you need to run migrations and push config before it's actually usable.",[1479,2252,2254],{"id":2253},"_7-run-database-migrations","7. Run database migrations",[1491,2256,2258],{"className":1493,"code":2257,"language":1495,"meta":1496,"style":1496},"ds migrations run\n",[1228,2259,2260],{"__ignoreMap":1496},[1500,2261,2262,2264,2267],{"class":1502,"line":11},[1500,2263,1256],{"class":1633},[1500,2265,2266],{"class":1613}," migrations",[1500,2268,2269],{"class":1613}," run\n",[1241,2271,2274,2277,2278,2281,2282,2284],{"title":2272,"type":2273},"`run` vs `run-sql`","note",[1228,2275,2276],{},"ds migrations run-sql"," currently does exactly the same thing as ",[1228,2279,2280],{},"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; ",[1228,2283,2280],{}," is the one documented going forward.",[1479,2286,2288,2289],{"id":2287},"_8-push-your-config-ds-script-set-config","8. Push your config: ",[1228,2290,2291],{},"ds script set-config",[1491,2293,2295],{"className":1493,"code":2294,"language":1495,"meta":1496,"style":1496},"ds script set-config\n",[1228,2296,2297],{"__ignoreMap":1496},[1500,2298,2299,2301,2304],{"class":1502,"line":11},[1500,2300,1256],{"class":1633},[1500,2302,2303],{"class":1613}," script",[1500,2305,2306],{"class":1613}," set-config\n",[1224,2308,2309,2310,2312,2313,2316,2317,2320,2321,2324],{},"This reads your local ",[1228,2311,1230],{},", validates that every required variable is set (DB connection strings, Stripe, OpenAI, GitHub App, Pusher, Slack, encryption key, and more), and ",[1339,2314,2315],{},"pushes"," them up into an SST ",[1228,2318,2319],{},"DEVSTRIDE_CONFIG"," secret (base64-encoded JSON) that your running Lambda / ",[1228,2322,2323],{},"sst dev"," process reads at runtime.",[1241,2326,2328,2330,2331,2333,2334,2336,2337,2340,2341,2344,2345,2347,2348,2350,2351,2353],{"title":2327,"type":1447},"This pushes, it does not pull",[1228,2329,2291],{}," is a one-way push from your local ",[1228,2332,1230],{}," up to SST. It does not fetch or sync anything down. The running backend never reads ",[1228,2335,1230],{}," directly at runtime — the CLI-side ",[1228,2338,2339],{},"dotenv.config()"," only feeds the CLI/build-time process used to synth ",[1228,2342,2343],{},"sst.config.ts","; the deployed Lambda/",[1228,2346,2323],{}," process gets its secrets exclusively through the SST Config binding that this command populates. If you change a value in ",[1228,2349,1230],{},", you must re-run ",[1228,2352,2291],{}," for it to take effect.",[1479,2355,2357],{"id":2356},"_9-set-up-stripe-test-mode","9. Set up Stripe (test mode)",[1224,2359,2360],{},"Ask a teammate to set up a Stripe test account for you, then:",[2362,2363,2364,2382,2405,2411],"ol",{},[2365,2366,2367,2368,2373,2374,2376,2377,2379,2380,1907],"li",{},"Grab the secret key from the ",[1296,2369,2372],{"href":2370,"rel":2371},"https://dashboard.stripe.com/test/apikeys",[1352],"Stripe test API keys page"," and set ",[1228,2375,2104],{}," / ",[1228,2378,2101],{}," in ",[1228,2381,1230],{},[2365,2383,2384,2385,2388,2389,1249,2392,1249,2395,2398,2399,2402,2403,1907],{},"Add a webhook endpoint at ",[1228,2386,2387],{},"https://api.{stage}.devstride.dev/v1/subscriptions/stripe/webhooks",", listening for ",[1228,2390,2391],{},"customer.subscription.created",[1228,2393,2394],{},"customer.subscription.deleted",[1228,2396,2397],{},"customer.subscription.trial_will_end",", and ",[1228,2400,2401],{},"customer.subscription.updated",". Copy the signing secret into ",[1228,2404,2107],{},[2365,2406,2407,2408,2410],{},"Re-run ",[1228,2409,2291],{}," so the updated values are pushed up.",[2365,2412,2413],{},"Seed Stripe products:",[1491,2415,2417],{"className":1493,"code":2416,"language":1495,"meta":1496,"style":1496},"ds stripe add-products\n",[1228,2418,2419],{"__ignoreMap":1496},[1500,2420,2421,2423,2426],{"class":1502,"line":11},[1500,2422,1256],{"class":1633},[1500,2424,2425],{"class":1613}," stripe",[1500,2427,2428],{"class":1613}," add-products\n",[1307,2430,2432],{"id":2431},"daily-use","Daily Use",[1224,2434,2435],{},"Once bootstrapping is done, this is all you run day to day, in two terminal tabs:",[1491,2437,2438],{"className":1493,"code":2217,"language":1495,"meta":1496,"style":1496},[1228,2439,2440],{"__ignoreMap":1496},[1500,2441,2442,2444,2446],{"class":1502,"line":11},[1500,2443,1256],{"class":1633},[1500,2445,2226],{"class":1613},[1500,2447,2229],{"class":1613},[1491,2449,2451],{"className":1493,"code":2450,"language":1495,"meta":1496,"style":1496},"ds run ui\n",[1228,2452,2453],{"__ignoreMap":1496},[1500,2454,2455,2457,2459],{"class":1502,"line":11},[1500,2456,1256],{"class":1633},[1500,2458,2226],{"class":1613},[1500,2460,2461],{"class":1613}," ui\n",[1224,2463,2464,2466,2467,2469,2470,2473,2474,2477],{},[1228,2465,1234],{}," starts SST's live-lambda dev mode against your personal stage. ",[1228,2468,1238],{}," spawns the Vite dev server in ",[1228,2471,2472],{},"frontend/",", wired up with ",[1228,2475,2476],{},"VITE_*"," env vars derived from your bound stage.",[1307,2479,2481],{"id":2480},"running-the-test-suite","Running the Test Suite",[1224,2483,2484,2485,2488],{},"The backend test suite needs Docker for a local DynamoDB — this is the ",[2234,2486,2487],{},"only"," place Docker is required:",[1491,2490,2492],{"className":1493,"code":2491,"language":1495,"meta":1496,"style":1496},"docker pull amazon/dynamodb-local\ncd backend && pnpm test\n",[1228,2493,2494,2505],{"__ignoreMap":1496},[1500,2495,2496,2499,2502],{"class":1502,"line":11},[1500,2497,2498],{"class":1633},"docker",[1500,2500,2501],{"class":1613}," pull",[1500,2503,2504],{"class":1613}," amazon/dynamodb-local\n",[1500,2506,2507,2510,2513,2515,2518],{"class":1502,"line":238},[1500,2508,2509],{"class":1601},"cd",[1500,2511,2512],{"class":1613}," backend",[1500,2514,1671],{"class":1513},[1500,2516,2517],{"class":1633}," pnpm",[1500,2519,2520],{"class":1613}," test\n",[1307,2522,2524],{"id":2523},"next-steps","Next Steps",[2526,2527,2528,2536,2541],"ul",{},[2365,2529,2530,2532,2533,2535],{},[1296,2531,920],{"href":921}," — How ",[1228,2534,1727],{}," resolves and runs a command, and the flags used above",[2365,2537,2538,2540],{},[1296,2539,928],{"href":929}," — Running and debugging locally day-to-day",[2365,2542,2543,2545,2546,2548],{},[1296,2544,924],{"href":925}," — Every ",[1228,2547,1256],{}," command, organized by category",[2550,2551,2552],"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":1496,"searchDepth":238,"depth":238,"links":2554},[2555,2556,2571,2572,2573],{"id":1309,"depth":238,"text":1310},{"id":1473,"depth":238,"text":1474,"children":2557},[2558,2559,2560,2561,2563,2565,2567,2568,2570],{"id":1481,"depth":296,"text":1482},{"id":1739,"depth":296,"text":1740},{"id":1910,"depth":296,"text":1911},{"id":1968,"depth":296,"text":2562},"4. Fill in your .env file",{"id":2169,"depth":296,"text":2564},"5. Generate an ENCRYPTION_KEY",{"id":2211,"depth":296,"text":2566},"6. First deploy: ds run backend",{"id":2253,"depth":296,"text":2254},{"id":2287,"depth":296,"text":2569},"8. Push your config: ds script set-config",{"id":2356,"depth":296,"text":2357},{"id":2431,"depth":238,"text":2432},{"id":2480,"depth":238,"text":2481},{"id":2523,"depth":238,"text":2524},"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":2574},"ZRDtJMCb_ayrhk8RTBlIUgOrENx6Ft9c3y_k28LpDP0",[2581,2583],{"title":903,"path":904,"stem":905,"description":2582,"children":-1},"Bring Outlook calendar events and Microsoft Teams calls into Weekly Logs to log time with a few clicks.",{"title":920,"path":921,"stem":922,"description":2584,"children":-1},"What the ds CLI actually wraps, how ./ds resolves and runs a command, the global auth/bind flags, and the eight real top-level commands.",1783661002189]