A | B | C | D | E | G | H | I | J | K | L | M | N | O | ||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | l | Capability (short-form title) | Capability Family | Milestone | Required for MVP | Priority (1-10) | Link | Story (long form description) | FTEs | Best Case Size (weeks) | Realistic Case Size (weeks) | Worst Case Size (weeks) | Most Probable Size (calculated, FTE weeks) | Variance | |
2 | 1 | Adding components | Page Builder | 0.1.0 | Yes | 10 | As a creator, I want to add components to pages using an intuitive interface, so that I can create engaging and dynamic layouts that effectively communicate my message and engage with my audience. This includes features such as a drag-and-drop interface, customizable settings for each component, and seamless integration with other Drupal features such as media management. | 3 | 6 | 9 | 13 | 27.50 | 12.25 | ||
3 | 1.1 | Elements | Page Builder | | Yes | 10 | As a creator, I want to add elements to pages using an intuitive interface, so that I can start creating content before having a defined design system. These elements may be later used to create new components. | 2 | 3 | 4 | 6 | 8.33 | 1 | ||
4 | 1.2 | Design system (foundations) | Page Builder | 1.0.0 | Yes | 10 | As a builder, I want to be able to create design systems that may combine any experience builder configuration (once they have been implemneted). This includes 1) Style Guide 2) Patterns 3) Components 4) Templates (except content model templates) in a way that they could be shipped as a package (e.g. default design system for Drupal, or a design system of an enterprise to use across multiple brands) | 1.5 | 3 | 4 | 5 | 6.00 | 0.25 | ||
5 | 1.3 | Default design system | Page Builder | 0.1.0 | Yes | 10 | As a creator, I want to have a default design system to start with so that I can start creating content without having to first define a design system. The default design system should include pre-configured patterns, components, and a styleguide. | 2 | 15 | 18 | 20 | 35.67 | 2.777777778 | ||
6 | 2 | Content editing (of fields) | Page Builder | 1.0.0 | Yes | 10 | As a content creator, I want to edit fields directly within the page builder interface. For example, the title should be editable on the same page as the page builder. I expect the page title to be displayed in the preview. WITHOUT IN-PLACE EDITING | 2 | 8 | 12 | 16 | 24.00 | 7.111111111 | ||
7 | 2.1 | Content editing of meta fields | Page Builder | 0.3.0 | Yes | 10 | As a content creator, I want to edit meta fields directly within the page builder interface. For example, the menu links and URL alias should be editable on the same page as the page builder. I expect the page title to be displayed in the preview. | 2 | 2 | 4 | 6 | 8.00 | 1.777777778 | ||
8 | 3 | Real-time page preview | Page Builder | 0.1.0 | Yes | 10 | As a creator, when I'm editing content, I want to see a real time preview of what I'm editing. Custom component code should not have to be aware that it may be rendered in the page builder. | 2.2 | 16 | 18 | 22 | 40.33 | 4.84 | ||
9 | 4 | Component creation | Theme Builder | | No | 10 | As a builder, I want to create components using pre-defined elements and components via no-code tools. While creating components, builders want to define how the component looks and which parameters the component can take. The component may be rendered using the parameter values or static values. | 2.5 | 4 | 8 | 10 | 19.17 | 6.25 | ||
10 | 5 | Place blocks as components | Page Builder | 1.0.0 | Yes | 10 | As a builder, I can place and render blocks and fields rendered via Twig if they are exposed to the page builder as components. Blocks and fields defined in Twig should be able to render both in the preview, and the end-user facing page. This is to enable backwards compatibility with code that already exist in contrib and custom modules. | 2 | 4 | 5 | 8 | 10.67 | 1.777777778 | ||
11 | 6 | Save (draft) content | Page Builder | 0.2.0 | Yes | 9 | As a creator, I can create draft content and preview and edit content that hasn't been published yet. The workflow state is consistent for the page and the components that are added to the page. Past-facing sibling: "Revisionable pages" capability. | 2.1 | 4 | 6 | 10 | 13.30 | 4.41 | ||
12 | 7 | Content type templates | Page Builder | 1.0.0 | Yes | 9 | As a builder, I want to create and modify content type templates for how content of a specific content type will be displayed. I want to be able to create multiple templates for a given content type (view mode). Within the template, I want to add components that may or may not map to fields in the content type. | 3 | 3 | 4 | 6 | 12.50 | 2.25 | ||
13 | 7.1 | Tokens | Page Builder | 0.2.0 | Yes | 9 | As a creator, I want to map component properties to fields instead of using static content. For example, display the node title in a hero component, or use a design token (i.e. CSS variable) for the background color of the hero component. | 2 | 6 | 8 | 15 | 17.67 | 9 | ||
14 | 7.2 | Following entity relationships | Page Builder | | No | 6 | As a creator, I want to place field values from referenced entities in a component, for example: the value for the location field of the User entity in the author field of the currently laid out Node entity. | ||||||||
15 | 7.3 | Applying SDC to each field item (delta) | Page Builder | | No | As a creator, I want to be able to render each item (delta) in a field using an SDC. For example, if a tags field contains 3 terms (i.e. referenced entities), then I want to render each using a "card" component. If there are zero terms, I would want nothing to be rendered. The UX indicates (visually + otherwise) that it's not 1 but 0…N, 0…1, 1…N, 1…5 components, depending on the cardinality of the field. | |||||||||
16 | 8 | Moving components (Page builder) | Page Builder | 0.1.0 | Yes | 9 | As a creator, I want to be able to insert new components and change the order of the components, and move them from one place to another on the page. This will require actions for drag-and-drop, clicking with mouse, and keyboard. | 2 | 3 | 4 | 6 | 8.33 | 1 | ||
17 | 8.1 | Moving components (Component builder) | Theme Builder | | No | | As a builder, I want to be able to move elements and components while editing a component. This includes changing the order of them, and moving them from one place to another in the component. This will require actions for drag-and-drop, clicking with mouse, and keyboard. | 2 | 2 | 4 | 10 | 9.33 | 7.111111111 | ||
18 | 9 | Revisionable pages | Page Builder | 0.2.0 | Yes | 9 | As a builder, when I make changes to pages, I want to be able to see previous versions of the page and revert back to an older version of the page. This could be either before or after the page has been published. Future-facing sibling: "Draft content" capability. | 1.5 | 2 | 2 | 4 | 3.50 | 0.25 | ||
19 | 10 | Component preview | Theme Builder | | No | 9 | As a builder, when I'm editing components, I want to see a real time preview of what I'm editing. I want to be able to define temporary values for any values that would be usually set dynamically, e.g. component parameters. Ideally the interface is the same or very similar to the page builder. | 2 | 4 | 10 | 12 | 18.67 | 7.111111111 | ||
20 | 11 | Component hover | Page Builder | 0.1.0 | Yes | 9 | As a builder or creator, I expect to be able to inspect any visual element on the page by hovering/clicking on it. This will either let me edit it (if editable), and/or tell me what rendered it and tell me how to edit it. For example, an instance of component would be editable within the current page, but would also provide builders with guidance to how to edit the structure of the component. | 2 | 6 | 8 | 10 | 16.00 | 1.777777778 | ||
21 | 12 | Nestable components | Page Builder | 1.0.0 | Yes | 8 | As a creator, I want to be able to nest components. For example, I want to render accordion which contains text within a two-column layout. | 0 | 0 | 0 | 0 | 0.00 | 0 | ||
22 | 12.1 | Multiple dropzones | Page Builder | | No | 7 | As a builder, I want to be able to create components with multiple dropzones. | 0 | 0 | 0 | 0 | 0.00 | 0 | ||
23 | 12.2 | Component props and dropzones | Page Builder | | No | 7 | As a builder, I want to be able to create components that may consist of props and a dropzone. For example, image on the side and a dropzone. | 1.1 | 1 | 2 | 4 | 2.38 | 0.3025 | ||
24 | 13 | Undo and redo | Page Builder | | Yes | 8 | As a creator, I want to be able to trial and error when making changes. This can be enabled by undo and redo functionality which can be triggered without saving content. This is not same as revisioning, this is more like CTRL+Z and CTRL+SHIFT+Z in text editors. These changes do not have to stored after the content has been published. | 2 | 2 | 3 | 6 | 6.67 | 1.777777778 | ||
25 | 14 | Configuration management | Theme Builder | 0.2.0 | Yes | 8 | #3444424 | As a technical builder, I want to be able to work in a separate development environment and move changes to components, templates, or the design system to production. Changes may consist of creation of new components and changes to designs or structure of the components. Ideally this would be managed as part of the configuration management system which is built into Drupal so that the Theme Builder doesn't introduce new processes. | 2 | 4 | 6 | 8 | 12.00 | 1.777777778 | |
26 | 15 | Developer-created components | Page Builder | 0.1.0 | Yes | 8 | #3444417 | As a technical builder, I want to have an easy way to expose components written in SDC to the experience builder. This is to provide a great onboarding experience for Drupal developers. Note: not all SDCs should be exposed automatically to the experience builder. | 2 | 2 | 3 | 5 | 6.33 | 1 | |
27 | 16 | Page hierarchy preview | Page Builder | 1.0.0 | Yes | 8 | As a content creator, I expect to see both a visual and a structural (e.g., a hierarchical tree) represenation of my page layout and content (at the same time). I should be able to use the structural layout to edit the content. E.g., change the order of compontents, delete, duplicate, etc. | 1.1 | 4 | 8 | 10 | 8.43 | 1.21 | ||
28 | 17 | Restricted nested components | Page Builder | | No | 7 | As a builder, I want to limit which components can be placed inside a component, and how many components can be added. For example, in the hero region allows adding text and button components inside the hero, but there can be maximum 2 components. The restrictions are NOT related to the props values. | ||||||||
29 | 18 | Navigate between layers | Page Builder | | Yes | 7 | As a builder, I want to be able to edit anything I see. If I can see it, I can edit, even if I need to move to a different layer, e.g. global template, node template, menu template, menu item template. For example, if I'm editing the page template, I want to be able to edit the global template easily. The experience should feel coherent, and user should have a way to get back to where they were before taken to a different edit screen. | 2 | 4 | 6 | 10 | 12.67 | 4 | ||
30 | 19 | Modify the page template | Page Builder | 1.1.0 | Yes | 7 | As a builder, I want to modify the page template (i.e. page.html.twig). When I modify the page template, I can place components globally to global regions like navigation, header, footer, etc. | 3 | 6 | 8 | 12 | 25.00 | 9 | ||
31 | 20 | Responsive design support | Page Builder | | No | 7 | As a creator, I want to be able to customize the page per component depending on the breakpoint (e.g. mobile, table, desktop etc.) via the UI. For example, I want to specifically change the padding for a specific component when the component is displayed in the mobile breakpoint. | ||||||||
32 | 21 | Copy and paste | Page Builder | | No | 7 | As a creator, I want to be able to copy and paste content (layout, components, styles, text, media) from one page to another so that I can create content easily based on existing content. | ||||||||
33 | 23 | Component creation via code editor | Theme Builder | 1.1.0 | Yes | 7 | As a technical builder, I want to be able to create and modify components via code when implementing more complex components without writing PHP or leaving the browser. | 2 | 10 | 15 | 20 | 30.00 | 11.11111111 | ||
34 | 24 | Component CSS code editor | Theme Builder | 1.1.0 | Yes | 7 | As a technical builder, I want to be able to modify component styles in browser without leaving the page builder via a built-in code editor with syntax highlighting and auto-completion. | 2 | 8 | 10 | 16 | 21.33 | 7.111111111 | ||
35 | 24.1 | Component template editor | Theme Builder | 1.1.0 | Yes | 7 | As a technical builder, I want to be able to modify components in browser without leaving the page builder via a built-in code editor with syntax highlighting and auto-completion. | 2 | 6 | 10 | 16 | 20.67 | |||
36 | 24.2 | No-code CSS editor integration | Theme Builder | | No | ||||||||||
37 | 25 | HTML element style editor | Theme Builder | 1.1.0 | No | 7 | As a builder, I want to modify the design of the global styles using a no-code editor. Users may opt-in to using the "Code editor" capability when implementing more complex designs. | 2.5 | 8 | 12 | 16 | 30.00 | 11.11111111 | ||
38 | 26 | Styleguide | Theme Builder | 1.0.0 | Yes | 7 | As a design focused builder, I want to build a design system that enables others to create configurations of the theme that meet specific brand guidelines. This includes being able to define design tokens that can be used for configuring colors, font types, measurements, and effects. Builders should be able to use those design tokens within components. When configuring the design token values, the builder should be displayed a preview of the changes. | 3 | 3 | 4 | 9 | 14.00 | 9 | ||
39 | 27 | Design limitations | Theme Builder | | No | 7 | As a builder, I want to control which design settings are available to creators so that I can ensure the designs remain the level of consistency expected. For example, creators might be able to change the font-size but not the text color. | ||||||||
40 | 28 | Component style overrides | Page Builder | | No | 7 | As a creator, I want to make a one-off override of a component. This means modifying the pre-defined style of a given component with a one-off override. For example, on the Black Friday sale page, I want to override the color of the “add a cart” component’s button. | ||||||||
41 | 29 | Layout patterns | Page Builder | 1.0.0 | Yes | 7 | As a builder, I want to be able to create reusable patterns that accelerate the process of setting up a site: save the components of a single slot as a reusable pattern. And offer the creator the ability to use these. | 2 | 5 | 9 | 13 | 18.00 | 7.111111111 | ||
42 | 30 | Asymmetric Translation Support | Page Builder | | No | 6 | As a creator, when I maintain a website spanning across multiple markets, I want to be able to translate and customize components on the page for each locale. | ||||||||
43 | 31 | Map external data to components | Page Builder | | No | 6 | As a creator, I want to render components using data from external systems, like a commerce platform. For example, I want to retrieve a product from Shopify, and display the product name, price, and image in a card component. | ||||||||
44 | 32 | Pattern library | Page Builder | | No | 6 | As a creator, I want to create reusable patterns using existing components to make creating content faster and easier. Patterns are composition of multiple components, where the changes are not synced across different instances where the pattern is used. | ||||||||
45 | 33 | JavaScript components | JS Components + Preprocessing | | No | 6 | As a front-end developer, I want to be able to leverage individual components from pre-existing design systems my organization owns (e.g. button component). Oftentimes components are written as React, Vue, or Web Components. This should be achievable without writing PHP, or creating a Drupal module. | ||||||||
46 | 34 | Design systems | Theme Builder | | No | 6 | As a builder, I want to be able to collaborate with designers using tools I'm already accustomed to use, e.g. Storybook. I want to be able to have the components in a format that enables loading them in these tools. | ||||||||
47 | 35 | Third party integrations | Page Builder | | No | 6 | As a technical builder, I want an easy way to enable creators to connect components to data from a third-party system e.g. commerce platform. This is needed to power the "Map external data to components" capability. | ||||||||
48 | 36 | Component revisions | Theme Builder | | Yes | As a builder, I want to track changes made to components and be able to revert back to a previous revision. We expect many revisions initially, and then the rate of change to drop. Other systems tend to merge/reduce revisions to one per month. | 2 | 3 | 6 | 10 | 12.33 | 5.444444444 | |||
49 | 37 | Revisionable templates | Page Builder | | Yes | 6 | As a builder, when I make changes to templates, I want to be able to revert back my changes to an older version of the template. This could be either before or after the template has been deployed to production use. | 1 | 1 | 2 | 5 | 2.33 | 0.4444444444 | ||
50 | 38 | Site Studio Migration | Page Builder | | No | 6 | As a builder, I want to be able to migrate from Site Studio to Experience Builder. This includes migrating content, components, styles, templates. | ||||||||
51 | 39 | Layout Builder Migration | Page Builder | | No | 6 | As a builder, I want to be able to migrate from Layout Builder to Experience Builder. This includes migrating existing content and block types to the Experience Builder. | ||||||||
52 | 40 | Default layouts | Page Builder | | No | 6 | As a content creator, I expect the page builder to have a default set of mobile first layouts that I can select from. | ||||||||
53 | 41 | Conditional display of components | Page Builder | | Yes | 6 | As a creator, I am able to conditionally display a component based on easily configured criteria. E.g., if a token equals a specific value. | 3 | 6 | 12 | 18 | 36.00 | 36 | ||
54 | 42 | Paragraphs migration | Page Builder | | No | 5 | As a builder, I want to be able to migrate from Paragraphs to Experience Builder. This includes migrating existing content, display configuration, and Paragraph types to the Experience Builder. | ||||||||
55 | 43 | Optimize JSON:API representation | Page Builder | | No | 5 | As JavaScript developer, when I query JSON:API, I expect to see page nodes that use the Page Builder. When I query the node itself, I get layout information and structured list of each component displayed on the page and a way to retrieve the overall page content as well as the individual component content. | 2 | 10 | 20 | 30 | 40.00 | 44.44444444 | ||
56 | 44 | Component usage | Theme Builder | | No | 5 | As a builder, I want to be able to track usages of component. This helps builders to track what is the potential impact of making changes to a component or deleting a component. | ||||||||
57 | 45 | Content type template variants | Page Builder | | Yes | 6 | As a creator, I am want to create content type template variants, each with different layout and component. I can configure the conditions under which a given variant is displayed. | 1.5 | 2 | 4 | 8 | 6.50 | 2.25 | ||
58 | 46 | Symmetric Translation Support | Page Builder | | No | 4 | As a creator, when I maintain a multilingual website for a single market, I want to be able to translate text on the page for each locale without introducing changes to the look and feel between translations. For example, user could translate text from a component that has an image and text without translating the image. In this case if the image is changed, it is updated to across all translations. | ||||||||
59 | 47 | Editorial comments | Page Builder | | No | 4 | As a creator, when I'm reviewing changes to content from other creators, I want to be able to leave comments. For effective collaboration, I also want to be able to respond to comments from other creators. | ||||||||
60 | 48 | Collaborative editing | Page Builder | | No | 3 | As a creator, I want to work collaboratively in real-time with other creators. This means being able to work on the same page simultaneously with other creators, and seeing changes made by them. | ||||||||
61 | 49 | Component migration | Theme Builder | | No | 2 | As a builder, I'm want to be able to change the component props and migrate existing content to the new schema easily. | ||||||||
62 | 55 | Workspaces | Theme Builder | | No | As a builder, I want to work on draft versions of changes to components, templates, and content before publishing all of it together to the end-users. I want to work in a single environment. I should be able to make changes to multiple templates and components, and when I'm ready, I can click "publish" for all of the changes to take effect. | |||||||||
63 | 56 | Review links | Theme Builder | | | As a builder, I want to be able to invite a stakeholder to review changes staged to be published. The stakeholder may not have an account in Drupal. | |||||||||
64 | 57 | Anti-concurrent editing of content | Page Builder | | No | As a creator, I want to know if someone else is editing the page to not run into conflicts with other creators | |||||||||
65 | 58 | Anti-concurrent editing of components | Theme Builder | | No | As a builder, I want to know if someone else is editing a component to not run into conflicts with other builders | |||||||||
66 | 59 | Edit multiple layers locally | Page Builder | | No | As a content creator, I want to edit a page, layout and styles. I don't want any of it to be published until I press "publish." | 2 | 5 | 15 | 30 | 31.67 | 69.44444444 | |||
67 | 60 | Paragraphs integration | Page Builder | | No | As a creator, I want to be able to create paragraphs content inside the page builder. The paragraphs may be stored in a separate entity reference field. | 1 | 3 | 8 | 16 | 8.50 | 4.694444444 | |||
68 | 61 | Layout Builder Integration | Page Builder | 1.0.0 | Yes | As a creator, I want to be able to create layout builder (inline blocks) content inside the page builder. | 2 | 4 | 8 | 16 | 17.33 | 16 | |||
69 | 62 | Convert components to SDC code | Page Builder | | No | As a builder, I want to create a component in the UI. When I want to customize it in a way that is not supported by the UI, I can convert that component to code and customize it manually. It’s ok if I can’t then edit it in the UI, because I made a change not supported by the UI editor. | 1 | 4 | 8 | 10 | 7.67 | 1 | |||
70 | 63 | Shared components | Page Builder | | No | As a builder, I can use the UI to create a component. I can export a set of components, manage them under version control. | 2 | 8 | 16 | 24 | 32.00 | 28.44444444 | |||
71 | 64 | Module shipped no-code components | Page Builder | | No | As a module maintainer, I want to build a component in the UI, export it to disk somehow and ship it with my module such that consumers can import and edit that component in a UI. | 0 | 0 | 0 | 0 | 0.00 | 0 | |||
72 | 50 | Page Builder | | | As a builder, I can lock components so that they cannot be edited without being unlocked first. | ||||||||||
73 | 51 | Theme Builder | | | As a builder, I am able to edit the code of template files in my web browser. | ||||||||||
74 | 52 | Theme Builder | | | As a builder, I am able to save my theme and revert to previous versions of it. | ||||||||||
75 | 53 | Theme Builder | | | HOW ARE UI-CREATED COMPONENTS STORED? SDC implies: on the filesystem. But then how does it sync across environments? Site Studio instead stores it as config entities, but then runs into "interesting" challenges when the component depends on a content entity. | ||||||||||
76 | 54 | Theme Builder | | | COMPONENT UPDATES: when a component is modified (parameters renamed, new parameters required …), all existing component instances must be updated, which 1) requires reliably finding them all, 2) updating them all, and that could be >10K components, which in Site Studio's experience may take HOURS. |