Dashboard & UI Canvas Module

DPS System User Manual

Complete reference for every screen, widget, button, and feature in the DPS System — covering the execution Dashboard and the UI Canvas module of the CaDPM™ platform.

Dashboard

1. Dashboard Overview

The Dashboard is the project-level command centre of the DPS System. It aggregates real-time metrics from all UI Canvases, API Canvases, and backlog tasks into a single page, giving managers and product engineers an instant read on project health.

Aligned with the Canvas-Driven Project Execution Metric model from the CaDPM™ guide, the Dashboard surfaces five execution signals: code delivery progress, time estimates, projected completion date, requirements alignment, and team activity — all derived automatically from live canvas data.

DPS Dashboard full view with all six metric widgets
Figure DB-1 — Dashboard full view: KPI row + five metric widgets

Page Header

ElementDescription
Product Management and Execution MetricsThe module heading. Confirms you are viewing the project-level execution dashboard, not a canvas-level view.
Subtitle"Track total project execution progress across all UI canvases, API canvases, users, and delivery signals." Describes the data sources feeding the widgets below.

Top KPI Cards

Four summary cards run across the top of the page, providing instant project-size context.

ElementDescription
Total Number of UI CanvasesCount of all screen canvases created in the project (e.g., 8). Each canvas represents one application screen being designed and tracked.
Total Number of API CanvasesCount of all API endpoint canvases in the project (e.g., 1). Represents the number of distinct API design documents.
Total Number of Active UsersNumber of team members currently active (logged in) on this project (e.g., 3). Used to gauge real-time collaboration activity.
Total Number of ContributorsTotal count of all project members who have made at least one contribution (code commit, canvas edit, or backlog task update) (e.g., 4).

Metric Widgets

ElementDescription
Code Lines CompletionDonut chart showing percentage of estimated code lines that have been developed across all UI Canvases. See Section 2 for full detail.
Estimated CompletionProgress bar and hour breakdown showing how far the project has progressed in time. See Section 3.
Project CompletionEstimated finish date projection with remaining days and the last check timestamp. See Section 4.
Project Requirement AlignmentProject-wide BRA score indicating how well committed code matches canvas requirements. See Section 5.
Snap ShotA three-line summary of the most critical real-time delivery signals: Spent Hours, Developed Code Lines, and Alignment %. See Section 6.
UI Canvas Progress OverviewDonut chart showing how many canvases are Not Started, In Progress, or Done. See Section 7.

2. Code Lines Completion (All UI Canvas)

This widget measures code delivery progress across the entire project by comparing Estimated Code Lines (ECL) against Developed Code Lines (DCL) aggregated from all linked GitHub commits on every UI Canvas.

Code Lines Completion donut chart widget
Figure DB-2 — Code Lines Completion widget: 62 % complete with ECL, DCL, and Remain breakdown
ElementDescription
Donut ChartVisual representation of code completion. The filled (blue) arc = DCL ÷ ECL as a percentage. The unfilled (light) arc = remaining code lines. The centre percentage (e.g., 62 %) is the headline completion rate.
62 % (centre value)Project-wide code completion rate. Calculated as: (Developed Code Lines ÷ Estimated Code Lines) × 100. Updates automatically as new commits are pushed to linked repositories.
38 % (arc label)The remaining percentage of code yet to be written (100 % − completion rate). Shown on the outer arc to make the gap immediately visible.
Estimated Code LinesSum of ECL values across all UI Canvases in the project (e.g., 7,058 lines). Each canvas contributes its own ECL estimate to this total.
Developed Code LinesSum of DCL values across all UI Canvases — the actual lines committed to GitHub (e.g., 4,384 lines). Aggregated in real-time from linked commit data.
Remain Code LinesEstimated Code Lines minus Developed Code Lines (e.g., 2,674 lines). Represents the outstanding development workload across the project.

How this metric is calculated

Each UI Canvas stores an Estimated Code Lines value and receives a real-time Developed Code Lines count from linked GitHub commits. The Dashboard sums both across all canvases. Adding canvases or pushing more commits updates this widget instantly.

3. Estimated Completion

The Estimated Completion widget provides a project-wide hour-based time tracking view — showing how many hours have been spent and how many remain before the projected completion date.

Estimated Completion widget with progress bar and three hour cards
Figure DB-3 — Estimated Completion: timeline progress bar and hour breakdown
ElementDescription
Progress BarHorizontal bar spanning from "Now" (current date) to the projected completion date (e.g., 16/05/2026). The filled portion indicates the fraction of total estimated hours already spent. The thin fill at the left edge reflects low actual spend so far.
Now (left label)The current date — the left anchor of the progress bar timeline.
Completion Date (right label, e.g., 16/05/2026)AI-projected finish date for the project derived from current spend rate and remaining estimated hours. Recalculated each time the Project Completion widget is checked.
n h estimated (below bar, left)Total Estimated Hours across all canvas tasks (e.g., 215 h). Aggregated from the EH field of every UI Canvas.
n h remaining (below bar, right)Hours remaining = Estimated Hours − Spent Hours (e.g., 214.75 h). The closer this reaches zero, the nearer the project is to its estimate.
Estimated Hours cardTotal project-wide estimated hours (sum of all canvas EH values). E.g., 215 h.
Spent Hours cardTotal hours actually logged across all backlog tasks linked to canvases (sum of SH values). E.g., 0.25 h.
Remaining Hours cardEstimated Hours minus Spent Hours. Gives the team an instant view of how much work is still ahead. E.g., 214.75 h.

4. Project Completion

The Project Completion widget projects when the project will finish based on the current development velocity and remaining estimated hours. It is powered by an AI estimation model and records who ran the last check and when.

Project Completion widget with finish date, remaining days, and last check info
Figure DB-4 — Project Completion widget showing projected finish date and last check audit
ElementDescription
Estimated Finish DateAI-calculated projected date by which all canvas work will be completed at the current development pace (e.g., 16 May 2026). Recalculated each time "Estimate It" is triggered from a canvas Summary or from the Dashboard.
Remain DaysNumber of calendar days between today and the Estimated Finish Date (e.g., 16 days). A quick countdown for sprint planning and stakeholder communication.
Last Check DateThe timestamp of the most recent estimation run (e.g., 23 Apr 2026, 13:22). Lets reviewers know how fresh the projection is.
Last Checked ByName and email of the user who triggered the last estimation check. Provides an audit trail for the projection.
ⓘ (Info icon)Hover to view the methodology used for the finish-date calculation — typically based on current daily spend rate extrapolated against remaining estimated hours.
Estimation AI feedbackExpandable text block containing the AI's narrative explanation of the projection — including assumptions made, risks that could shift the date, and recommendations to improve delivery speed.

Keep projections fresh

The Estimated Finish Date is not updated automatically in real-time — it is recalculated on demand when you click "Estimate It" from a canvas Summary or manually trigger a check. Run a fresh check after every sprint to keep the projection accurate.

5. Project Requirement Alignment

The Project Requirement Alignment widget aggregates the BRA (Business Requirements Alignment) scores from every UI Canvas into a project-wide percentage. It answers the question: Does the code being written actually match what was specified in the canvases?

Project Requirement Alignment widget with donut chart and detailed stats
Figure DB-5 — Project Requirement Alignment at 69 % with coverage breakdown
ElementDescription
"Moderate Alignment" badgeQualitative label derived from the alignment percentage. Thresholds: Strong Alignment (≥ 85 %), Moderate Alignment (60–84 %), Needs Review (< 60 %). Shown in orange for Moderate.
Alignment Pulse barHorizontal progress bar showing the project-wide alignment match percentage (e.g., 69 % match). Fills from left with a gradient — more filled = stronger alignment.
Alignment pulse textAI-generated one-line status message below the bar (e.g., "Alignment is improving, but several canvases still need review."). Changes based on the score and trend.
Donut Chart — 69 % AlignedVisual breakdown of aligned vs. review-needed canvases. The arc fill represents the fraction of canvases meeting the alignment threshold. Labels below ("Aligned: 6, Review: 2") clarify the counts.
Alignment ScoreThe project-wide BRA average (e.g., 69 %). Calculated as the mean of all individual canvas BRA scores.
Coverage BasisTotal number of UI Canvases included in the alignment calculation (e.g., 8). Only canvases with at least one linked GitHub commit are measured.
Aligned CanvasesNumber of canvases with a BRA score at or above the "aligned" threshold (e.g., 6). These canvases are considered well-implemented relative to their specifications.
Needs ReviewNumber of canvases with a BRA score below the threshold (e.g., 2). These canvases require attention — either their canvas descriptions need updating or the code needs to be aligned with the specifications.
Last review snapshotShows how many canvases were measured in the last BRA check and the timestamp (e.g., "8 UI canvases — 23 Apr 2026, 13:22").

Improving alignment scores

Low alignment often means either (a) the canvas Description and UAC criteria are too vague for the AI to compare against commits, or (b) the code being committed deviates from the canvas spec. Run the AI Analyzer on low-scoring canvases to identify the specific gaps.

6. Snap Shot

The Snap Shot widget is a distilled three-signal summary of the current project execution state. It condenses the most important delivery indicators into a single glanceable card — ideal for stand-ups or status updates.

Snap Shot widget with three delivery signal rows
Figure DB-6 — Snap Shot widget: real-time delivery signals for Hours, Lines, and Alignment
ElementDescription
Snap Shot (title)"Current total status of execution and delivery." — the subtitle confirms this is a live, aggregated read of the project's most critical metrics.
Spent HoursTotal hours logged across all project tasks to date (e.g., 0.25 h). Aggregated from Backlog Canvas SH values. The green "Hours" badge on the right colour-codes the signal type.
Developed Code LinesTotal lines of code committed to GitHub across all linked canvases (e.g., 4,384). The purple "Lines" badge identifies the metric category.
Project Requirements AlignmentProject-wide BRA score as a percentage (e.g., 69 %). The red "Align" badge draws attention to this metric as a critical health indicator.
Signal badges (Hours / Lines / Align)Colour-coded labels to the right of each metric. Green = time, Purple = code volume, Red/Pink = alignment risk. Colours shift to reflect urgency (e.g., red when alignment is low).

7. UI Canvas Progress Overview

The UI Canvas Progress Overview widget shows the delivery status distribution of all canvas screens in the project. It answers: How many screens are done, how many are being worked on, and how many haven't started yet?

UI Canvas Progress Overview donut chart with Canvased, In Progress, and Done counts
Figure DB-7 — UI Canvas Progress Overview: 25 % complete with status breakdown
ElementDescription
Donut ChartThree-segment ring chart showing the status distribution of all canvas screens. Segments: grey = Not Started, blue = In Progress, green = Done (Closed). The centre percentage (e.g., 25 %) is the overall completion rate (Closed ÷ Total).
Legend (Not Started / In Progress / Closed)Colour key below the chart. Grey = Not Started, Blue = In Progress, Green = Closed. Helps quickly map segment colours to states.
Canvased — Total badgeTotal number of UI Canvas screens in the project (e.g., 8). The blue "Total" badge indicates this is the full canvas count.
In Progress — Active badgeNumber of canvases currently being worked on (e.g., 1). A canvas is "In Progress" when it has at least one linked GitHub commit but has not been marked Closed. The blue "Active" badge confirms active development status.
Done — Closed badgeNumber of canvases that have been marked as fully complete (e.g., 2). A canvas is "Closed" when all UAC criteria are met, BRA is sufficient, and the team confirms completion. The green "Closed" badge signals successful delivery.

Delivery status lifecycle

Canvas status transitions: Not Started (no commits linked) → In Progress (commits present, UAC incomplete) → Done / Closed (all UAC criteria met and canvas accepted). Status updates automatically as GitHub commits and UAC changes are recorded.
UI Editor

1. UI Editor Overview

The UI Editor is the visual screen-building workspace inside the DPS System. It allows product engineers to drag, drop, and configure UI components onto a canvas to construct interactive screen prototypes. Every component placed here is automatically linked to the Input & Description rows defined in the parent UI Canvas, keeping design and specification always in sync.

The editor is divided into four main zones: the Component Toolbar on the far left, the Canvas Area in the centre, and the CSS Panel on the right. A global toolbar at the top provides project navigation, user context, and the Live Preview action.

UI Editor main page showing component toolbar, canvas, and CSS panel
Figure UE-1 — UI Editor full view: component toolbar · canvas area · CSS panel

Top Application Bar

ElementDescription
DPS LogoReturns to the DPS System home / project list when clicked.
Project NameDisplays the active project (e.g., "User Tracking System") with a dropdown for switching projects.
User Avatar & NameShows the logged-in user (e.g., "Raine Smith"). Click to open profile or sign-out options.
Notification BellBadge indicates unread system or collaboration notifications.
Live PreviewOpens the current canvas in a standalone browser tab rendered as a live prototype. See Section 5.

Left Application Navigation

The collapsible side-nav gives access to all modules within the current project.

ElementDescription
DashboardProject-level execution metrics (KPI cards, progress charts).
UI EditorCurrent module — visual drag-and-drop screen builder.
Data FlowDirected graph showing navigation paths between screens.
UI CanvasText-driven canvas with descriptions, UAC, AI analysis, and file links.
API CanvasAPI endpoint design and documentation canvas.
API TestingTest runner for API endpoints defined in API Canvases.
Backlog CanvasTask and issue tracking linked directly to canvases.
Code BuilderGenerates boilerplate code from canvas specifications.
GitHub RepositoriesLinks the project to GitHub repositories for file browsing and commit context.
AnalyticsUsage and contribution analytics with expand toggle.
User ManagementManages project members, roles, and access permissions.

2. Component Toolbar

The Component Toolbar is the narrow panel on the far left of the canvas area. It presents the complete catalogue of UI primitives available for building a screen prototype. Components are organised in a two-column icon grid — drag any icon onto the canvas to instantiate that element.

Component Toolbar on the left side of the UI Editor
Figure UE-2 — Component Toolbar: two-column icon grid of available UI primitives

Available Component Types

Each icon corresponds to one of the 16 component types from the CaDPM™ specification. The same types are used in the Component Information panel of the UI Canvas (see UI Canvas Section 12).

ElementDescription
Edit LineSingle-line text input field. The most common component for collecting user text data.
Select BoxDropdown selection component populated from a data source or static list.
ButtonClickable action trigger. Label is set via the Content field in Component Information.
TextareaMulti-line text input for longer content such as descriptions or notes.
RadioSingle-select radio button group. Mutually exclusive options.
Check BoxBoolean toggle. Used for agreement prompts, multi-select options, or feature flags.
Inner CheckNested checkbox inside a table or group component row.
DateDate picker with configurable format (see Template Description → Date format).
TimeTime picker with configurable format (see Template Description → Time format).
LabelStatic read-only text element. Used for headings, instructions, or display values.
FileFile upload picker. Supports single and multiple file selection.
LinkNavigational anchor. Can point to an internal canvas or external URL.
ImageRenders a static image from a URL or uploaded asset.
TableData table connected to an API endpoint. Columns are defined in the Input & Description list.
GroupContainer that wraps multiple components, acting as a logical section or card.
YouTubeEmbeds a YouTube video player by URL inside the canvas.

Drag to Canvas

Click and hold any component icon in the toolbar, then drag it into the canvas grid. The canvas snaps components to a 12-column grid — the column width is configured in the Component Information panel (width cells 1–12).

3. Canvas Area

The Canvas Area is the central workspace where the screen prototype is assembled. Components dragged from the toolbar are placed here on a responsive 12-column grid. The canvas renders a live visual approximation of the final application screen, including real form controls and layout.

Canvas area with a form prototype containing First Name, Last Name, Email, Role, checkbox, and Submit button
Figure UE-3 — Canvas area with a user-registration form prototype

Canvas Interactions

ElementDescription
Component ClickSelects the component and loads its style targets into the CSS Panel on the right.
Component DragReorders components within the grid. Release to snap to the nearest column boundary.
Canvas Background ClickDeselects any active component. CSS Panel shows "No component selected".

Canvas Bottom Bar

ElementDescription
Zoom Out (−)Decreases canvas zoom level for a wider view of large screens.
Zoom PercentageDisplays current zoom level (e.g., 90%). Indicates the canvas is slightly scaled down.
Zoom In (+)Increases canvas zoom for precise component placement.
Default Cell NoShows the default column-span assigned to newly dropped components (e.g., 6 = half width).
+ CSS PanelToggles the CSS Panel open. Equivalent to clicking the CSS Panel button in the top UI View toolbar.

12-Column Grid

The canvas uses a 12-column responsive grid identical to Bootstrap/Tailwind CSS grids. Setting a component width to 12 spans the full canvas width; 6 fills half; 4 fills one-third. Mixed widths in a single row automatically stack to form a natural form layout.

4. CSS Panel

The CSS Panel is the right-side styling workspace. It becomes active when a component on the canvas is selected, allowing precise visual customisation at four different levels: the entire canvas, a layout container, an individual component, or the canvas background.

When no component is selected, the panel displays "No component selected" and all inputs are disabled until an element on the canvas is clicked.

CSS Panel on the right side of the UI Editor
Figure UE-4 — CSS Panel with TARGET, CONTEXT, RAW CSS, SELECTION, and COLORS sections

TARGET — CSS Scope Selector

ElementDescription
CSS TargetApplies styles to the selected component's root DOM element.
ContainerApplies styles to the layout container wrapping the component (e.g., the grid cell).
ComponentApplies styles to the inner interactive element (e.g., the <input> inside an Edit Line).
CanvasApplies styles globally to the entire canvas background and layout wrapper.

CONTEXT — Dimensions

ElementDescription
Context DropdownSelects which scope context is active: Canvas, Container, or Component. Mirrors the TARGET tabs.
Width (px)Sets an explicit pixel width on the selected target. Overrides the default grid-column width.
Height (px)Sets an explicit pixel height. Leave blank to use auto height determined by content.

RAW CSS

ElementDescription
CSS Style textareaFree-form CSS property/value pairs applied directly to the selected target scope. Written as standard CSS (e.g., border-radius: 8px; font-weight: bold;). Applied inline on save.

SELECTION — Attribute Binding

ElementDescription
Attribute inputBinds a data attribute to the selected component. Populated from the API Canvas response schema. Placeholder reads: "No attribute data available for the selected component" when no API is linked.
Component IDAuto-generated unique identifier for the component. Used to reference the element in Raw CSS selectors or in Code Builder output.

COLORS

ElementDescription
BackgroundSets the background color of the selected target scope. Opens a color picker on click.
Font ColorSets the text/foreground color of the selected target scope.
+ (Add Color)Adds an additional custom color property row. Enables defining other CSS color values beyond background and font.

Style Isolation

Styles applied via the CSS Panel are scoped to the selected TARGET level. Using the Canvas tab affects the full-screen background; using Component isolates changes to the specific input element only. This layered approach mirrors CSS specificity: Component styles override Container styles, which override Canvas styles.

5. Live Preview

Live Preview renders the current canvas as a fully interactive web page in a new browser tab. It strips away all editor UI (toolbar, CSS Panel, navigation) and shows only the prototype — exactly as an end-user would experience it in the final application.

The preview is generated from a unique public URL (e.g., /ui-canvas/preview/{canvas-id}) and can be shared with stakeholders for review and sign-off without requiring a DPS System account.

Live Preview browser tab showing the rendered form prototype
Figure UE-5 — Live Preview: user-registration form rendered as a standalone page
ElementDescription
Browser URL barShows the shareable preview URL (https://…/ui-canvas/preview/{id}). Copy and share directly — no login required to view.
Rendered FormAll components placed on the canvas are rendered as live HTML controls: text inputs, dropdowns, checkboxes, and buttons use native browser rendering.
First Name / Last Name / EmailRendered as <input type="text"> elements. Placeholder and label text come from the Input & Description definitions.
RoleRendered as a <select> dropdown. Options are populated from the linked API Canvas or static values.
I agree to the terms and conditionsRendered as <input type="checkbox">. Pre-checked state matches the default value set in Component Information.
SubmitTriggers the Form Action defined in the UI Canvas (e.g., redirect to another canvas after API call). In preview mode, the action is simulated.

Stakeholder Sign-off

Share the Live Preview URL with clients or product owners for visual validation before development begins. Combined with the User Acceptance Criteriafrom the UI Canvas, it provides a complete picture of expected behaviour — reducing revision cycles during implementation.
Data Flow

1. Data Flow Overview

The Data Flow module generates a live directed-graph visualisation of all navigation paths between UI Canvas screens in the project. It is built automatically — every Form Action (redirect or popup) defined inside a UI Canvas creates an arrow between two canvas nodes. No manual drawing is required; the diagram always reflects the current state of the project's screen navigation structure.

The diagram is read left-to-right: screens that other screens navigate to appear to the right of their source. The selected node (highlighted in blue) is shown in the page header. Circular paths — where screen A eventually redirects back to itself — are flagged with a red loop-detection highlight.

Data Flow main page showing the directed graph of screen navigation
Figure DF-1 — Data Flow module: directed graph of all canvas navigation paths
ElementDescription
Page Header — Canvas NameDisplays the name of the currently selected canvas node (e.g., "Menu Page"). Updates when a different node is clicked.
Info Button (blue circle)Opens the detail panel for the selected canvas node, showing its metadata and links to its UI Canvas page.
Diagram AreaThe interactive graph. Nodes can be dragged to rearrange layout without affecting the underlying navigation structure.
Zoom Controls (bottom)Fit-to-view icon, zoom percentage (e.g., 70%), and zoom-in button. See Section 5 for full toolbar reference.
+ Button (blue, bottom right)Adds a new UI Canvas node to the project directly from the Data Flow view.

2. Canvas Node Anatomy

Each UI Canvas in the project is represented as a rectangular canvas node. A node packs several pieces of information into a compact card that immediately communicates both the identity of the screen and its connectivity within the navigation graph.

Full view of the Data Flow diagram showing node anatomy with badges
Figure DF-2 — Zoomed-in diagram: node anatomy showing name, color ID, redirect/popup/in badges

Node Elements

ElementDescription
Canvas NameThe screen name as defined in the UI Canvas (e.g., "Menu Page", "Login", "Edit User Screen"). Click the node to select it.
Color ID BadgeA short hexadecimal identifier (e.g., "bc1f60", "207d31") shown in a colour-coded chip. Uniquely identifies the canvas and doubles as a quick visual key when scanning the graph.
"redirect N" badgeThe count of outgoing redirect connections leaving this node. Example: "redirect 4" on Menu Page means it sends users to 4 different screens via redirect actions.
"popup N" badgeThe count of outgoing popup connections. Popup connections open the target canvas as a modal overlay rather than replacing the current screen.
"in N" badgeThe total count of incoming connections from other canvases. "in 1" means exactly one screen navigates to this one; "in 2" means two screens do.
Blue borderApplied to the currently selected node. The selected canvas name is also shown in the page header above the toolbar.
Red/pink fillLoop-detection highlight. Applied when the node is reached via a circular navigation path. See Section 4.

Example — "Menu Page" Node

In the diagram, Menu Page (color: bc1f60) shows redirect 4 and in 1: it is reached by one screen (Login) and itself redirects to four other screens (Login, Edit User Screen, Users List Screen, Add / Create User Screen).


3. Connection Types

Arrows in the Data Flow graph represent the navigation actions configured in the Form Action panel of each UI Canvas. Every arrow is labelled with its action type so the navigation intent is immediately readable without opening individual canvases.

Connections between nodes showing redirect and popup arrow types
Figure DF-3 — Connection arrows: redirect (solid) and popup (dashed) action types
ElementDescription
redirect arrowSolid directed arrow labelled "redirect". The user is navigated away from the source screen and the target canvas replaces it entirely. This is the standard page-navigation pattern.
popup arrowArrow labelled "popup". The target canvas opens as a modal overlay on top of the source screen. The source screen remains in the background. Used for actions like "Add / Create" dialogs triggered from a list screen.
Arrow directionArrowhead points to the destination canvas. Multiple arrows can leave the same source node (fan-out), and multiple arrows can arrive at the same target node (fan-in), shown by converging lines.

Connections are created in UI Canvas

Arrows are not drawn manually in this module. Each connection originates from a Form Action entry in the corresponding UI Canvas (see UI Canvas Section 15). To add or remove a connection, edit the Form Action in the source canvas — the Data Flow diagram updates automatically.

4. Loop Detection

The Data Flow module automatically detects circular navigation paths — situations where following a sequence of redirect or popup actions eventually leads back to a canvas that was already visited in the path. When a loop is detected, the repeated canvas node is rendered with a red / pink background and prefixed with "Loop to" to make the cycle visually unmistakable.

Loop detection: red node labelled 'Loop to Menu Page'
Figure DF-4 — Loop detection highlight: 'Loop to Menu Page' shown in red after Login redirects back
ElementDescription
"Loop to [Canvas Name]" nodeA duplicate node rendered in red indicating that the navigation path has already visited this canvas. In the example: Login → Menu Page → Login creates a loop, so the second Login renders as "Loop to Menu Page" in red.
Color ID on loop nodeThe color badge still shows the target canvas's own identifier (bc1f60 = Menu Page), confirming which canvas the loop returns to.
redirect / in badges on loop nodeRetain their values from the original canvas (redirect 4, in 1) so you can trace which outgoing paths the loop node would continue to follow.

What to do when a loop is detected

A loop is not always an error — Login ↔ Menu Page is a valid pattern (the user can return to the menu from the login screen). Use the highlight as an awareness tool: check that the loop is intentional and that there is always a way out (e.g., a logout action that does not loop back). If the loop is unintentional, open the source canvas and remove or update the Form Action causing the cycle.

5. Toolbar & Controls

The Data Flow toolbar provides controls for navigating and exporting the diagram. It sits directly above the canvas area and adapts to the currently selected canvas node.

Data Flow toolbar with Fit, Fullscreen, Download PNG buttons and zoom controls
Figure DF-5 — Toolbar above the diagram and zoom controls at the bottom

Top Toolbar

ElementDescription
FitScales and re-centres the diagram so all nodes fit inside the visible viewport. Useful after dragging nodes or when the graph grows large.
FullscreenExpands the diagram canvas to fill the entire browser window, hiding the application navigation. Press Escape or click again to exit.
Download PNGExports the current diagram as a PNG image file. The export captures the full graph at the current zoom level, including all nodes and connections.

Bottom Controls

ElementDescription
Fit-to-View Icon (⊞)Same as the top Fit button — re-centres and rescales to show all nodes.
Zoom PercentageDisplays the current zoom level (e.g., 70%). The diagram defaults to a zoom that shows the full graph; adjust to inspect node details.
Zoom In (+)Increases zoom level incrementally. Also supports mouse scroll-wheel zoom over the canvas area.
+ Button (blue)Floating action button. Opens the "Add New Canvas" dialog to create a new UI Canvas and add it as a node to the project graph.
UI Canvas

1. UI Canvas Overview

The UI Canvas is the central workspace where each screen of an application is designed, documented, and tracked end-to-end. It connects design intent with development metrics, acceptance criteria, and AI-powered analysis — all in a single view.

The top-level UI Canvas page lists every screen canvas belonging to the selected project. From here you can create new screens, access AI tools, manage GitHub file associations, and drill into individual canvas sections.

UI Canvas main view showing all major sections
Figure 1 — UI Canvas main view with all collapsible sections

Top Bar Controls

ElementDescription
Add / Create User ScreenSearchable dropdown that lists all existing canvas screens. Type to filter or select a screen to navigate to it. The blue "+" button to the right creates a brand-new blank canvas screen for the current project.
AI AssistantOpens the AI Assistant side panel. Use it to auto-generate Description, UAC criteria, Input & Description fields, and a UI Prototype by typing a natural-language prompt.
AI AnalyzerOpens the AI Analyzer panel. Performs a deep analysis of the current canvas for missing validation, weak UAC coverage, or inconsistent inputs, and returns a structured report with accuracy ratings.
ActionA context menu with canvas-level operations: Duplicate, Share Canvas, Import/Export JSON, Download JSON Template, and view History. See Section 4 for full details.

Collapsible Sections

ElementDescription
GitHub FilesLists all GitHub source files linked to this canvas. Expand to see file name, branch, path, and repository. Use "+ Add GitHub Files" to associate new files.
SummaryShows five key metrics in a compact row: EH (Estimated Hours), SH (Spent Hours), ECL (Estimated Code Lines), DCL (Developed Code Lines), and BRA (Business Requirements Alignment %). Expand for full details and actions.
DescriptionA free-text area for the functional purpose of this screen. Used as context by the AI Assistant and AI Analyzer.
User Acceptance Criteria – UACLists testable criteria that must pass before the screen is accepted. Shows completion status, linked backlog issues, and estimated/actual hours.
UI ViewEmbeds the UI Prototype or an external design link (e.g., Figma). Includes a date version picker, CSS Panel, Live Preview, and External View Link management.
Input & DescriptionA structured table of every UI input element on the screen with its component type, validation rules, and relationships to APIs and form actions. The "+" button on the right adds a new input row.

Global UI Elements

ElementDescription
Left SidebarPersistent navigation for all DPS modules: Dashboard, UI Editor, Data Flow, UI Canvas, API Canvas, API Testing, Backlog Canvas, Code Builder, GitHub Repositories, Analytics, User Management.
Project Selector (top bar)Displays the currently active project (e.g., "User Tracking System"). Click to switch between projects without losing your place.
User Avatar / NameShows the logged-in user's name and email in the top-right corner. Click the avatar to access profile settings.
Bell IconReal-time notification center. The red badge shows the number of unread alerts (task assignments, system events, UAC updates).
Floating "+" ButtonFixed blue circular button at the bottom-right of the screen. A shortcut for quickly adding a new canvas screen at any scroll position.

2. Summary Panel

The Summary section provides a real-time health snapshot of the canvas screen. It surfaces five metrics that together describe how far along development is and how well the implementation aligns with the original business requirements.

Summary panel expanded with all five metrics
Figure 2 — Summary panel with Estimated Hours, Spent Hours, Code Lines, and Alignment Rate
ElementDescription
EH — Estimated HoursThe total number of hours originally estimated for designing and building this screen. Shown in the collapsed Summary row header. "Last estimated date" records when the estimate was last updated. Click "Estimate It" to recalculate based on current canvas data.
SH — Spent HoursHours already logged by the development team on this screen. Aggregated in real-time from the linked Backlog Canvas tasks (sum of SH values). Read-only — updated automatically.
ECL — Estimated Code LinesPredicted number of code lines required for this screen. "Last estimated date" shows when it was last computed. Click "Estimate It" to trigger a new AI-based estimation using the canvas JSON.
DCL — Developed Code LinesActual lines of code committed to GitHub for this canvas, aggregated in real-time from linked commit activity. Reflects the sum of commit code lines tracked through the associated GitHub files.
BRA — Business Requirements AlignmentA percentage score (0–100 %) indicating how closely the committed code matches the canvas business requirements. Calculated based on the canvas JSON and linked GitHub commits. Click "Check It" to trigger a fresh alignment check.
Alignment ScopeBlue info bar beneath the BRA score explaining the basis of the alignment calculation (canvas JSON + GitHub commits linked to this screen).
Alignment NoteA free-text AI-generated explanation of the current alignment score — describing strengths, gaps, and what remains unimplemented. Editable for manual notes.
Estimate ItTriggers an AI re-estimation for EH or ECL. Available next to Estimated Hours and Estimated Code Lines fields.
Check ItTriggers a new BRA alignment analysis against the latest GitHub commits and canvas content.

3. GitHub Files

The GitHub Files section links source code files from your connected GitHub repositories directly to the canvas. This connection powers the real-time DCL (Developed Code Lines) metric and the BRA (Business Requirements Alignment) score.

GitHub Files section expanded showing a linked file
Figure 3 — GitHub Files section with one linked file (CreateUser.jsx)
ElementDescription
GitHub Files (n)Collapsible row showing the total number of linked files in parentheses. Click the chevron (▶) to expand or collapse the list.
+ Add GitHub FilesOpens a dialog to browse repositories connected to the project and select files to link. Requires at least one repository to be configured in GitHub Repositories module.
File Name & Branch BadgeDisplays the filename (e.g., CreateUser.jsx) alongside a colored branch badge (e.g., "main"). The branch badge indicates which branch the file is tracked from.
PathShows the full file path within the repository (e.g., src/pages/CreateUser.jsx), making it easy to locate the file in your IDE.
RepoDisplays the repository name the file belongs to.
View Icon (Eye)Opens the file directly in GitHub in a new tab for quick reference without leaving the DPS System.
Delete Icon (Trash)Removes the GitHub file association from this canvas. The file itself is not deleted from GitHub — only the link is removed.

How DCL is calculated

Once a file is linked, DPS monitors commits to that file on the specified branch. Every new commit line count is aggregated into the canvas's DCL (Developed Code Lines) metric automatically.

4. Actions Menu

Clicking the Action button in the top bar opens a dropdown menu with canvas-level utilities. These actions apply to the entire canvas, not to individual sections.

Action dropdown menu open with all options visible
Figure 4 — Actions dropdown showing all canvas-level operations
ElementDescription
DuplicateCreates a full copy of the current canvas — including its Description, UAC criteria, Input & Description rows, and linked GitHub files — as a new canvas screen in the same project.
AI AssistantShortcut that opens the AI Assistant panel (same as the top-bar button).
AI AnalyzerShortcut that opens the AI Analyzer panel (same as the top-bar button).
Share CanvasGenerates a shareable read-only link to the current canvas that can be sent to stakeholders or reviewers outside the development team.
Import JSONImports a previously exported canvas JSON file, overwriting the current canvas data. Useful for migrating canvases between projects or restoring a backup.
Export JSONExports the entire canvas as a structured JSON file containing all sections (Description, UAC, Inputs, UI Prototype). The file can be stored, versioned, or imported into another project.
Download JSON TemplateDownloads an empty canvas JSON template with the correct schema. Use this as a starting point for bulk-creating canvases programmatically or via Import JSON.
HistoryOpens an audit log showing all changes made to the canvas over time — who changed what and when.

5. AI Assistant

The UI Canvas AI Assistant is a generative AI tool that drafts content for all four major canvas sections from a single natural-language prompt.

AI Assistant panel with prompt input and four preview sections
Figure 5 — AI Assistant panel with generated preview content across all four sections
ElementDescription
Prompt Text AreaEnter a natural-language description of the screen you are building. The more detail you provide, the more accurate the draft.
Generate DraftSends the prompt to the AI and populates the four Preview sections: Description, User Acceptance Criteria, Input and Description, and UI Prototype.
Clear PreviewClears all generated draft content from the Preview sections. The prompt text is preserved.
Local Prompt HistoryCollapsible list of previously used prompts for this canvas. Click any past prompt to reload it.
Preview — 4/4 filledShows how many of the four sections have been generated.
1. Description → Apply to DescriptionPreview of the AI-generated description. Click "Apply to Description" to save it into the canvas Description field.
2. User Acceptance Criteria → Apply to UACPreview table of generated UAC criteria. Click "Apply to UAC" to create these criteria in the UAC section.
3. Input and Description → Apply to Input ListPreview of the input fields and their types. Click "Apply to Input List" to populate the Input & Description section.
4. UI Prototype → Apply to UI PrototypeA live interactive prototype rendered from the generated input list. Click "Apply to UI Prototype" to save it as the canvas UI View.

6. AI Analyzer

The UI Canvas AI Analyzer inspects the existing canvas content and returns a structured quality report. Unlike the AI Assistant (which creates content), the Analyzer critiques and validates what already exists.

AI Analyzer panel with analysis prompt and report sections
Figure 6 — AI Analyzer with risk report and accuracy level
AI Analyzer result showing per-input accuracy levels
Figure 7 — AI Analyzer result with per-field accuracy and suggestions
ElementDescription
Open Analysis / Analysis DateShows the timestamp and user who last ran the analysis. "Delete" removes the current result.
Analysis HistoryCollapsible list of past analysis runs with dates.
Analysis PromptA pre-filled or editable prompt specifying what to analyze (e.g., "Review this UI canvas for missing validation, weak UAC coverage, and inconsistent inputs").
Section AccordionsEach canvas section is analyzed separately. Expand a section to see its specific report.
Analysis Report — Current StatusA brief neutral summary of what the section currently contains.
Analysis Report — Risks / ThreatsHighlights weaknesses and gaps. Includes an "Accuracy Level" percentage badge reflecting quality confidence.
Accuracy Level BadgeColor-coded percentage score. Scores below ~70 % indicate the section needs significant improvement.
Analysis Report — SuggestionsConcrete, actionable AI-generated improvements.
ApplyApplies the AI-suggested improvements directly to the corresponding canvas section.

7. Description

The Description section holds a plain-text functional summary of the canvas screen. It answers: What does this screen do and why does it exist?

Description section expanded with a text area
Figure 8 — Description section with free-text area
ElementDescription
Description (row header)Click the chevron (▶/▼) to expand or collapse. When collapsed the row is compact.
Edit IconLocated at the top-right of the row. Click to enter edit mode.
Description Text AreaMulti-line editor for describing the screen's purpose, business context, and functional behavior. Used as the source of truth for AI analysis and alignment scoring.

Writing effective descriptions

A good description covers: (1) who uses the screen, (2) what they can do, and (3) what happens after they submit. This gives the AI Analyzer enough context to evaluate UAC and input coverage accurately.

8. User Acceptance Criteria (UAC)

The User Acceptance Criteria (UAC) section defines testable conditions that must all be satisfied before this screen is considered done.

UAC section with criteria table
Figure 9 — UAC section with criteria and status badges

Header Summary Badges

ElementDescription
n/n completedFraction of criteria marked Closed vs. total.
Total-nTotal number of UAC criteria rows.
closed-nNumber of criteria with status "Closed".
New Request-nCriteria created via AI Assistant or manually added and not yet reviewed.
ES-nEstimated Spent hours for UAC testing tasks.
EH-nExtra Hours beyond the original UAC estimate.
+ (Add)Adds a new UAC criterion row manually.

Criteria Table Columns

ElementDescription
CriteriaThe acceptance criterion text. Click to expand details or edit.
Related Issue(s)Backlog tasks linked to this criterion. "No linked task" if none.
StatusPending or Closed. Click to toggle.

Manage Related Issues Dialog

Manage Related Issues modal
Figure 9.1 — 'Manage Related Issue(s)' modal
ElementDescription
Select existing backlog tasksSelect one or more backlog tasks to link to this criterion.
Create New IssueCreates a new backlog task and links it immediately.
SaveConfirms links and closes the dialog.
CancelCloses without saving.

9. UI View & CSS Panel

The UI View section renders the visual representation of the screen — either as a DPS-built UI Prototype or as an externally embedded design (Figma, etc.).

UI View section with inline prototype
Figure 10 — UI View with UI Prototype rendered inline
ElementDescription
Date PickerSelects the version date to display. Older versions are preserved.
View Type SelectorSwitches between "UI Prototype" (built-in) and external views.
Live PreviewOpens full-screen preview simulating the final application.
CSS PanelOpens the CSS Panel overlay for custom styling.
Add External ViewOpens the External View Link panel. See Section 10.
··· (More Options)Additional options: remove view, set default version.
Prototype CanvasRendered form/prototype built from the Input & Description list.

CSS Panel

CSS Panel overlay
Figure 11 — CSS Panel overlay for custom styles
ElementDescription
CSS Target TabsCSS Target, Container, Component, Canvas — selects the style scope.
No component selectedShown in red when no prototype element is selected.
ContextFilters the CSS scope (Canvas, Container, Component).
Width (px) / Height (px)Explicit pixel dimensions for the selected target.
Raw CSSFree-form CSS applied directly to the selected target.
✕ CloseCloses the panel. Changes are preserved.

10. External View Link

The External View Link panel manages visual assets — screenshots, Figma embeds, or image URLs. Multiple views can be added; one is the Default View.

External View Link panel
Figure 12 — External View Link panel with upload options
ElementDescription
Add Image URLAdds an external image by URL.
Add Embed CodePastes an iframe embed code (e.g., Figma).
Upload ImageFile picker for local images (PNG, JPG, etc.).
Upload from ClipboardPastes an image directly from the system clipboard.
Table columns#, Title, File Name, URL Content preview, Type badge, Last Update timestamp.
Default ViewMarks which entry is shown by default in the UI View section.

Add Embed Code Modal

Add Embed Code modal
Figure 13 — 'Add Embed Code' modal for Figma iframe embed
ElementDescription
Title *Descriptive label for this embed entry.
Embed Code *Full iframe embed HTML (e.g., from Figma Share → Embed).
CreateSaves the embed and adds it to the table.
CancelCloses without saving.

11. Input & Description

The Input & Description section is a structured registry of every UI element on the screen with its type, validation rules, and relationships to APIs and form actions.

Input and Description table
Figure 14 — Input & Description table with Actions sidebar

Table Columns

ElementDescription
#Auto-incremented row number reflecting visual order on the screen.
InputThe element name as it appears on the screen. Click to expand for editing.
DescriptionComponent type badge (yellow) + business description with validation rules.

Row Actions Sidebar

ElementDescription
Component InformationEdits the element's type, width, and content. See Section 12.
Manual DescriptionFree-text editor for the description without a template.
Template DescriptionStructured rules/values form. See Section 13.
API RelationLinks an API endpoint to this element's action. See Section 14.
Form ActionDefines post-submission navigation. See Section 15.
RenameRenames the input element inline.
DeleteRemoves the row and all its relations permanently.

12. Component Information

Configures the technical properties of a UI element: its visual type, grid width, and static content.

Component Information panel
Figure 15 — Component Information panel with type grid and width selector
ElementDescription
Input NameLabel/name of the element as shown in the table and prototype.
Component Type Grid (16 types)Edit Line, Select Box, Button, Textarea, Radio, Check Box, Inner Check, Date, Time, Label, File, Link, Image, Table, Group, YouTube. Click to select.
Component Width (Cell) 1–1212-column grid width. 12 = full width, 6 = half, 4 = one-third. Selected value highlighted in blue.
ContentStatic content: label text, button label, or image URL. Leave blank for interactive inputs.
UpdateSaves and closes. Table updates the component type badge immediately.
CancelDiscards changes.

13. Template Description

Provides a structured form for defining validation rules and value constraints for an input element. Generates a standardized description used by the AI Analyzer and Code Builder.

Template Description panel
Figure 16 — Template Description with Rules and Values

Rules (Checkboxes)

ElementDescription
Is MandatoryField must be filled before form submission. Renders a required-field indicator (*).
Is UniqueValue must be unique across the dataset.
Is EditableUser can edit the field value after initial entry.
Is Not EditableField is locked after creation (read-only in edit mode).
Is IntegerAccepts only whole numbers.
Is FloatAccepts decimal/floating-point numbers.
Is StringAccepts any text string.
Is DropdownRenders as a dropdown populated from a data source.
Is ReadonlyAlways read-only — value displayed but not changeable.
Is Current UserAuto-populates with the logged-in user's identifier.
Is Current DateAuto-populates with today's date.
Is Current TimeAuto-populates with the current time.
Is Minimum ValueEnforces a minimum numeric value.
Is Maximum ValueEnforces a maximum numeric value.
Is Row CountDisplays the count of rows in a related dataset.
Is Average ValueDisplays the calculated average of a related numeric dataset.
Is SummaryDisplays an aggregated sum from a related dataset.
Close After ClickCloses the current panel or modal after this element is clicked.
Disappear After ClickHides the element after it is clicked once.

Values (Input Fields)

ElementDescription
Maximum length isMaximum characters allowed.
Minimum length isMinimum characters required.
After redirect toURL or canvas name to navigate to after a successful action.
Successful message isMessage shown on successful completion.
Warning message isMessage for non-critical validation issues.
Error message isMessage shown when validation fails.
Date format isExpected date format (e.g., DD/MM/YYYY).
Time format isExpected time format (e.g., HH:mm).
Minimum value isMinimum numeric value allowed.
Maximum value isMaximum numeric value allowed.
Default value isPre-filled value shown on load.
Placeholder isGhost text inside empty inputs.
Minimum selected item count isMinimum items to select (multi-select).
Maximum selected item count isMaximum items selectable.
Mask isInput mask pattern (e.g., phone: +994-XX-XXX-XX-XX).
ElementDescription
AddGenerates and saves the description from selected rules and values.
CancelCloses without saving.
ClearResets all fields without closing.

14. API Relation (Event API Call)

The Event API Call panel associates an API endpoint with a UI element, documenting the backend integration for a specific user interaction.

Event API Call panel
Figure 17 — Event API Call linking the Submit button to the insert/user endpoint
ElementDescription
ActionTrigger event (e.g., "onclick"). Determined by the component type.
API (path input)API endpoint path (e.g., insert/user). References an API Canvas endpoint.
DescriptionBrief explanation of what this API call does in context.
Add IssueCreates a backlog task tracking the API integration implementation.
Add UI CanvasLinks to another UI Canvas for cross-screen dependencies.
Add API CanvasLinks to a specific API Canvas endpoint for traceability.
CreateSaves the API relation to the input row.
CancelCloses without saving.

15. Form Action

The Form Action panel defines what happens after the form completes — typically a navigation redirect to another screen.

Form Action panel
Figure 18 — Form Action configuring a redirect to 'Menu Page'
ElementDescription
Action Type"Redirect" — navigates the user to another canvas screen after the action completes.
Related UI CanvasTarget canvas for the redirect (e.g., "Menu Page"). Creates a navigational link visible in the Data Flow module.
Condition (optional)Optional conditional expression (e.g., "if role === admin"). Leave blank for unconditional execution.
CreateSaves the form action. The redirect appears as an arrow in the Data Flow diagram.
CancelCloses without saving.

Data Flow integration

Form Actions defined here automatically appear as directed arrows in the Data Flow module, showing how users navigate between screens without any additional configuration.
API Canvas

1. API Canvas Overview

The API Canvas is the API endpoint design and documentation workspace inside the DPS System. Each canvas represents one API endpoint (e.g.,insert/user) and holds all information needed to describe, test, and generate code for that endpoint: its description, request headers, request body, operation steps, output schema, and response example.

The canvas is structured as a series of collapsible sections. Each section can be expanded independently by clicking the arrow toggle on the left. Changes are auto-saved; the save icon on the right of each section confirms persistence.

API Canvas full page showing all collapsed sections and the endpoint toolbar
Figure AC-1 — API Canvas overview: endpoint toolbar and six collapsible sections

Endpoint Toolbar

ElementDescription
Endpoint Path InputEditable field showing the API endpoint path (e.g., "insert/user"). This value is referenced by the API Relation panel in UI Canvas and by the API Testing module.
"shared" BadgeIndicates the current sharing state of this canvas. Click the dropdown arrow (▾) next to it to open the Share dialog.
+ Button (blue)Creates a new API Canvas (new endpoint) within the current project.
TestOpens the API Testing module pre-loaded with this endpoint's path, request body, and headers for live execution.
AI AssistantOpens the AI Assistant panel to generate or improve the Description and Operation Description sections using AI.
AI AnalyzerRuns an AI-driven analysis of the canvas content, checking for completeness, consistency, and missing fields.
Action ▾Contains advanced operations: Live Preview, Share/Unshare, Change History, Import, Export, and Duplicate.

Shared API Canvases

ElementDescription
Shared API Canvases (N)Shows the count of API canvases currently shared via public links. Click to view all shared canvases in the project.
GitHub Files (N)Links to GitHub source files associated with this endpoint. Expand to browse or attach relevant code files.

Canvas Sections

All six sections are collapsed by default. Each has an expand toggle (▶) on the left and a context action (save icon or + button) on the right.

ElementDescription
DescriptionFree-text description of what the endpoint does. See Section 2.
Input FieldsTable of request headers and query parameters. See Section 3.
Request BodyJSON code editor for the request payload. See Section 4.
Operation DescriptionNumbered list of backend processing steps. See Section 5.
Output FieldsTable of expected response fields and their descriptions. See Section 6.
Response BodyJSON code editor for the example response payload. See Section 7.

2. Description

The Description section holds a plain-text explanation of the endpoint's purpose, behaviour, and security context. It is the primary human-readable documentation for the endpoint and is used by the AI Assistant, AI Analyzer, and the Code Builder when generating implementation code.

Description section expanded with endpoint purpose text
Figure AC-2 — Description section: plain-text endpoint documentation
ElementDescription
Description Text AreaMulti-line free-text field. Write what the endpoint does, what data it accepts, validation rules, security requirements, and what it returns on success. This text feeds directly into AI-assisted generation.
Save Icon (💾)Saves the description content. Appears in the top-right of the section header. Also auto-saved on blur.
▶ / ▼ ToggleExpands or collapses the section. The description text is hidden when collapsed.

AI-powered description generation

Click AI Assistant in the top toolbar to auto-generate a description based on the endpoint path, input fields, and operation steps already defined. The generated text can be edited freely after insertion.

3. Input Fields

Input Fields documents the HTTP headers and query parameters required or accepted by the endpoint. Each entry has a name and a plain-text description. This section is separate from the Request Body — it covers transmission-level inputs (headers, auth tokens) rather than payload content.

Input Fields section expanded with Content-Type and Authorization rows
Figure AC-3 — Input Fields table: request headers with name and description

Table Columns

ElementDescription
#Auto-incremented row number.
NameHeader or parameter name exactly as sent in the HTTP request (e.g., Content-Type, Authorization).
DescriptionPlain-text explanation of the field's purpose, accepted values, and whether it is required or optional.
✏ Edit IconOpens an inline editor for the row. Allows updating name and description without leaving the section.

Common Input Fields

ElementDescription
Content-TypeSpecifies the media type of the request body. For JSON APIs this must be "application/json".
AuthorizationBearer token for authenticating the request. Required when the endpoint is restricted to authenticated administrators or privileged users.
ElementDescription
+ ButtonAdds a new empty row to the Input Fields table. Fill in the Name and Description fields then save.

4. Request Body

The Request Body section contains the JSON payload that the client sends to the endpoint. It is an inline code editor with syntax highlighting. The value entered here is used as the default payload when the endpoint is opened in the API Testing module.

Request Body section with JSON code editor showing username and password fields
Figure AC-4 — Request Body editor: JSON payload example for "insert/user"
ElementDescription
Code EditorInline syntax-highlighted JSON editor. Write or paste the full request payload. Keys are shown in blue, string values in red.
Line NumbersLine numbers on the left for reference when reviewing multi-field payloads.
BeautifyAuto-formats the JSON content with proper indentation and line breaks. Use after pasting minified JSON.
Save Icon (💾)Saves the request body content. The saved value becomes the default payload in API Testing.
− CollapseCollapses the editor area to hide the code without losing content.

5. Operation Description

The Operation Description section breaks down the backend logic of the endpoint into numbered, sequential processing steps. Each step describes what the server does at that stage — validation, data transformation, database operations, or external service calls.

Steps can carry a coloured operation type badge (e.g., "Insert data") that classifies the server-side action. These badges feed the Code Builder and AI Analyzer to produce correctly typed implementation code.

Operation Description with two numbered steps and an Insert data badge
Figure AC-5 — Operation Description: numbered backend steps with operation type badges
ElementDescription
Step NumberAuto-incremented index (1, 2, 3 …). Steps are executed in order at runtime.
Step TextDetailed description of the backend action for this step. Written in plain language for developers and AI tools to interpret.
Operation Type BadgeColoured label classifying the step type (e.g., "Insert data" in amber, "Validate" in blue, "Return" in green). Used by Code Builder to generate the correct ORM or query type.
Edit IconOpens inline editing for the step text and badge type.
Delete IconRemoves the step permanently. Remaining steps are re-numbered.
+ ButtonAdds a new step at the end of the list.

Code Builder integration

Operation steps with badges like Insert data, Select, or Update are read by the Code Builder to produce matching repository or service layer functions. The more precise the step text, the higher the quality of generated code.

6. Output Fields

Output Fields documents the schema of the successful response — every field that the endpoint returns, including nested fields. This table is the machine-readable source of truth for the response structure, used by the UI Canvas Attribute Binding in the CSS Panel and by the Code Builder's DTO generation.

Output Fields table with success, message, data.userId, data.username, data.email rows
Figure AC-6 — Output Fields: response schema with nested field paths

Table Columns

ElementDescription
#Auto-incremented row index.
NameDot-notation field path as it appears in the JSON response (e.g., "data.userId"). Supports nested objects.
DescriptionHuman-readable explanation of the field's type, content, and significance.

Example — insert/user Response Fields

ElementDescription
successTop-level flag indicating whether the operation completed successfully.
messageHuman-readable outcome message confirming successful user creation.
data.userIdUnique identifier (UUID v4) assigned to the newly created user.
data.usernameThe username of the newly created user.
data.emailThe email address of the newly created user.
ElementDescription
+ ButtonAdds a new output field row. Enter the dot-notation path and description.

7. Response Body

The Response Body section contains a concrete JSON example of the successful response payload. It complements the Output Fields schema by showing real values in context. This example is displayed in the Live Preview modal and is used as the mock response in API Testing.

Response Body editor with JSON example showing success, message, and data fields
Figure AC-7 — Response Body: full JSON success response for insert/user
ElementDescription
Code EditorInline syntax-highlighted JSON editor. Paste or type the expected successful response. The editor renders keys in blue and string values in red.
Line NumbersLine numbers for reference. Useful for large nested responses.
BeautifyFormats and indents the JSON for readability.
Save Icon (💾)Persists the response body. Saved value is loaded in Live Preview and API Testing.
− CollapseHides the editor area without clearing the content.

8. Live Preview

Live Preview opens a modal overlay that renders all canvas sections in a clean, read-only format — the same layout used for the public shared view. It allows reviewing the complete API documentation without leaving the editor. Access it from the Action ▾ menu → Live Preview.

API Canvas Live Preview modal showing Name, Method, Local URL, Description, and Input Fields
Figure AC-8 — Live Preview modal: compiled read-only view of the API Canvas
ElementDescription
NameThe endpoint path (e.g., "insert/user").
MethodHTTP method badge (e.g., POST shown in blue). Set when configuring the endpoint.
Local URLThe local development URL path with a copy-to-clipboard icon.
File PathThe source code file path for the endpoint with a copy icon. Populated when GitHub Files are linked.
DescriptionFull description text rendered as readable paragraphs.
Input FieldsNumbered list of headers/params with descriptions.
Request BodyJSON payload example rendered in a code block.
✕ CloseCloses the modal and returns to the editor.

9. Public Sharing

The Share dialog generates a public read-only link for the API Canvas. Anyone with the link can view the full canvas documentation without a DPS account. Open it from the Action ▾ menu → Share, or click the dropdown arrow next to the "shared" badge in the endpoint toolbar.

Share dialog with Enable Public Sharing toggle, public URL, and Generate New ID button
Figure AC-9 — Share dialog: enable public link and manage sharing settings
ElementDescription
Enable Public Sharing (toggle)When ON (blue), the public URL is active and accessible to anyone. When OFF, the link is deactivated and returns a 403 to visitors.
Public Share LinkThe full read-only URL (e.g., https://…/api-canvas/share/{id}). Click the copy icon to copy to clipboard.
"Anyone with this link…"Confirms that the shared URL grants read-only access with no login required.
"No authentication required"Viewers do not need a DPS account to access the shared canvas.
"Changes you make will be visible…"Any edits saved to this canvas are immediately reflected in the shared link — there is no separate snapshot or version lock.
Generate New IDInvalidates the existing public URL and creates a new share ID. Use this to revoke access for previous link holders.
CloseCloses the dialog. Sharing state is saved automatically.

10. Shared Canvas View

When a visitor opens the public share URL, they see a read-only canvas viewrendered in a plain browser page — no DPS account or login required. A blue banner at the top confirms the read-only state. The layout mirrors the Live Preview modal but is a full standalone page.

Shared canvas read-only view in browser showing all sections in a clean layout
Figure AC-10 — Shared Canvas View: public read-only page accessible via share URL
ElementDescription
"Read-only Mode" bannerBlue information bar at the top. Reads: "This is a read-only view of a shared API canvas. You cannot make changes." Always visible to visitors.
Overview sectionShows Name, Description, URL, Method badge, and Local URL in a structured card.
Input Parameters (N)Collapsible list of all input fields with their descriptions. Count shown in the header.
Output Fields (N)Collapsible list of all output fields. Count shown in the header.
Operations (N)Collapsible numbered list of operation steps. Count shown in the header.
Request BodyJSON payload example shown in a code block. Collapsible.
Response BodyJSON response example shown in a code block. Collapsible.
Browser URLThe public share URL (https://…/api-canvas/share/{id}). Shareable directly from the address bar.

11. Change History

The Change History panel is a slide-in sidebar that records every edit made to the API Canvas, including who made the change, when, which field was modified, and what the old and new values were. Open it from Action ▾ → Change History.

Change History panel showing two API Canvas Updated entries with old and new JSON values
Figure AC-11 — Change History: timestamped audit log with diff view
ElementDescription
Panel Title"Change History" with the endpoint name (e.g., "insert/user") shown as subtitle.
✕ CloseDismisses the panel and returns focus to the main canvas editor.
Event Type Badge"API Canvas Updated" — the type of change recorded. Future entry types may include "Created" or "Deleted".
TimestampDate and time of the change in DD/MM/YYYY, HH:MM:SS format (e.g., 25/04/2026, 12:31:11).
AuthorEmail address of the user who made the change.
Field BadgeThe canvas field that was modified (e.g., "endpoint"). Corresponds to one of the six canvas sections or the endpoint path.
Old ValueThe previous value before the change, shown as a formatted JSON snippet. Truncated for long values — click to expand.
New ValueThe value after the change was saved.

12. Import & Export

API Canvases can be exported as JSON files and re-imported into the same or a different project. Both operations are section-selective — you choose exactly which sections to include, enabling partial transfers without overwriting unrelated data. Access both from Action ▾ → Import or Export.

Import API Canvas

Import API Canvas dialog with section toggles and JSON paste area
Figure AC-12a — Import dialog: select sections and paste or upload JSON
ElementDescription
Import targetShows the destination canvas (e.g., "insert/user"). The import will write into this canvas.
BrowseOpens a file picker to load a .json export file from disk instead of pasting.
Supported API sectionsLists the importable section names: description, input, requestBody, operation, output, responseBody.
Clean existing section before importToggles that control whether each section is cleared before writing the imported data.
Section Toggles (Description … Response Body)Each toggle is independent. ON = the existing section content is wiped before the imported content is written. OFF = imported content is appended or merged.
JSON Paste AreaPaste the JSON canvas export directly here, or use Browse to load a file.
ImportExecutes the import. Affected sections are updated immediately.
CancelCloses the dialog without importing.

Export API Canvas JSON

Export API Canvas JSON dialog with all section checkboxes checked
Figure AC-12b — Export dialog: choose sections and download as JSON file
ElementDescription
File nameAuto-generated filename from the endpoint path (e.g., "insertuser.json"). Dots and slashes are removed.
Section Checkboxes (6)Each section is checked by default. Uncheck any sections you do not want included in the export file.
ExportDownloads the selected sections as a .json file to the local machine.
CancelCloses the dialog without downloading.

13. Duplicate Canvas

Duplicate Canvas creates an exact copy of the current API Canvas — including all six sections — under a new endpoint name within the same project. Use it to create variations of an existing endpoint (e.g., "update/user" from "insert/user") without rewriting shared content from scratch. Access from Action ▾ → Duplicate.

Duplicate API Canvas dialog with New Canvas Name input
Figure AC-13 — Duplicate Canvas dialog: enter a new endpoint name to clone the canvas
ElementDescription
* New Canvas NameThe endpoint path for the duplicated canvas (e.g., "update/user"). Must be unique within the project. The asterisk (*) indicates a required field.
DuplicateCreates the new canvas with all content copied from the source. Navigates to the new canvas immediately after creation.
CancelCloses the dialog without creating a copy.

Full content copy

The duplicate includes all six sections: Description, Input Fields, Request Body, Operation Description, Output Fields, and Response Body. Edit only what differs in the new endpoint — shared content like authentication headers or base response structure does not need to be re-entered.
API Testing

1. API Testing Overview

The API Testing module is the live execution environment inside the DPS System. It lets you send HTTP requests directly from the browser, inspect responses, manage environment variables, run load tests, and compare endpoints side by side — all without leaving the platform.

The module is accessible from the left sidebar under API Testing. When opened from an API Canvas via the Test button, the endpoint path, request body, and headers are pre-populated automatically.

API Testing general view showing the API Editor with method selector, URL bar, and tab panels
Figure AT-1 — API Testing module: API Editor interface

Top Toolbar

ElementDescription
Endpoint SelectorDisplays the active endpoint (e.g., "insert/user"). Shows how many endpoints are available in the project. Click to switch between saved endpoints.
Environment BadgeShows the currently active environment (e.g., "test (Active)"). Click to switch between environments.
EnvironmentsOpens the Environment Management modal to create, edit, or switch environments and their variables.
Console (N)Opens the Request Console Inspector to view the history of all requests made in this session, including status, timing, and full detail.
Stress TestOpens the Advanced Load Testing modal to configure and run repeated requests for performance measurement.
CompareOpens the Request Comparison tool to run two endpoint variants side by side and diff their responses.

Request Builder

ElementDescription
Active Environment BannerConfirms which environment is active and lists how many variables are available. Use {{variableName}} syntax in the URL, headers, params, or body to reference them.
HTTP Method SelectorChoose from GET, POST, PUT, PATCH, DELETE, HEAD, or OPTIONS. Defaults to GET for new requests.
URL / Endpoint InputFull URL or path for the request. Supports environment variable interpolation (e.g., "{url}/loging"). Resolved URL is shown in the Console detail view.
RunSends the request with current method, URL, headers, and body. Response appears in the Response tab below.
SaveSaves the current request configuration (method + URL + body + headers) to the selected endpoint slot.

Tab Panels

ElementDescription
AuthorizationSet bearer tokens and custom authorization headers. See Section 8.
BodyJSON or raw request body editor for POST/PUT/PATCH requests.
ResponseDisplays the server response after clicking Run, including status, timing, size, and response body.

2. Environments

Environments let you define named sets of variables (such as base URLs, API keys, or tokens) that are automatically injected into your requests at runtime. Switching environments instantly changes all variable values without editing the URL or body manually — making it effortless to test against development, staging, and production targets.

Open the Environment Management modal by clicking Environments in the top toolbar.

Environment Management modal listing the 'test' environment with its variables
Figure AT-2 — Environment Management: list of environments and their variables
ElementDescription
+ New EnvironmentOpens the Add Environment dialog to create a new named environment. See Section 3.
NameThe identifier for the environment (e.g., "test"). Referenced nowhere in request syntax — only the variables inside it are used.
VariablesShows the count of key-value pairs defined in that environment (e.g., "2 variables").
ActiveA green "Active" badge marks the environment currently injected into all requests. Only one environment can be active at a time.
EditOpens the environment in edit mode so you can rename it, add variables, or change values.
DeletePermanently removes the environment and all its variables. Cannot be undone.
Variables for [name]Expands below the selected environment to preview all key-value pairs (e.g., url = https://main.com, urlProd = https://test.com) without opening the edit dialog.

Using variables in requests

Reference any variable by wrapping its key in double curly braces:{{url}}. The active environment resolves the value at run time. The Console Log shows the original template and the resolved URL side by side.

3. Add Environment

The New Environment dialog allows you to create a named environment and populate it with key-value variable pairs in one step. Variables you add here become immediately available in all request URLs, headers, params, and body fields via the {{key}} syntax.

New Environment dialog with name input, active toggle, and Key/Value variable rows
Figure AT-3 — New Environment dialog: define name and variable pairs
ElementDescription
* Environment NameA unique label for this environment (e.g., "Development", "Production"). Shown in the environment dropdown and in the Active Environment banner.
Set as active environmentWhen checked, this environment becomes the active one immediately after saving, replacing any previously active environment.
Variables / + Add VariableAdds a new empty Key / Value row to the variable table. You can also paste a .env file's contents directly — variables are split into separate rows automatically.
KeyThe variable name used in request templates (e.g., "url", "token"). Case-sensitive.
ValueThe actual string substituted when the variable is resolved at run time (e.g., "https://main.com").
Delete Row (🗑)Removes that specific variable row from the list.
CancelCloses the dialog without saving any changes.
SaveCreates the environment with the specified name and variables. If "Set as active" is checked, all subsequent requests use the new environment.

.env paste support

You can paste the contents of a .env file directly into any Key or Value cell. DPS automatically splits the content into separate rows, saving you from entering variables one by one.

4. Run API

Clicking Run sends the configured request to the target server and displays the full response in the Response tab. The result includes HTTP status, response time, payload size, and the parsed response body with Body / Headers / Cookies subtabs.

API Testing response tab showing a CORS error with network info and JSON response body
Figure AT-4 — Run API: response panel with CORS error and response body

Response Tab Elements

ElementDescription
Status IndicatorHTTP status code returned by the server (e.g., 200, 401, 404, 500). Shown in colour: green for 2xx, red for 4xx/5xx.
Network Info BarShows whether the request went through a Network Error (CORS block) or succeeded, plus the response time in milliseconds and payload size in bytes.
BodyDisplays the parsed response body. Toggle between Raw View (plain text) and HTML View (rendered markup) using the buttons in the top-right corner.
Headers (N)Lists all response headers returned by the server.
Cookies (N)Shows any cookies set by the server in the response.
Raw View / HTML ViewSwitch the response body display between raw text and rendered HTML.

CORS Error

ElementDescription
CORS Error BannerAppears when the browser blocks the request because the target server has not allowed cross-origin requests from DPS. This is a browser security restriction, not a DPS issue.
Postman NoteDPS displays an advisory that the same request may succeed in Postman (which is not subject to browser CORS policy). If the API must be tested in-browser, the target server must include the appropriate CORS headers.

CORS in browser-based testing

CORS errors occur only when testing from a browser. The request itself may be perfectly valid — the server simply has not whitelisted the DPS origin. ConfigureAccess-Control-Allow-Originon your server, or use the API Testing module from a backend proxy to bypass the restriction.

5. Console Log

The Request Console Inspector maintains a session-level log of every request sent from the API Testing module. Each entry shows the HTTP method, resolved URL, status code, response time, and payload size. Clicking any row expands a detail panel with the full request and response breakdown.

Open the console by clicking Console (N) in the top toolbar, where N is the count of requests made in the current session.

Request Console Inspector panel showing a request list and detail view for a selected GET request
Figure AT-5 — Console Log: session request history and detail panel

Request List

ElementDescription
Search BarFilter the request list by URL or HTTP method. Updates in real time.
Clear AllRemoves all entries from the console log for this session. Cannot be undone.
MethodHTTP method label (GET, POST, etc.) with colour coding — blue for GET, green for POST.
URLThe resolved URL used for the request (environment variables already substituted).
StatusHTTP response status code or "Pending" while the request is in flight.
TimeServer response time in milliseconds.
SizeResponse payload size in bytes.
TimestampWall-clock time when the request was dispatched (e.g., 07:18:42 PM).

Detail Panel — Overview

ElementDescription
MethodHTTP method of the selected request.
StatusFinal HTTP status code (e.g., 403, 200).
Original URLThe raw URL template as typed in the request builder, including unresolved variable placeholders (e.g., {url}/loging).
Resolved URLThe actual URL sent to the server after environment variables have been substituted.
Response TimeRound-trip latency in milliseconds for this specific request.
Response SizeSize of the response body in bytes.
TimestampExact date and time the request was sent (format: DD/MM/YYYY, HH:MM:SS).
Environment Variables UsedLists all variables that were resolved from the active environment for this request.
Request → HeadersShows all request headers sent, including Content-Type and any Authorization tokens.
Request → ParamsQuery parameters appended to the URL.
Request → BodyThe request body payload as sent (JSON or raw text).
ResponseExpands to show the full response body received from the server.

6. Stress Test

The Stress Test feature sends repeated requests to an API endpoint to measure its behaviour under load. Use it to identify throughput limits, error rates under concurrency, and response time degradation — directly inside DPS without external tools.

Open the modal by clicking Stress Test in the top toolbar. The test runs against the URL and method currently configured in the request builder.

Stress Test modal showing Advanced Load Testing configuration with Request Count, Concurrency, and Batch Delay fields
Figure AT-6 — Stress Test: Advanced Load Testing configuration
ElementDescription
Advanced Load TestingIndicates that the tool performs load simulation, not just a simple repeated call. Use it only against APIs you own or are authorised to load-test.
Test ModeSelects the test strategy. "Request Count" mode runs a fixed total number of requests. Other modes (if available) may control duration or ramp-up profile.
Total RequestsSummary label showing the configured total number of requests that will be sent across all concurrency slots.
AdvancedReveals additional low-level configuration options such as Batch Delay. Hidden by default to keep the UI simple.
* Request CountTotal number of HTTP requests to send. Default: 100. Required field.
* ConcurrencyNumber of requests sent in parallel at any moment. Default: 10. Higher values increase server pressure but may expose race conditions.
Batch Delay (ms)Milliseconds to wait between each concurrency batch. Set to 0 for a continuous burst (no pauses). Useful for simulating rate-limited clients.
Start TestBegins sending requests with the configured parameters. Results stream in real time.
Stop TestHalts an in-progress test immediately. Partial results are still visible in the console log.

Authorization for load testing

The advisory at the top of the modal reminds you to use this feature only against APIs you own or are explicitly authorised to test. Running unsanctioned load tests against third-party services may violate their terms of service.

7. Compare

The Request Comparison tool runs two endpoint variants simultaneously and presents a structured diff of their responses. It is useful for validating that a refactored endpoint is backward-compatible, comparing staging vs. production behaviour, or checking two different HTTP methods against the same path.

Open the modal by clicking Compare in the top toolbar. The left endpoint defaults to the current request configuration.

Request Comparison modal with Left and Right endpoints, run buttons, and JSON Diff table
Figure AT-7 — Request Comparison: side-by-side response diff

Endpoint Configuration

ElementDescription
LEFT ENDPOINTThe reference endpoint. Defaults to "(Current Request)" — the method, URL, and body from the active request builder.
RIGHT ENDPOINTThe endpoint path to compare against (e.g., "insert/user"). Uses the same active environment variables as the left side.
Run LeftExecutes only the left endpoint and populates the left response panel.
Run RightExecutes only the right endpoint and populates the right response panel.
Run BothExecutes both endpoints simultaneously and populates both panels for comparison.

Response Panels

ElementDescription
Left Status / Right StatusHTTP status codes returned by each endpoint. Helps immediately spot divergent status codes (e.g., 200 vs 401).
Left Time / Right TimeRound-trip response time in milliseconds for each endpoint. Use for performance comparison.
BodyDisplays the raw response body for each side.
HeadersLists the response headers for each side.
LEFT / RIGHT BadgeColour-coded labels (blue for LEFT, orange for RIGHT) appear above each response panel for easy visual separation.

Diff Tabs

ElementDescription
JSON DiffField-by-field comparison table. Each row shows a field name and its value in Left and Right columns. Highlights which fields are equal, changed, left-only, or right-only using colour-coded counts.
Header DiffSame field-by-field comparison, applied to response headers rather than the body.
PerformanceDisplays timing metrics side by side, useful for identifying which endpoint is faster under the same load conditions.
"Responses are identical"Appears in green below the diff tabs when both JSON body and headers match exactly.

8. Authorization

The Authorization tab lets you attach authentication credentials to outgoing requests. It supports bearer token authentication via dedicated token fields and allows arbitrary custom authorization headers through a key-value table.

Authorization tab showing Authorization Token, Quick Authorization Token fields, and a Key/Value header table
Figure AT-8 — Authorization tab: token fields and custom header pairs
ElementDescription
Authorization TokenPrimary bearer token field. The value entered here is automatically sent as the Authorization: Bearer <token> header on every request.
Quick Authorization TokenA secondary token slot for rapid switching (e.g., comparing admin vs. user tokens). When populated, it overrides the primary Authorization Token for the next run.
KeyCustom HTTP header name (e.g., "x-api-key", "x-tenant-id"). Added to the request alongside the Authorization header.
ValueValue for the corresponding custom header.
Delete Row (🗑)Removes that custom header row from the request.

Using environment variables for tokens

Store your tokens in an environment variable (e.g., token) and reference it in the Authorization Token field as {{token}}. This way you can switch tokens by simply changing environments rather than editing each request individually.
Backlog Canvas

1. Backlog Overview

The Backlog Canvas is the project management board of the DPS System. It centralises all development tasks (issues) in a single view, directly linking each issue to its corresponding UI Canvas and GitHub commits. Two views are available: List (tabular) and Kanban (column-based).

Backlog Canvas main list view with issues table and column customiser
Figure BC-1 — Backlog Canvas list view: issue table with column customiser open

Toolbar

ElementDescription
Search (issue)Free-text search across issue descriptions and IDs. Results filter in real time.
Create IssueOpens the Create New Issue modal. See Section 2.
FilterOpens the Issue Filter panel to narrow results by status, type, assignee, and more. See Section 14.
Column toggle iconsThree additional toolbar icons: column layout toggle, export/share, and refresh.
My IssueFilters the list to show only issues assigned to the currently logged-in user.
Columns dropdownOpens a checklist to show/hide individual table columns. Reset Order restores default column order.

Issue Table Columns

ElementDescription
#Sequential issue number within the project. Unique identifier for each task.
StatusCurrent state of the issue: NEW (yellow), ONGOING (blue), CLOSED (grey), or WAITING. Clickable to change status inline.
DescriptionBrief title or description of the task. Includes a comment count badge when comments exist.
AssigneeAvatar of the user responsible for this issue.
Created ByAvatar of the user who created the issue.
Attached FilesNumber of file attachments on the issue, with a count badge for multiple files.
Commit SHA / Code LineShort commit hash linking this issue to a specific GitHub commit, plus the code lines count.
UI CanvasName of the UI Canvas this issue is linked to.
TypeIssue type badge: New Request, Bug, Change Request, or Backlog.

2. Create New Issue

The Create New Issue modal collects all essential data for a development task. Required fields are marked with an asterisk. The issue is immediately visible in the backlog list after creation.

Create New Issue modal with all input fields
Figure BC-2 — Create New Issue modal: required fields, issue type, priority, and image upload
ElementDescription
UI Canvas *Associates this issue with a specific UI Canvas screen. Only canvases within the current project are listed.
Assignee *User responsible for implementing or resolving this issue.
Common DescriptionsPre-defined description templates. Selecting one auto-populates the Description field.
Description *Clear explanation of the task. Placeholder: "Explain the issue clearly so implementation can start without extra clarification…"
Issue Type *Classifies the issue: New Request (blue), Bug, Change Request, or Backlog.
PrioritySets urgency level: Urgent (red), High (yellow), or Normal (blue, default).
Upload ImageAttaches a screenshot or mockup to the issue via the "Choose File" picker.
Drag, Drop or PasteAlternative image upload: drag a file, drop it, or paste from clipboard. Supports PNG and JPG.
Close after insertWhen enabled, the modal closes automatically after the issue is created.
Create IssueSubmits the form and creates the issue. Disabled until all required fields are filled.
CancelCloses the modal without saving.

Required fields

The system enforces four required fields: UI Canvas, Assignee, Description, and Issue Type. A validation message at the bottom of the modal lists them if the form is submitted incomplete.

3. Issue Details

Clicking any issue in the list opens the Issue Details panel — a slide-in drawer with five tabs (Details, Committed Files, Issue Relations, Comments, History) and a persistent right sidebar for metadata and actions.

Issue Details panel showing the Details tab with description and attachments
Figure BC-3 — Issue Details: Details tab with description, related canvas, and attachment zone

Details Tab

ElementDescription
DescriptionFull description of the issue as entered during creation. An Edit link appears on hover.
Related UI CanvasLinked UI Canvas screen shown as a clickable tag (e.g., "🔲 Login").
AttachmentsThumbnail grid of attached images/files. Drag, drop, or paste new files to add. Click a thumbnail to preview.

Right Sidebar

ElementDescription
AssigneeAvatar and name of the assigned user.
Created ByAvatar and name of the issue creator.
StatusCurrent status displayed as a coloured badge. Click to open the Change Status panel. See Section 10.
PriorityInline priority selector: Urgent, High, Normal.
ActionsAction menu for issue management operations. See Section 8.
Estimation HoursPlanned hours for this issue (e.g., 0.00). Updated manually.
Spent HoursActual hours logged against this issue.
Issue / Type / Priority / Sprint / CreatedSummary chip grid showing all key issue attributes at a glance.

4. Comments

The Comments tab enables team collaboration directly on the issue. All comments are persisted and displayed in chronological order below the editor.

Comments tab with rich-text editor and existing comment
Figure BC-4 — Comments tab: rich-text editor and posted comment with Edit action

Comment Editor

ElementDescription
Formatting ToolbarRich-text controls: font size selector, Bold, Italic, Underline, Ordered List, Unordered List, Link, Image, Code Block, Clear Formatting.
Write areaBlank editor where the comment is composed. Supports formatted text.
SavePosts the comment and appends it to the comment list.
CancelDiscards the draft without posting.

Comment List

ElementDescription
User AvatarColoured circle with initials identifying the comment author.
Author NameFull name of the commenter (e.g., "Raine Smith").
TimestampRelative time since posting (e.g., "2 minutes ago").
Comment BodyFull text of the comment, preserving rich-text formatting.
EditAllows the author to modify their posted comment.

5. Issue History

The History tab provides a full audit trail of every change made to the issue. Each entry records who did what and when, making it easy to trace the lifecycle of any task.

Issue History tab showing a chronological list of changes
Figure BC-5 — Issue History: chronological audit log with user, action, and timestamp
ElementDescription
User Avatar + NameThe user who performed the action, shown with avatar circle and full name.
Action DescriptionHuman-readable description of the change: e.g., "added a Comment", "added an Attachment", "created the Work Item".
Attachment DetailsWhen files are attached, the entry expands to show the file name, a download link, and a counter (e.g., 4→5).
TimestampExact date and time of the action (e.g., "April 23, 2026 at 7:23 PM").

6. Issue Relations

The Issue Relations tab maps dependencies between issues. Two relation types are supported: Parent Issues (the source task this issue derives from) and Child Issues (follow-up tasks created from this issue).

Issue Relations tab showing Parent Issues and Child Issues sections
Figure BC-6 — Issue Relations: parent and child issue sections with add controls
ElementDescription
Parent IssuesLists the source issue(s) this work item was derived from. Each entry shows the parent issue number and description.
Child IssuesLists any follow-up issues created from this task. Useful for breaking large tasks into subtasks.
+ (Add button)Present in both sections. Opens a picker to search and select an existing issue to link as parent or child.
Empty state message"No parent issue linked yet" / "No child issues linked yet" — shown when no relations exist.

7. Committed Files

The Committed Files tab links the issue to its corresponding GitHub commits, showing exactly which code files were changed to resolve it. This creates a traceable connection between a backlog task and its implementation.

Committed Files tab showing GitHub commit details with file changes
Figure BC-7 — Committed Files: commit metadata, diff stats, and changed file list
ElementDescription
Author + TimestampGitHub username and exact commit date/time (e.g., "anar1984 23/04/2026 11:54:24").
SHA HashShort commit hash (e.g., "SHA: 8950df9"). Used to uniquely identify the commit in GitHub.
Change GitHub commitsAllows re-linking this issue to a different commit. Opens the GitHub commit picker.
Commit MessageThe commit message as entered by the developer (e.g., "Initial commit").
+N additions / -N deletionsLine-level diff summary showing lines added (green) and removed (red) across all changed files.
N file(s) changedTotal count of files modified in this commit.
View on GitHubOpens the full commit page on GitHub in a new tab.
Changed Files listCollapsible list of each modified file with status badge (added/modified/deleted), +/- line counts, and total changes.

8. Actions Menu

The Actions dropdown in the issue sidebar provides quick-access commands for managing the issue lifecycle. A Code Line input below it allows linking the issue to a specific code line count from a commit.

Actions dropdown menu open on the Issue Details sidebar
Figure BC-8 — Actions dropdown with four management options and Code Line input
ElementDescription
Select Action (dropdown)Click to expand the action list. Closes automatically after selection.
Update TypeChanges the issue type (New Request, Bug, Change Request, Backlog). See Section 11.
Related UI CanvasRe-links this issue to a different UI Canvas screen.
Close and SendMarks the issue as closed and forwards it to another user. See Section 13.
Forward IssueReassigns the issue to another team member without closing it. See Section 12.
Code Line (input)Numeric field to record the specific code line count associated with this issue's resolution.

9. Share Issue

Any issue can be shared via a public URL using the Share button in the issue header. Recipients can view the issue details without requiring a DPS System login.

Share Issue modal with generated public URL and Copy link button
Figure BC-9 — Share Issue modal: auto-generated public link with one-click copy
ElementDescription
Share issue #N (title)Modal title showing the issue number being shared.
Share linkSection label for the generated URL.
URL fieldThe generated public URL (e.g., https://…/backlog-canvas?key=RgKgO). Read-only; copy via the Copy link button.
Copy linkCopies the URL to the system clipboard.
✕ (close)Closes the modal without copying.

10. Change Status

Clicking the Status badge on an issue row opens the Update Issue Status panel, allowing the status to be changed inline without opening the full issue details.

Update Issue Status panel open on the right side of the backlog list
Figure BC-10 — Update Issue Status panel with status dropdown
ElementDescription
Status dropdownLists all available statuses: New, Ongoing, Closed, Waiting, Draft. The current status is pre-selected.
UpdateSaves the new status immediately. The badge in the list updates in real time.
CancelCloses the panel without changing the status.

11. Change Issue Type

The Update Issue Type panel is opened via Actions → Update Typeand allows reclassifying the issue without editing the full form.

Update Issue Type panel with type dropdown showing four options
Figure BC-11 — Update Issue Type panel: four classification options
ElementDescription
Type dropdownFour options: New Request, Bug, Change Request, Backlog. The current type is pre-selected (shown at top of the dropdown).
UpdateApplies the type change and updates the badge in the issue list.
CancelCloses the panel without making changes.

12. Change Assignee (Forward Issue)

The Forward Issue(s) panel reassigns the issue to another team member. Accessible via Actions → Forward Issue, it searches all project members and transfers ownership immediately upon confirmation.

Forward Issues panel with user search and team member list
Figure BC-12 — Forward Issue(s) panel: searchable team member list with email addresses
ElementDescription
Search inputType a name or email to filter the team member list. Results update as you type.
User listAll project members shown with avatar, full name, and email. The highlighted row is the currently selected user.
ForwardAssigns the issue to the selected user and updates the Assignee field in the details sidebar.
CancelCloses the panel without reassigning.

13. Close and Send

Close and Send (via Actions → Close and Send) closes the issue and simultaneously forwards a summary notification to another user. This is typically used when a developer completes a task and hands it off for QA or product review.

Close and Send Issue panel with assignee, type, and comment fields
Figure BC-13 — Close and Send Issue panel: recipient, type, and optional comment
ElementDescription
Assignee *The user who will receive the closed issue notification (e.g., "John Muller"). Pre-populated from the current assignee.
Type *Issue type at the time of closing (e.g., "New Request"). Shown for reference.
CommentOptional message to accompany the closure — useful for explaining what was done or what needs review next.
Close and SendCloses the issue and dispatches the notification to the specified assignee.
CancelCloses the panel without closing the issue.

14. Issue Filter

The Issue Filter panel lets teams narrow the backlog list by combining multiple criteria simultaneously. Opened via the Filter button in the toolbar, it supports eight filter dimensions across three row groups.

Issue Filter modal with multiple filter fields across three rows
Figure BC-14 — Issue Filter panel: eight combinable filter dimensions
ElementDescription
Issue NoFilters by the numeric issue ID.
StatusFilters by current status (New, Ongoing, Closed, Waiting, Draft).
TypeFilters by issue type (New Request, Bug, Change Request, Backlog). Supports multi-select.
Issue DescriptionPartial or full text search within issue description fields.
AssigneeFilters to issues assigned to a specific team member.
Created ByFilters by the user who originally created the issue.
UI CanvasShows only issues linked to the selected UI Canvas screen.
SprintFilters to issues assigned to a specific sprint.
Created DateFilters to issues created on or after this date.
Closed DateFilters to issues closed on or before this date.
FilterApplies all active filters and updates the backlog list.
ClearResets all filter fields to their default (empty) state.
CancelCloses the panel without applying changes.

Combining filters

All active filter fields are combined with AND logic — the list shows only issues that match every active criterion simultaneously. Use Clear to reset all fields and return to the full issue list.

15. Commit History

The Commit History panel shows the full diff view for a specific commit linked to an issue. It provides deep visibility into the exact code changes that resolved the task, bridging the gap between backlog tracking and source control.

Commit History panel with full diff view for a single commit
Figure BC-15 — Commit History: full diff view with file-level changes and GitHub link
ElementDescription
Panel Title"Commit History – {issue description}" — confirms which issue's commit is being viewed.
Author + TimestampGitHub username and exact date/time of the commit.
Commit MessageFull commit message as written by the developer.
+N additions / -N deletionsAggregate line-level diff across all changed files.
N file(s) changedTotal file count modified in this commit.
SHA HashShort commit SHA shown on the right side of the header row.
View on GitHubOpens the commit on GitHub in a new browser tab.
Changed FilesExpandable list of files: file path, status badge (added/modified/deleted), +/- line stats, and inline diff view.

16. Add GitHub Commits as Issue

The GitHub Commits – Not in Backlog modal bridges the gap between code commits and tracked issues. It lists commits from the linked repository that have not yet been associated with any backlog task, allowing them to be retroactively added as issues.

GitHub Commits Not in Backlog modal showing filter toolbar
Figure BC-16a — GitHub Commits Not in Backlog: filter toolbar for repository, branch, date range, and collaborator
GitHub Commits Not in Backlog modal with commit list and Add to Backlog controls
Figure BC-16b — GitHub Commits Not in Backlog: commit list with canvas and assignee selectors and Add to Backlog button

Filter Toolbar

ElementDescription
RepositorySelects the GitHub repository to scan (e.g., "DPS-Public/react_mekan_4_dps_demo…").
Filter by BranchLimits commits to a specific branch (e.g., "main").
From Date – To DateNarrows the search to commits within the specified date range.
Filter by CollaboratorShows only commits made by a specific GitHub collaborator.
FilterApplies all active filter criteria to the commit list.

Commit Entries

ElementDescription
Author + Date + SHAGitHub author, commit date/time, and short SHA hash for identification.
Commit MessageFull commit message as entered by the developer.
+N Added / -N DeletedFile-level change summary (added, deleted, modified).
N files changedTotal count of modified files in this commit.
View on GitHubOpens the commit directly on GitHub in a new tab.
Edit UI CanvasAssociates this commit with a specific UI Canvas screen when creating the backlog issue.
Select AssigneeSets the assignee for the new backlog issue derived from this commit.
Add to BacklogCreates a new backlog issue from this commit and removes it from this "not in backlog" list.

No commits found

If the list shows "No commits found or all commits are already in backlog", all recent commits are already tracked. Adjust the date range or branch filter, or check that the correct repository is selected.

17. Kanban View

Switching to the Kanban tab transforms the backlog into a column-based board. Issues are grouped by status, giving teams a visual overview of workflow progress across all active tasks at a glance.

Backlog Canvas in Kanban view with five status columns
Figure BC-17 — Kanban view: five status columns with issue cards and create-in-column support

Status Columns

ElementDescription
New (orange)All newly created issues awaiting assignment or start. Issue count badge shown in the column header.
Ongoing (blue)Issues currently being actively worked on by the assigned developer.
Closed (green)Completed issues. Populated automatically when status is set to Closed.
Waiting (yellow)Issues blocked or waiting on an external dependency before work can continue.
Draft (grey)Issues in planning stage — not yet ready for assignment or active work.

Issue Card

ElementDescription
#N (issue number)Issue number shown in the top-left of the card.
Priority badgeColoured label showing Urgent, High, or Normal priority.
DescriptionBrief issue description truncated to fit the card width.
Related CanvasLinked UI Canvas name as a clickable tag (e.g., "🔲 Login").
DateIssue creation or last-updated date.
Assignee avatarsAvatar circles of the assigned users.
+ Create IssueInline create button at the bottom of each column — creates a new issue with the column's status pre-selected.

Switching views

Toggle between List and Kanban using the List / Kanban tabs in the toolbar. Both views show the same issues — the choice is purely a workflow preference. Filters applied in List view carry over to Kanban view and vice versa.
Code Builder

1. Code Builder Overview

The Code Builder is an integrated GitHub-powered development workspace inside DPS. It lets you browse repositories, view source files, track commit history, and open files in your preferred external editor — all without leaving the platform.

Code Builder bridges the gap between canvas design and actual code execution. Once linked to a GitHub repository, every file in the repo is accessible directly alongside the UI Canvas and API Canvas it was built from.

ElementDescription
GitHub Repository BrowserMain workspace pane — combines the file tree, code viewer, and toolbar actions in one panel.
Sign in with GitHubLaunches the OAuth flow to authenticate DPS with your GitHub account.
File TreeLeft-side expandable directory listing for the selected repository and branch.
Code ViewerRight-side syntax-highlighted file content display with line numbers.
Commit HistorySlide-in panel showing the full commit log, filterable by branch and date range.

Where to find it

Open the DPS project and click Code Builder in the left navigation menu. The module is only available after connecting at least one GitHub repository via the GitHub Repositories settings page.

2. GitHub Authentication

Before browsing any repository, you must authenticate with GitHub. DPS uses the standard OAuth 2.0 flow — no personal access tokens or SSH keys needed. Authentication is per-user and persists for the session.

Code Builder — GitHub Repository Browser login screen
Figure CB-2 — GitHub Repository Browser before authentication: Sign in prompt

Authentication Flow

ElementDescription
GitHub Repository Browser headingModule header confirming you are inside the Code Builder workspace.
GitHub logo + Connect to GitHubVisual confirmation that no GitHub session is currently active.
"Authenticate with GitHub…" subtitleExplains the purpose: authenticate to browse and edit your repositories.
Sign in with GitHubInitiates the OAuth redirect to GitHub. After approval, DPS receives a scoped token and returns you to the browser.
Login with GitHub (top-right)Alternate entry point at the top-right of the panel — produces the same OAuth flow.
"Logged out from GitHub" toastGreen toast that appears at the top of the screen when a session ends or logout is triggered.

Re-authentication

Sessions are not permanent. If the DPS page is refreshed after a long idle period, you may be returned to this login screen. Simply click Sign in with GitHub again — your previously linked repositories remain intact.

3. Repository & File Explorer

After authentication the full GitHub Repository Browser becomes active. The left panel shows an expandable directory tree for the selected repository and branch; the right panel renders the selected file with syntax highlighting and line numbers.

Code Builder — main page with file tree and code viewer
Figure CB-3 — Repository Browser: file tree (left) + syntax-highlighted code viewer (right)

Toolbar Elements

ElementDescription
Repository path breadcrumbShows the GitHub owner/repo name (e.g., DPS-Public/react_mekan_4_dps_…). Confirms the active repository.
Private badgeIndicates the repository visibility on GitHub (Private / Public).
Branch selectorSwitch the file tree and code viewer to any branch available in the repository (e.g., main, develop, feature/*).
Open inOpens a dropdown of external editors for the currently selected file or repository.
Commit HistorySlides open the Commit History panel on top of the file explorer.
Load ContentPushes the currently viewed file content into the active DPS canvas or API canvas context.
GitHub LogoutEnds the OAuth session and returns the panel to the Sign in screen.

File Tree Panel

ElementDescription
Repository name tabShows the repo name as a clickable tab — navigates to the root of the file tree.
Language badgeAuto-detected programming language of the currently open file (e.g., JavaScript, TypeScript).
Search filesFilter the file tree in real time by typing a file or folder name.
RefreshRe-fetches the file tree from GitHub to pick up any newly pushed files.
Folder rows (▶)Click to expand or collapse a directory. Sub-directories nest visually with indentation.
File rowsClick a file to load its content in the code viewer. The active file is highlighted.

Code Viewer Panel

ElementDescription
File name tabDisplays the currently open file name (e.g., App.jsx). A pencil icon on the right allows inline editing when permitted.
Line numbersSequential line numbers on the left for easy reference during code review.
Syntax highlightingLanguage-specific colour coding applied automatically based on the detected file type.
Branch: main labelConfirms which branch the displayed file content is being read from.

4. Open in External Tools

The Open in button gives one-click access to five popular development environments. DPS constructs the correct deep-link URL for the active repository and redirects you instantly — no manual URL construction or workspace setup required.

Code Builder — Open in dropdown showing five editor options
Figure CB-4 — 'Open in' dropdown: five external editor integrations

Available Options

ElementDescription
Open in VS CodeLaunches the repository in a locally installed Visual Studio Code instance using the vscode:// URI scheme.
Open in StackBlitzOpens the repository in StackBlitz — a browser-based Node.js dev environment with instant hot-reload.
Open in CodeSandboxForks the repository into CodeSandbox for rapid prototyping without any local setup.
Open in CodeSpaceSpins up a GitHub Codespace — a full cloud-hosted VS Code environment with configurable compute.
Open in github.devOpens the repository in GitHub's built-in browser-based text editor at github.dev — read and commit without cloning.

Which option to choose?

Use VS Code for full local development. Use github.dev for quick edits without setup. Use CodeSandbox or StackBlitzwhen you need a shareable sandbox. Use CodeSpace when you need a full cloud environment with terminal access.

5. Commit History

Clicking Commit History in the toolbar slides open a full commit log for the active repository. The log is filterable by branch and date range, and each entry summarises what changed and who made the change.

Code Builder — Commit History panel with branch and date filters
Figure CB-5 — Commit History panel: branch filter, date range, and commit list

Filter Controls

ElementDescription
RepositoryDisplays the full owner/repo path to confirm which repository's commits are being shown.
Default BranchShows the repository default branch (e.g., main) as context for the filter.
Filter by BranchNarrows the commit list to commits made to the selected branch only.
From Date – To DateRestricts the commit list to a specific calendar window. Useful for sprint or release reviews.
FilterApplies the selected branch and date filters to refresh the commit list.

Commit Entry Anatomy

ElementDescription
Commit messageThe full commit subject line, typically following conventional commits format (feat, fix, chore, refactor…).
Author nameGitHub display name of the person who authored the commit.
TimestampExact date and time the commit was pushed (e.g., 23/04/2026, 12:47:36).
SHA hashShortened unique commit identifier (e.g., e62a25fc). Matches the SHA on GitHub.
+N Added badgeTotal number of lines added across all changed files in this commit.
−N Deleted badgeTotal number of lines deleted across all changed files in this commit.
N Files badgeTotal count of files that were created, modified, or deleted in this commit.
N Modified badgeCount of files that were changed (not newly added or deleted).
N files changedExpands the commit entry to reveal the per-file change breakdown.
View on GitHubOpens the commit detail page directly on GitHub.com in a new tab.

6. Commit Details & Changed Files

Clicking N files changed on any commit entry expands the Changed Files list — a per-file breakdown showing the file path, change status badge, and exact line-level statistics. Each file can be opened directly in the code viewer.

Code Builder — Commit History with expanded changed files list
Figure CB-6 — Commit entry expanded: changed files with status badges and [Open] links

Changed Files List

ElementDescription
Changed Files: (N files)Sub-section header confirming the number of files affected by this commit.
[Open] linkLoads the file content into the Code Builder code viewer panel for reading.
File name — [src/path/file.jsx]Display name of the file and its full repository path in brackets.
added badge (green)File was newly created in this commit — did not exist on the branch before.
modified badge (yellow)File already existed and was changed — lines added and/or deleted.
deleted badge (red)File was removed from the repository in this commit.
+N −N line statsLines added (green +) and deleted (red −) within this specific file.
N changesTotal edit count (additions + deletions) for this file.

Navigating between files

Click [Open] on any file in the changed files list to load it into the code viewer without closing the Commit History panel. This allows you to quickly review multiple files from the same commit one after another.

7. File Diff Viewer

Clicking [Open] on a changed file inside the Commit History launches the File Diff Viewer — an inline code comparison overlay that renders every addition and deletion for that file with colour-coded line highlighting.

Code Builder — File Diff Viewer showing inline code diff for App.jsx
Figure CB-7 — File Diff Viewer: inline diff for src/App.jsx — green additions, red deletions

Diff Viewer Elements

ElementDescription
File Diff: [file path]Header of the diff overlay. Shows the file path (e.g., File Diff: src/App.jsx) and can be closed with the × icon.
File: [path]Full relative file path inside the repository (e.g., File: src/App.jsx).
+N / −N change countTotal additions and deletions in this diff (e.g., +6 −1, 6 changes).
Green highlighted lines (+)Lines that were added in this commit. Background is green with a + prefix.
Red highlighted lines (−)Lines that were removed in this commit. Background is red with a − prefix.
Neutral context linesUnchanged lines shown around additions and deletions to provide reading context.
@@ hunk header @@Git diff hunk notation indicating the line range of the following change block (e.g., −2,4,0 @@ function App() @@).
Line numbers (left / right)Original (left) and new (right) line numbers shown in the gutter for precise reference.

Reading a diff

Read the diff top-to-bottom. Red lines show what was removed; green lines show what replaced or was added alongside it. Context lines (no colour) help you understand where in the file the change sits. The hunk header @@ tells you the exact starting line in both the old and new versions of the file.
GitHub Repositories

1. Repository List Overview

The GitHub Repositories module is the central place inside a DPS project for linking external GitHub repositories to canvases. Every repository added here becomes available to the Code Builder, Backlog Canvas commit integrations, and any canvas-level GitHub file associations. The page opens on a table listing all connected repositories with their ownership, canvas type, and quick-action controls.

GitHub Repositories — main list view with repository table
Figure GR-1 — GitHub Repositories main view: repository table with Owner, Repo, Type, Collaborators, and Actions columns

Page Header

ElementDescription
Add New Github RepositoryHeading of the module. Confirms you are managing repository connections for the current DPS project.
+ AddOpens the Add New Repository modal. Requires GitHub Owner, GitHub Repo name, and canvas Type to be filled in before saving.

Repository Table Columns

ElementDescription
GitHub OwnerThe GitHub organisation or individual account that owns the repository (e.g., DPS-Public).
GitHub RepoThe full repository name as it appears on GitHub (e.g., react_mekan_4_dps_demo_project_user_tracking_system).
TypeThe canvas category this repository is linked to. Possible values include UI Canvas and API Canvas.
CollaboratorsOpens the GitHub Collaborators modal showing all users who have access to this repository with their permission levels.
EditOpens the repository record for editing — allows updating the GitHub Owner, Repo name, or Type without deleting and re-adding.

One project — multiple repositories

A single DPS project can have multiple linked repositories — for example one for the frontend (UI Canvas type) and one for the backend (API Canvas type). Each canvas can then be associated with its relevant repository independently.

2. Add New Repository

Clicking the + Add button on the repository list opens the Add New Github Repository modal. Three fields must be completed before the record can be saved. All fields are required (marked with a red asterisk).

Add New Github Repository modal with GitHub Owner, GitHub Repo, and Type fields
Figure GR-2 — Add New Repository modal: three required fields and Cancel / Add actions

Modal Fields

ElementDescription
GitHub Owner *The GitHub username or organisation name that owns the repository. Must match exactly as it appears on GitHub (case-sensitive).
GitHub Repo *The repository name without the owner prefix. Must match the exact repository slug on GitHub.
Type *Canvas category for this repository. Select from the available options (e.g., UI Canvas, API Canvas) to determine which canvas integrations can use this repo.
CancelCloses the modal without saving. No changes are made to the repository list.
AddValidates all required fields and saves the new repository record. On success the modal closes and the new entry appears in the repository table.
× (close icon)Alternative way to dismiss the modal — equivalent to clicking Cancel.

Exact GitHub names required

Both GitHub Owner and GitHub Repo must match the exact strings used on GitHub. A typo will cause Code Builder and commit integrations to fail silently when they attempt to resolve the repository. Copy the values directly from your GitHub repository URL to avoid mistakes.

3. GitHub Collaborators

Clicking the Collaborators button on any repository row opens the GitHub Collaborators modal. It lists every GitHub user who has been granted access to that repository from within DPS, together with their assigned permission levels. Collaborators can be removed individually without affecting the repository record itself.

GitHub Collaborators modal showing two users with Admin, Push, and Pull permission badges
Figure GR-3 — GitHub Collaborators modal: user list with permission badges and Remove action per entry

Modal Elements

ElementDescription
Modal Title"GitHub Collaborators — [Owner]/[Repo]" — confirms which repository's collaborators are being viewed.
User (avatar + name + handle)Displays the collaborator's profile photo, display name, and GitHub username. Role label (e.g., User) shown beneath the handle.
PermissionsShows the permission badges granted to the collaborator on this repository.
Admin badgeGrants full administrative access — the collaborator can manage settings, add/remove other collaborators, and delete the repository.
Push badgeAllows the collaborator to push commits and create branches on the repository.
Pull badgeAllows the collaborator to clone and fetch the repository contents.
RemoveRevokes the collaborator's access to the repository. The action takes effect immediately and cannot be undone from this modal.
CloseDismisses the Collaborators modal and returns to the repository list without making any changes.

Permission levels are cumulative

A collaborator shown with Admin, Push, and Pull badges holds all three levels simultaneously. Admin implies Push and Pull, but DPS displays each badge explicitly so the full permission set is immediately visible without requiring any knowledge of GitHub's permission hierarchy.
UI Canvas Reports

1. Page Overview

UI Canvas Reports is the primary tabular reporting module within the Analytics section of DPS. Unlike UI Canvas Analytics (which uses time-series charts), this page presents a structured table where each row is one UI Canvas (screen) and each column is a key execution metric. A KPI summary row at the top aggregates totals across all visible canvases, giving an instant project-wide health check before drilling into individual screens.

UI Canvas Reports — full page showing KPI summary row, filter bar, sort controls, and canvas metrics table
Figure UCRA-1 — UI Canvas Reports: KPI row, filter/sort bar, and per-canvas metrics table with 8 canvases

Page Structure

ElementDescription
UI Canvas Reports (title)Module heading confirming you are in the canvas-level report view, not a chart-based analytics view.
KPI Summary RowFive metric cards at the top of the page aggregating totals across all currently visible (non-filtered-out) UI canvases.
Filter by UI canvas nameNarrows the table rows in real time as you type. Only canvases whose name matches the input remain visible, and the KPI row updates to reflect the filtered subset.
Sort & pagination controls"Ordered by UI canvas name" label with directional sort, plus a canvas count indicator (e.g., 8 of 8 UI canvases).
Canvas metrics tableOne row per UI Canvas with five metric columns. Rows are clickable — selecting a canvas navigates to its detail page.

2. KPI Summary Cards

The five KPI cards at the top of UI Canvas Reports provide a single-glance summary of the entire project's execution state. Each card sums the corresponding metric across every UI canvas that is currently visible in the table (i.e., matching the active canvas name filter). Filtering the table updates the cards instantly.

UI Canvas Reports — KPI summary row with five metric cards
Figure UCRA-2 — KPI Summary Cards: Estimated Hours 215, Spent Hours 0.25, Estimated Code Lines 7058, Developed Code Lines 4385, Alignment Rate 69%

KPI Card Definitions

ElementDescription
Estimated HoursSum of estimated development hours across all visible canvases. In the example: 215 hours total. Set manually per canvas by the product team.
Spent HoursSum of hours actually logged in the Backlog Canvas against issues linked to each visible canvas. In the example: 0.25 hours (15 minutes). Updates in real time as team members log time.
Estimated Code LinesSum of the estimated code line count across all visible canvases. In the example: 7,058 lines. Set during canvas planning as a delivery target.
Developed Code LinesSum of actual code lines committed to linked GitHub repositories across all visible canvases. In the example: 4,385 lines. Sourced from Code Builder commit aggregates.
Project Requirements Alignment RateAverage alignment score across all visible canvases. In the example: 69%. Reflects how closely delivered functionality matches the original canvas requirements.
Total across visible UI canvasesAppears beneath every KPI value — confirms the figure is a project-wide aggregate, not a single-canvas metric.

KPIs respond to the name filter

Type a canvas name in the filter field and the KPI cards recalculate for that subset. This lets you see the totals for a logical group of screens (e.g., all "User" screens) without leaving the Reports page.

3. Filter & Sort Controls

Between the KPI summary row and the metrics table sits a lightweight toolbar with a real-time text filter and a column sort control. Together they let you quickly navigate a project with many canvases without losing sight of the aggregate KPIs.

UI Canvas Reports — filter input and sort/count toolbar
Figure UCRA-3 — Filter & Sort toolbar: canvas name search (left), ordered-by label and canvas count (right)
ElementDescription
Filter by UI canvas nameLive search field. Filters table rows as you type — only canvases whose name contains the typed string remain visible. Clears with the × icon or by deleting the text.
Ordered by UI canvas nameIndicates the current sort column. The table defaults to alphabetical order by canvas name. Clicking the sort icon beside the UI Canvas column header toggles ascending / descending.
N of N UI canvasesShows how many canvases are currently visible versus the total (e.g., "8 of 8 UI canvases"). Updates when the name filter narrows the list.

Column-level sorting

You can also sort by any metric column (Estimated Hours, Spent Hours, etc.) by clicking the sort arrow next to the UI Canvas column header. This surfaces canvases with the highest or lowest values for a chosen metric, making it easy to identify over-estimated or under-developed screens.

4. Canvas Report Table

The metrics table is the core of UI Canvas Reports. Each row represents one UI Canvas and each column presents a distinct execution metric. Clicking a canvas name navigates to that canvas's detail page for deeper inspection. The table is sortable by any column and updates live when the name filter changes.

UI Canvas Reports — metrics table with canvas rows and five metric columns
Figure UCRA-4 — Canvas metrics table: five columns covering hours, code lines, and requirement alignment per canvas

Table Columns

ElementDescription
UI CanvasThe canvas (screen) name as defined in the project. Clickable — opens that canvas's detail view. A sort icon allows alphabetical ordering.
Estimated HoursThe planned development hours for this canvas, set during estimation. Displayed alongside a "Last estimated" timestamp showing when the estimate was last saved.
Spent HoursActual hours logged against backlog issues linked to this canvas. Labelled "Backlog aggregate" to clarify the data source.
Estimated Code LinesThe planned code line target for this canvas. Displayed with a "Last estimated" timestamp.
Developed Code LinesActual lines committed to the linked GitHub repository for this canvas. Labelled "Linked commit aggregate". Shows 0 or a dash (—) when no commits are linked.
Project Requirements Alignment RateA percentage score (0–100%) reflecting how well delivered functionality matches the original canvas requirements. Shown with a "Last checked" timestamp. Displays a dash when not yet evaluated.

5. Per-canvas Row Details

Each canvas row in the table contains more than just a single number — it pairs the primary metric value with contextual sub-labels that explain its source and freshness. Understanding these sub-labels prevents misreading raw numbers (e.g., confusing a backlog-aggregate hour count with a Git-commit-aggregate line count).

UI Canvas Reports — canvas rows showing primary values and sub-label metadata
Figure UCRA-5 — Per-canvas rows: each cell shows the primary value plus a source label and a last-updated timestamp

Cell Sub-labels

ElementDescription
Last estimated: [timestamp]Appears under Estimated Hours and Estimated Code Lines. Shows the exact date and time when the estimate was last saved or recalculated (e.g., 23/04/2026, 12:51:48).
Backlog aggregateAppears under Spent Hours. Confirms that the figure is the sum of time-log entries from Backlog Canvas issues linked to this canvas — not pulled from an external time-tracking tool.
Linked commit aggregateAppears under Developed Code Lines. Confirms that the figure is sourced from GitHub commits linked to this canvas via the Code Builder integration.
Last checked: [timestamp]Appears under Project Requirements Alignment Rate. Shows when the alignment score was last evaluated. A dash (—) means the score has never been checked for this canvas.
0 / Backlog aggregateA Spent Hours value of 0 with the "Backlog aggregate" sub-label means no time has been logged against issues for this canvas — not that the canvas has no issues.
— (dash)A dash in the Developed Code Lines or Alignment Rate column indicates the metric has not yet been populated — either no commits are linked or no alignment check has been run.

Reading a full canvas row

For Add / Create User Screen (example from the screenshot): estimated 24.5 h / 550 lines → actual 0.25 h logged / 4,026 lines committed / 78% alignment. This tells us: development is well ahead of the code-line estimate (4,026 vs 550) but very few hours have been formally logged, and requirements are 78% aligned — a canvas that is almost done but needs a final alignment review.
UI Canvas Analytics

1. Overview & Filter Panel

UI Canvas Analytics is the canvas-centric counterpart to Assignee Analytics. Instead of grouping metrics by team member, it groups them by UI Canvas — each individual screen in the project (e.g., Login, Menu Page, Settings Screen). The same four chart types are available: closed issues, closed bugs, spent hours, and code lines. All charts share one filter state and refresh together when the Filter button is applied.

UI Canvas Analytics — main page showing filter bar and two chart widgets
Figure UCA-1 — UI Canvas Analytics main view: filter bar + Closed Issues and Closed Bugs charts

Filter Controls

ElementDescription
UI Canvas ListChoose one or more canvases (screens) to include in the analysis. Shows canvas names such as Login, Menu Page, Add / Create User Screen, Settings Screen. Selecting multiple canvases overlays their bars side-by-side in every chart.
Date Range (From / To)Sets the start and end date of the analysis window. Works with Time Interval to determine bucket boundaries.
Time IntervalControls chart bucket granularity. Options: Daily, Weekly, Monthly, Yearly.
Diagram TypeCurrently supports Histogram — grouped vertical bars placing each canvas side-by-side within a single time bucket.
This Week / This Month / Last 30 Days / This YearOne-click date-range shortcuts that populate From and To automatically.
ResetClears all active filter selections and restores default values.
Filter (Apply)Executes the current filter state and refreshes all four charts simultaneously.

Canvas vs. Assignee dimension

Use UI Canvas Analytics to answer the question "Which screens are taking the most effort?" and Assignee Analytics to answer "Who is doing the most work?" Combining both views gives a complete picture of where time and code lines are going.

2. Number of Closed Issues

The Number of Closed Issues chart counts how many backlog issues were resolved within the selected date window, broken down by UI Canvas. Each bar represents one canvas and its height reflects the number of closed issues linked to that screen. Canvases with no resolved issues in the period simply have no bar, keeping the chart uncluttered.

UI Canvas Analytics — Number of Closed Issues grouped by canvas name
Figure UCA-2 — Closed Issues by UI Canvas: Add/Create User Screen, Login, and Menu Page each show 1 closed issue on 23 Apr

Chart Details

ElementDescription
Chart Title"Number of Closed Issues by UI Canvas and [Interval]" — the interval label updates with the selected Time Interval.
Y-axisCount of issues closed (integer). Scale auto-adjusts to the highest single-bucket value across all selected canvases.
X-axisTime bucket — a calendar date in Daily mode, a week label in Weekly, a month name in Monthly, a year in Yearly.
Grouped barsEach colour corresponds to one UI Canvas. Bars for the same time bucket are placed side-by-side for direct comparison.
LegendMaps canvas names to bar colours (e.g., Add/Create User Screen → teal, Login → purple, Menu Page → red, Settings Screen → orange).
Full SizeExpands the chart into a full-screen overlay for detailed inspection.

Interpreting equal bar heights

When multiple canvases show the same bar height (e.g., all at 1), it means the same number of issues were closed per screen in that bucket — not that they share issues. Each canvas tracks its own linked backlog items independently.

3. Number of Closed Bugs

The Number of Closed Bugs chart is structurally identical to Closed Issues but counts only backlog items tagged as Bug type, broken down by UI Canvas. When no bugs match the active filters the chart renders an empty-state illustration with guidance text rather than a blank panel.

UI Canvas Analytics — Number of Closed Bugs showing no-data empty state
Figure UCA-3 — Closed Bugs: empty state when no bug-type issues match the selected canvas and date filters

Chart Details

ElementDescription
Chart Title"Number of Closed Bugs by UI Canvas and [Interval]" — tracks only backlog items with type Bug linked to the selected canvases.
Grouped barsSame colour palette as Closed Issues — consistent canvas-to-colour mapping across all four charts.
No analytics dataDisplayed when the filter combination returns zero matching bug-type issues. Shows an inbox illustration with the message "No data found for number of closed bugs with the selected filters."
Empty-state guidance"Try another date range, interval, or selection." Prompts the user to broaden the filter rather than assume no bugs exist.
Full SizeAvailable even in the empty state — confirms there is genuinely no data rather than a rendering problem.

Bug tracking per screen

Filtering by a single canvas (e.g., Login) and switching to Monthly interval gives a month-by-month bug-resolution timeline for that specific screen — useful for assessing screen stability after releases or refactors.

4. Spent Hours

The Spent Hours chart aggregates the time logged against backlog tasks linked to each UI Canvas in the selected date window. It reveals which screens are consuming the most development effort — a canvas with a tall bar is either complex, blocked, or receiving heavy iterative work.

UI Canvas Analytics — Spent Hours bar chart grouped by UI Canvas
Figure UCA-4 — Spent Hours by UI Canvas: Add/Create User Screen logged ~0.4 hours on 23 Apr; other canvases show zero

Chart Details

ElementDescription
Chart Title"Spent Hours by UI Canvas and [Interval]" — aggregates all time-log entries on issues assigned to each canvas.
Y-axisHours in decimal format (e.g., 0.4 = 24 minutes). Scale adjusts automatically to the highest canvas value.
X-axisTime bucket matching the active interval.
Canvas barsCanvases with no logged time in the period have no visible bar — they remain in the legend but do not render a column.
Full SizeExpands to full-screen for reviewing effort distribution across a wide date range or many canvases.

Cross-referencing with Closed Issues

A canvas with high Spent Hours but low Closed Issuesmay indicate ongoing work on complex features, blocked tasks, or rework cycles. Investigate the Backlog Canvas for that screen to understand the root cause.

5. Code Lines

The Code Lines chart measures the volume of code contributed for each UI Canvas within the selected period. Data is sourced from linked GitHub repositories via the Code Builder integration and counts commit-level line additions, grouped by canvas and time bucket. It is the most direct indicator of raw development output per screen.

UI Canvas Analytics — Code Lines bar chart showing Add/Create User Screen at ~4,000 lines on 23 Apr
Figure UCA-5 — Code Lines by UI Canvas: Add/Create User Screen dominates at ~4,000 lines; Login and Menu Page show minor contributions

Chart Details

ElementDescription
Chart Title"Code Lines by UI Canvas and [Interval]" — sums GitHub commit additions attributed to each canvas in each time bucket.
Y-axisInteger line count. Auto-scales to the dominant canvas value (e.g., 0–4,500 when one canvas has ~4,000 lines).
X-axisTime bucket — daily date, week label, month name, or year depending on the selected interval.
Per-canvas barsEach canvas renders its own bar. Canvases with minor contributions (e.g., Login ~100 lines, Menu Page ~100 lines) appear as short bars beside the dominant canvas.
LegendSame colour-to-canvas mapping as all other charts in the module. Clicking a legend item hides or shows that canvas's bars.
Full SizeOpens a full-screen view — useful when many canvases are selected and bars become too narrow in the default widget size.

Large spikes on a single day

A very high Code Lines count on a single day (e.g., 4,000+ for Add/Create User Screen) typically reflects an initial scaffold, a large merge, or a major refactor rather than a proportional increase in delivered features. Cross-reference with Commit History in the Code Builder for full context.
Assignee Analytics

1. Overview & Filter Panel

The Assignee Analytics module provides a filter-driven reporting dashboard for tracking each team member's contribution across four dimensions: closed issues, closed bugs, spent hours, and code lines. All four charts share the same filter state, so adjusting one control instantly re-renders every widget on the page.

Assignee Analytics — main page with filter panel and chart grid
Figure AA-1 — Assignee Analytics main view: filter bar + four chart widgets

Filter Controls

ElementDescription
Assignee ListChoose one or more team members to include in the analysis. Defaults to all project assignees.
Date Range (From / To)Sets the start and end date of the analysis window. Works in conjunction with the Time Interval to determine bucket boundaries.
Time IntervalControls chart bucket granularity. Options: Daily (one bar per calendar day), Weekly, Monthly, Yearly.
Diagram TypeCurrently supports Histogram — grouped vertical bars that place each assignee side-by-side within a single time bucket.
This Week / This Month / Last 30 Days / This YearOne-click date-range shortcuts that set From and To automatically without opening the date pickers.
ResetClears all active filter selections and restores default values (all assignees, current month, Daily interval).
Filter (Apply)Executes the current filter selection and refreshes all four charts simultaneously.

Apply after every change

The charts do not auto-refresh when you change a filter value. Always click Filter after adjusting any control to push the new parameters to all four charts at once.

2. Number of Closed Issues

The Number of Closed Issues chart counts how many backlog issues each assignee resolved within the selected date window. Bars are grouped by time bucket and colour-coded per assignee, making relative output immediately visible without reading exact numbers.

Assignee Analytics — Number of Closed Issues grouped bar chart
Figure AA-2 — Closed Issues: grouped bars for Anar Rustamov (teal), John Muller (purple), Raine Smith (red)

Chart Elements

ElementDescription
Chart Title"Number of Closed Issues by Assignee and [Interval]" — the interval label updates with the selected Time Interval.
Y-axisCount of issues closed (integer). Scale adjusts automatically to the highest single-bucket value.
X-axisTime bucket label — a calendar date in Daily mode, a week label in Weekly mode, etc.
Grouped barsEach colour represents one assignee. Multiple assignee bars are placed side-by-side within the same time bucket.
LegendMaps assignee names to their bar colour. Clicking a legend item toggles that assignee's bars on or off.
Full SizeExpands the chart to a full-screen overlay for closer inspection of individual bars.

3. Number of Closed Bugs

The Number of Closed Bugs chart mirrors the Closed Issues layout but counts only backlog items tagged as Bug. When no bugs match the active filter combination the chart renders an empty-state illustration rather than a blank or broken chart, prompting the user to try a different date range or selection.

Assignee Analytics — Number of Closed Bugs chart showing no-data empty state
Figure AA-3 — Closed Bugs: empty-state view when no bug-type issues match the active filters

Chart Elements

ElementDescription
Chart Title"Number of Closed Bugs by Assignee and [Interval]" — tracks only issues with type Bug.
Grouped barsSame grouped-bar structure as Closed Issues. Colour palette is shared across all Assignee Analytics charts for consistency.
No analytics dataShown when the current filter combination returns zero matching bug-type issues. Includes the message: "No data found for number of closed bugs with the selected filters."
Empty-state guidance"Try another date range, interval, or selection." Directs the user to adjust filters rather than assuming a system error.
Full SizeAvailable even in the empty state — expanding confirms there is genuinely no data rather than a rendering issue.

Bug vs. Issue count

The Closed Bugs chart is a subset of the Closed Issueschart. A period with a high Closed Issues count but a zero Closed Bugs count indicates that all resolved work was feature or task type — no regressions were fixed in that window.

4. Spent Hours

The Spent Hours chart aggregates the time each assignee has logged against their backlog tasks within the selected date window. It surfaces workload distribution at a glance — a bar that consistently towers over others signals a potential over-allocation risk before it becomes a delivery problem.

Assignee Analytics — Spent Hours grouped bar chart
Figure AA-4 — Spent Hours: daily effort per assignee, Y-axis in hours (decimal)

Chart Elements

ElementDescription
Chart Title"Spent Hours by Assignee and [Interval]" — aggregates all time-log entries linked to issues assigned to each person.
Y-axisHours (decimal format). A value of 0.4 means 24 minutes logged in that bucket.
X-axisTime bucket matching the selected interval (date, week label, month name, or year).
Grouped barsSide-by-side bars per assignee within each bucket. Instantly reveals which team member logged the most time on any given day.
Full SizeOpens an enlarged view useful for reviewing fine-grained daily patterns across a wide date range.

Cross-referencing with Closed Issues

Pair Spent Hours with Closed Issues to estimate effort-per-issue for each assignee. A high hours count alongside a low closed-issues count may indicate blocked work or complex tasks — worth a conversation in the next stand-up.

5. Code Lines

The Code Lines chart measures the volume of code each assignee has contributed within the selected period. Data is sourced from the linked GitHub repositories via the Code Builder integration and counts line additions per commit, grouped by the active time interval.

Assignee Analytics — Code Lines grouped bar chart showing ~4,300 lines for Anar Rustamov on 23 Apr
Figure AA-5 — Code Lines: 4,300+ lines contributed by Anar Rustamov on 23 Apr (Daily interval)

Chart Elements

ElementDescription
Chart Title"Code Lines by Assignee and [Interval]" — sums GitHub commit additions for each assignee in each time bucket.
Y-axisInteger line count. Scale adjusts to the highest bucket value (e.g., 0 – 4,500 when one assignee committed 4,300+ lines in a single day).
X-axisTime bucket label. In Daily mode each group represents one calendar day of commits.
Grouped barsEach assignee's code contribution sits beside their teammates' bars for direct comparison.
Full SizeExpands to full-screen — especially useful for wide date ranges where daily bars become too narrow to read in the default widget.

Interpreting large single-day spikes

A very high Code Lines bar on a single day usually reflects a large refactor, an initial project scaffold, or a merge of a long-running feature branch — not necessarily a proportional increase in delivered features. Cross-reference with Closed Issues and Commit History in the Code Builder to understand the context before drawing conclusions.
User Management

1. Page Overview

User Management is the administration hub for every DPS project. It is accessible only to users with the Admin role and brings together four distinct capabilities on a single page: a live membership summary, a team member list, a project invitation tracker, and a role management panel. Changes made here take effect immediately across the entire project.

User Management — main page showing KPI summary, team member list, project invitations table, and roles section
Figure UM-1 — User Management main page: KPI row, Team Members, Project Invitations, and System / Custom Roles

Page Sections

ElementDescription
Total Members / Permission DistributionShows the total headcount and a horizontal bar chart breaking down how many users hold each role (e.g., Admin: 1, Product Engineer: 1).
Team MembersLists every user currently active in the project with their assigned role and inline edit / remove actions.
Invite Member / + Add MemberTwo distinct ways to bring users into the project — Invite Member sends an email link; Add Member adds an existing DPS user directly.
Project InvitationsTracks all invitations sent to external email addresses, including their acceptance status and timestamps.
System Role / Custom RolesDisplays the built-in Admin role and any project-specific custom roles with their module access counts and management actions.

Admin-only access

The User Management page is only visible to users assigned the Admin system role. Non-admin roles cannot access this page regardless of their custom module permissions. This restriction is enforced both in the sidebar navigation and at the API level.

2. Team Members

The Team Members section lists every user who is currently an active participant in the project. Each member row shows their avatar, display name, email address, assigned role, and two inline action icons. The current logged-in user is marked with a You tag so they can identify their own record at a glance.

User Management — Team Members section with two members and their roles
Figure UM-2 — Team Members: John Muller (Product Engineer) and Raine Smith (Admin / You)
ElementDescription
AvatarUser profile photo or generated initials avatar. Colour is consistent across all DPS pages for the same user.
Display nameFull name of the team member as registered in the DPS system.
EmailAccount email address shown beneath the display name.
Role badgeThe role currently assigned to this member (e.g., Product Engineer, Admin). A member can hold only one role at a time.
YouHighlighted tag on the logged-in user's own row. Prevents accidental self-removal.
Edit icon (pencil)Opens an inline edit control to change the member's assigned role without removing and re-adding them.
Remove icon (trash)Removes the member from the project immediately. A confirmation toast confirms the action (e.g., "User removed from project successfully").

Role change vs. remove

To change a member's role use the Edit (pencil) icon — this preserves their history and notifications. Only use Remove (trash)when the user should no longer have any access to the project.

3. Project Invitations

The Project Invitations table tracks every email-based invitation sent from this project. Each row records who was invited, which role they were offered, the current acceptance status, and the exact timestamps of creation and acceptance. Admins can resend or revoke invitations at any time using the inline action icons.

User Management — Project Invitations table with two accepted invitation rows
Figure UM-3 — Project Invitations: two accepted invitations with role, status, created/accepted timestamps, and action icons

Table Columns

ElementDescription
EmailThe email address to which the invitation was sent. This becomes the user's login email if they register via the invitation link.
RoleThe role that will be assigned to the invited user upon joining the project (e.g., Product Engineer, Product Manager).
StatusCurrent state of the invitation. "accepted" (green badge) means the user clicked the link and completed registration. Pending invitations show a different colour.
CreatedExact date and time the invitation was sent (e.g., 23/04/2026, 13:12:09).
AcceptedExact date and time the invitee clicked the link and joined the project. Empty if still pending.
Link iconCopies the invitation link to the clipboard so the admin can share it manually via a different channel.
Resend iconResends the invitation email to the same address — useful if the original email was missed or expired.
Delete icon (trash)Revokes and permanently removes the invitation. The link becomes invalid and the row is removed from the table.

4. System Role & Custom Roles

The bottom section of User Management is the role registry. It is split into two panels: the built-in System Role (Admin) which cannot be modified, and Custom Roles that project admins create and maintain. Custom roles define which DPS modules a member can access.

User Management — System Role (Admin) and Custom Roles (Product Engineer, Product Manager) with edit and delete actions
Figure UM-4 — Roles panel: Admin system role (left) and two custom roles with module counts and Edit / Delete actions (right)

System Role

ElementDescription
Admin (badge)The only built-in role in DPS. Displayed as a red badge. Cannot be edited or deleted.
Admin has full access to all modulesAdmins bypass all module-level permission checks — every DPS feature is accessible regardless of Custom Role settings.

Custom Roles

ElementDescription
Role nameThe label assigned when the role was created (e.g., Product Engineer, Product Manager).
N usersNumber of team members currently assigned this role. Helps admins understand the blast radius before editing or deleting a role.
N module access configuredCount of DPS modules enabled for this role (e.g., "12 module access configured"). Clicking Edit reveals exactly which modules are toggled on.
EditOpens the role editor — same form as Create New Role but pre-filled with existing settings. Changes apply immediately to all members holding this role.
DeletePermanently removes the custom role. Only available when the role has 0 assigned users — prevents accidental permission loss.
+ Create New RoleOpens the Create New Role modal to define a new custom role with a name and module permission set.

5. Create New Role

Clicking + Create New Role opens the Create New Role modal. It allows admins to define a project-specific role with a custom name and a precise set of module permissions. Existing role names are shown at the top as reference to avoid duplicates. User Management is always reserved for admins only and cannot be granted to custom roles.

Create New Role modal showing existing roles, Role Name input, and module permission checkboxes
Figure UM-5 — Create New Role: existing roles listed at top, Role Name field, and 13 module permission checkboxes

Modal Fields

ElementDescription
Existing RolesBadges showing already-defined roles (Admin, Product Engineer, Product Manager). Read-only — helps avoid creating duplicate role names.
Role Name *Required. The unique name for the new role (e.g., QA Manager). Used throughout the system wherever role assignment is needed.
Permissions (Modules) *Required. A two-column grid listing every DPS module. Check the modules this role should be able to access.
User Management is reserved for admins only.A blue info callout at the bottom of the permissions grid. User Management cannot be granted to any custom role — it is always Admin-only.
CancelCloses the modal without saving. No role is created.
Create RoleValidates the Role Name and at least one selected module, then saves the new role. It immediately appears in the Custom Roles panel.

Available Module Permissions

ElementDescription
DashboardAccess to the project-level execution dashboard with KPI widgets.
Data FlowAccess to the Data Flow visual graph for system architecture.
API CanvasAccess to API Canvas design and documentation.
Code BuilderAccess to the GitHub-integrated code browser and diff viewer.
GitHub RepositoriesAccess to the GitHub repository linking and collaborator management.
UI Canvas ReportsAccess to the tabular UI Canvas execution report.
UI Canvas AnalyticsAccess to the canvas-level grouped bar chart analytics.
UI EditorAccess to the drag-and-drop UI component editor.
UI CanvasAccess to UI Canvas management (screens, UAC, descriptions).
API TestingAccess to the API Testing environment and stress test runner.
Backlog CanvasAccess to the project backlog, issue creation, and kanban view.
AnalyticsAccess to the Analytics section (parent of Canvas and Assignee analytics).
Assignee AnalyticsAccess to the assignee-level grouped bar chart analytics.

6. Add Member to Project

The Add Member flow is used to add an existing DPS user directly to the project — without sending an invitation email. The user must already have a DPS account. Clicking + Add Member in the Team Members header opens the Add User to Project modal.

Add User to Project modal with Select User search and Role dropdown
Figure UM-6 — Add User to Project modal: user search (min. 2 characters) and role assignment
ElementDescription
Select User *Required. Type at least 2 characters to trigger a search of existing DPS users. Matching users appear in a dropdown list — select one to fill the field.
Role *Required. Choose the role to assign to the selected user from the list of available roles in this project (System + Custom roles).
CancelCloses the modal without making any changes.
Add UserValidates both fields and adds the selected user to the project with the chosen role. The user appears immediately in the Team Members list.

Add Member vs. Invite Member

Add Member requires the user to already exist in DPS — it grants access instantly with no email step. Invite Member is for users who do not yet have a DPS account — they receive an email with a registration link and are added to the project after they complete sign-up.

7. Invite Member by Email

The Invite Member flow sends an email invitation to a user who does not yet have a DPS account. Clicking Invite Member in the Team Members header opens the Invite User to Join Project modal. The invited user receives a secure link, registers a new account, and is automatically added to the project with the specified role upon completion.

Invite User to Join Project modal with Email field, Role dropdown, and invitation behaviour callout
Figure UM-7 — Invite Member modal: email address, role selection, and invitation behaviour explanation
ElementDescription
Email *Required. The email address to send the invitation to (placeholder: new-member@company.com). Must be a valid email format.
Role *Required. The role to assign to the invitee after they complete registration. All project roles (System + Custom) are available.
Invitation behavior (info box)"The invited user will register through a secure link and then be added to [Project Name]." Explains what will happen after the invitation is sent so the admin understands the two-step flow.
CancelCloses the modal without sending an invitation.
Create InvitationValidates both fields and sends the invitation email. The invitation appears in the Project Invitations table with status "pending" until the user accepts.

Invitation link behaviour

The invitation link is single-use and project-specific. If the invitee forwards the link to another person, that person will be registered and added to the project instead — admins should share invitation links only with the intended recipient. Use Delete in the Project Invitations table to revoke a link that was shared in error.
Notifications

1. Notification Panel

The Notification Panel is a slide-in flyout that appears on the right side of any DPS page when the bell icon in the top navigation bar is clicked. It delivers an at-a-glance summary of the most recent activity without navigating away from the current screen. A red badge on the bell icon shows the count of unread notifications.

DPS Notifications — bell panel flyout on the right alongside the All Notifications list on the left
Figure NT-1 — Notification Panel flyout (right) shown alongside the All Notifications page (left)

Panel Elements

ElementDescription
Notifications (panel title)Confirms the panel context. The header is fixed — notification entries scroll beneath it.
Mark all as readMarks every notification in the panel as read in one click, clearing the unread badge on the bell icon.
Today (group label)Groups notifications by date. The most recent group appears at the top; older groups (Yesterday, earlier dates) follow below.
Notification entryEach entry shows: the actor's avatar, a bold action title (e.g., "New issue #6 created"), a system badge (e.g., User Tracking System), the actor's full name + action description, and a relative timestamp (e.g., "about 7 hours ago").
Unread indicator (blue dot)A small blue dot on the right edge of an entry signals it has not yet been read.
Check DetailsNavigates directly to the entity that triggered the notification (e.g., the backlog issue, canvas, or user record).
View all notifications →Opens the full All Notifications page where filters, pagination, and bulk actions are available.

Panel vs. full page

The panel shows only the most recent notifications. Use View all notifications to access the full history with date-range filters, project filters, and per-page pagination controls.

2. All Notifications Page

The All Notifications page is the complete notification history for the logged-in user within the current DPS project. It lists every system event — issue creation, status changes, assignments, comments, and more — grouped by date and presented in a paginated table. The page header displays the total notification count and unread count at a glance.

All Notifications page showing filter bar, unread count, notification rows, and pagination
Figure NT-2 — All Notifications page: filter bar, Unread badge, notification rows with actions, and pagination

Page Header

ElementDescription
All NotificationsHeading of the notifications history page.
Total: NTotal number of notifications matching the current filter state (including both read and unread).
Unread: NCount of notifications that have not yet been marked as read. Updates immediately when entries are marked.
Show AllSwitches the list between showing only unread notifications and showing all notifications regardless of read status.
Mark all as readMarks every notification currently visible (based on active filters) as read in one operation.

Notification Row

ElementDescription
Actor avatarProfile picture or initials of the user who triggered the notification. Unknown system actions show a default avatar.
Action titleBold summary of the event (e.g., "New issue #6 created"). Clicking the title may navigate to the related entity.
System badgeIdentifies which DPS project or module generated the notification (e.g., "User Tracking System").
Action descriptionA plain-language sentence describing what happened (e.g., "Unknown User created a new issue").
TimestampRelative time since the event occurred (e.g., "about 7 hours ago"). Hover reveals the absolute date and time.
Email sent badgeIndicates that an email notification was also dispatched to the user for this event.

3. Filters & Unread Management

The filter bar beneath the page header lets you narrow the notification list by project, creator, and date range. Filters work cumulatively — applying more than one narrows the results further. The Clear Filters link resets all controls simultaneously without a page reload.

Notification filter bar showing Project, Created By, Date Picker From-To, and Clear Filters controls
Figure NT-3 — Filter bar: Project, Created By, Date Picker (From–To), and Clear Filters

Filter Controls

ElementDescription
ProjectFilters notifications by DPS project. Useful when a user is a member of multiple projects and wants to focus on one.
Created ByFilters by the user who triggered the event. Select a specific team member to see only the actions they performed.
Date Picker From–ToLimits results to notifications generated between the chosen start and end dates. Accepts calendar input or manual entry.
Clear FiltersResets all three filter fields to their default (empty) state, restoring the full notification history.

Filters + Show All

Combine Show All with date-range filters to audit all activity (read and unread) within a specific period. Use Show Unread with the Project filter to quickly clear notifications from a particular project.

4. Per-notification Actions

Each notification row exposes two inline actions that appear on hover (or are always visible on touch devices). These allow you to act on individual notifications without affecting the rest of the list, giving precise control over your read state and quick access to the related DPS entity.

Notification row showing Open Issue and Mark as read inline action buttons
Figure NT-4 — Per-notification actions: Open Issue (left) and Mark as read (right) on each row

Row-level Actions

ElementDescription
Open IssueNavigates directly to the Backlog Canvas issue (or other entity) that triggered the notification. Opens in the current tab so you can act on it immediately.
Mark as read →Marks this single notification as read, removing its unread indicator and decrementing the Unread counter in the page header. Does not affect other notifications.
Mark all as read (header)Available in both the panel and the full page — marks every notification matching the current filter as read in one operation.

Notification types and destinations

The Open Issue button label changes based on the notification type. For issue-related events it reads "Open Issue"; for canvas events it would read "Open Canvas"; for user events "View User", and so on. The destination always matches the entity that generated the notification.