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.
Figure DB-1 — Dashboard full view: KPI row + five metric widgets
Page Header
Element
Type
Description
Product Management and Execution Metrics
Page Title
The module heading. Confirms you are viewing the project-level execution dashboard, not a canvas-level view.
Subtitle
Label
"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.
Element
Type
Description
Total Number of UI Canvases
KPI Card
Count 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 Canvases
KPI Card
Count of all API endpoint canvases in the project (e.g., 1). Represents the number of distinct API design documents.
Total Number of Active Users
KPI Card
Number of team members currently active (logged in) on this project (e.g., 3). Used to gauge real-time collaboration activity.
Total Number of Contributors
KPI Card
Total 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
Element
Type
Description
Code Lines Completion
Widget
Donut chart showing percentage of estimated code lines that have been developed across all UI Canvases. See Section 2 for full detail.
Estimated Completion
Widget
Progress bar and hour breakdown showing how far the project has progressed in time. See Section 3.
Project Completion
Widget
Estimated finish date projection with remaining days and the last check timestamp. See Section 4.
Project Requirement Alignment
Widget
Project-wide BRA score indicating how well committed code matches canvas requirements. See Section 5.
Snap Shot
Widget
A three-line summary of the most critical real-time delivery signals: Spent Hours, Developed Code Lines, and Alignment %. See Section 6.
UI Canvas Progress Overview
Widget
Donut 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.
Figure DB-2 — Code Lines Completion widget: 62 % complete with ECL, DCL, and Remain breakdown
Element
Type
Description
Donut Chart
Chart
Visual 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)
KPI
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)
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 Lines
Metric
Sum 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 Lines
Metric
Sum 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 Lines
Metric
Estimated 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.
Figure DB-3 — Estimated Completion: timeline progress bar and hour breakdown
Element
Type
Description
Progress Bar
Chart
Horizontal 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)
Label
The current date — the left anchor of the progress bar timeline.
Completion Date (right label, e.g., 16/05/2026)
Label
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)
Label
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)
Label
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 card
KPI Card
Total project-wide estimated hours (sum of all canvas EH values). E.g., 215 h.
Spent Hours card
KPI Card
Total hours actually logged across all backlog tasks linked to canvases (sum of SH values). E.g., 0.25 h.
Remaining Hours card
KPI Card
Estimated 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.
Figure DB-4 — Project Completion widget showing projected finish date and last check audit
Element
Type
Description
Estimated Finish Date
Metric
AI-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 Days
Metric
Number 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 Date
Metric
The timestamp of the most recent estimation run (e.g., 23 Apr 2026, 13:22). Lets reviewers know how fresh the projection is.
Last Checked By
Metric
Name and email of the user who triggered the last estimation check. Provides an audit trail for the projection.
ⓘ (Info icon)
Tooltip
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 feedback
Section
Expandable 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?
Figure DB-5 — Project Requirement Alignment at 69 % with coverage breakdown
Element
Type
Description
"Moderate Alignment" badge
Status Badge
Qualitative label derived from the alignment percentage. Thresholds: Strong Alignment (≥ 85 %), Moderate Alignment (60–84 %), Needs Review (< 60 %). Shown in orange for Moderate.
Alignment Pulse bar
Progress Bar
Horizontal 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 text
Label
AI-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 % Aligned
Chart
Visual 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 Score
Metric
The project-wide BRA average (e.g., 69 %). Calculated as the mean of all individual canvas BRA scores.
Coverage Basis
Metric
Total number of UI Canvases included in the alignment calculation (e.g., 8). Only canvases with at least one linked GitHub commit are measured.
Aligned Canvases
Metric
Number 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 Review
Metric
Number 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 snapshot
Label
Shows 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.
Figure DB-6 — Snap Shot widget: real-time delivery signals for Hours, Lines, and Alignment
Element
Type
Description
Snap Shot (title)
Widget Header
"Current total status of execution and delivery." — the subtitle confirms this is a live, aggregated read of the project's most critical metrics.
Spent Hours
Signal Row
Total 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 Lines
Signal Row
Total lines of code committed to GitHub across all linked canvases (e.g., 4,384). The purple "Lines" badge identifies the metric category.
Project Requirements Alignment
Signal Row
Project-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)
Badges
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?
Figure DB-7 — UI Canvas Progress Overview: 25 % complete with status breakdown
Element
Type
Description
Donut Chart
Chart
Three-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)
Legend
Colour key below the chart. Grey = Not Started, Blue = In Progress, Green = Closed. Helps quickly map segment colours to states.
Canvased — Total badge
KPI Card
Total 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 badge
KPI Card
Number 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 badge
KPI Card
Number 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.
Figure UE-1 — UI Editor full view: component toolbar · canvas area · CSS panel
Top Application Bar
Element
Type
Description
DPS Logo
Brand
Returns to the DPS System home / project list when clicked.
Project Name
Label
Displays the active project (e.g., "User Tracking System") with a dropdown for switching projects.
User Avatar & Name
Profile
Shows the logged-in user (e.g., "Raine Smith"). Click to open profile or sign-out options.
Notification Bell
Icon Button
Badge indicates unread system or collaboration notifications.
Live Preview
Button (Primary)
Opens 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.
Current module — visual drag-and-drop screen builder.
Data Flow
Nav Link
Directed graph showing navigation paths between screens.
UI Canvas
Nav Link
Text-driven canvas with descriptions, UAC, AI analysis, and file links.
API Canvas
Nav Link
API endpoint design and documentation canvas.
API Testing
Nav Link
Test runner for API endpoints defined in API Canvases.
Backlog Canvas
Nav Link
Task and issue tracking linked directly to canvases.
Code Builder
Nav Link
Generates boilerplate code from canvas specifications.
GitHub Repositories
Nav Link
Links the project to GitHub repositories for file browsing and commit context.
Analytics
Nav Link
Usage and contribution analytics with expand toggle.
User Management
Nav Link
Manages 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.
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).
Element
Type
Description
Edit Line
Component
Single-line text input field. The most common component for collecting user text data.
Select Box
Component
Dropdown selection component populated from a data source or static list.
Button
Component
Clickable action trigger. Label is set via the Content field in Component Information.
Textarea
Component
Multi-line text input for longer content such as descriptions or notes.
Radio
Component
Single-select radio button group. Mutually exclusive options.
Check Box
Component
Boolean toggle. Used for agreement prompts, multi-select options, or feature flags.
Inner Check
Component
Nested checkbox inside a table or group component row.
Date
Component
Date picker with configurable format (see Template Description → Date format).
Time
Component
Time picker with configurable format (see Template Description → Time format).
Label
Component
Static read-only text element. Used for headings, instructions, or display values.
File
Component
File upload picker. Supports single and multiple file selection.
Link
Component
Navigational anchor. Can point to an internal canvas or external URL.
Image
Component
Renders a static image from a URL or uploaded asset.
Table
Component
Data table connected to an API endpoint. Columns are defined in the Input & Description list.
Group
Component
Container that wraps multiple components, acting as a logical section or card.
YouTube
Component
Embeds 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.
Figure UE-3 — Canvas area with a user-registration form prototype
Canvas Interactions
Element
Type
Description
Component Click
Interaction
Selects the component and loads its style targets into the CSS Panel on the right.
Component Drag
Interaction
Reorders components within the grid. Release to snap to the nearest column boundary.
Canvas Background Click
Interaction
Deselects any active component. CSS Panel shows "No component selected".
Canvas Bottom Bar
Element
Type
Description
Zoom Out (−)
Button
Decreases canvas zoom level for a wider view of large screens.
Zoom Percentage
Label
Displays current zoom level (e.g., 90%). Indicates the canvas is slightly scaled down.
Zoom In (+)
Button
Increases canvas zoom for precise component placement.
Default Cell No
Label
Shows the default column-span assigned to newly dropped components (e.g., 6 = half width).
+ CSS Panel
Button
Toggles 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.
Figure UE-4 — CSS Panel with TARGET, CONTEXT, RAW CSS, SELECTION, and COLORS sections
TARGET — CSS Scope Selector
Element
Type
Description
CSS Target
Tab (Active)
Applies styles to the selected component's root DOM element.
Container
Tab
Applies styles to the layout container wrapping the component (e.g., the grid cell).
Component
Tab
Applies styles to the inner interactive element (e.g., the <input> inside an Edit Line).
Canvas
Tab
Applies styles globally to the entire canvas background and layout wrapper.
CONTEXT — Dimensions
Element
Type
Description
Context Dropdown
Dropdown
Selects which scope context is active: Canvas, Container, or Component. Mirrors the TARGET tabs.
Width (px)
Input
Sets an explicit pixel width on the selected target. Overrides the default grid-column width.
Height (px)
Input
Sets an explicit pixel height. Leave blank to use auto height determined by content.
RAW CSS
Element
Type
Description
CSS Style textarea
Textarea
Free-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
Element
Type
Description
Attribute input
Input
Binds 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 ID
Input
Auto-generated unique identifier for the component. Used to reference the element in Raw CSS selectors or in Code Builder output.
COLORS
Element
Type
Description
Background
Color Picker
Sets the background color of the selected target scope. Opens a color picker on click.
Font Color
Color Picker
Sets the text/foreground color of the selected target scope.
+ (Add Color)
Button (Blue)
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.
Figure UE-5 — Live Preview: user-registration form rendered as a standalone page
Element
Type
Description
Browser URL bar
Reference
Shows the shareable preview URL (https://…/ui-canvas/preview/{id}). Copy and share directly — no login required to view.
Rendered Form
Display
All 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 / Email
Edit Line
Rendered as <input type="text"> elements. Placeholder and label text come from the Input & Description definitions.
Role
Select Box
Rendered as a <select> dropdown. Options are populated from the linked API Canvas or static values.
I agree to the terms and conditions
Check Box
Rendered as <input type="checkbox">. Pre-checked state matches the default value set in Component Information.
Submit
Button
Triggers 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.
Figure DF-1 — Data Flow module: directed graph of all canvas navigation paths
Element
Type
Description
Page Header — Canvas Name
Label
Displays the name of the currently selected canvas node (e.g., "Menu Page"). Updates when a different node is clicked.
Info Button (blue circle)
Icon Button
Opens the detail panel for the selected canvas node, showing its metadata and links to its UI Canvas page.
Diagram Area
Canvas
The interactive graph. Nodes can be dragged to rearrange layout without affecting the underlying navigation structure.
Zoom Controls (bottom)
Controls
Fit-to-view icon, zoom percentage (e.g., 70%), and zoom-in button. See Section 5 for full toolbar reference.
+ Button (blue, bottom right)
Button
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.
The screen name as defined in the UI Canvas (e.g., "Menu Page", "Login", "Edit User Screen"). Click the node to select it.
Color ID Badge
Badge
A 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" badge
Badge (green)
The 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" badge
Badge (teal)
The count of outgoing popup connections. Popup connections open the target canvas as a modal overlay rather than replacing the current screen.
"in N" badge
Badge (grey)
The 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 border
State
Applied to the currently selected node. The selected canvas name is also shown in the page header above the toolbar.
Red/pink fill
State
Loop-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.
Solid 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 arrow
Connection
Arrow 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 direction
Visual
Arrowhead 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.
Figure DF-4 — Loop detection highlight: 'Loop to Menu Page' shown in red after Login redirects back
Element
Type
Description
"Loop to [Canvas Name]" node
Warning State
A 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 node
Reference
The 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 node
Badges
Retain 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.
Figure DF-5 — Toolbar above the diagram and zoom controls at the bottom
Top Toolbar
Element
Type
Description
Fit
Button
Scales and re-centres the diagram so all nodes fit inside the visible viewport. Useful after dragging nodes or when the graph grows large.
Fullscreen
Button
Expands the diagram canvas to fill the entire browser window, hiding the application navigation. Press Escape or click again to exit.
Download PNG
Button
Exports 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
Element
Type
Description
Fit-to-View Icon (⊞)
Button
Same as the top Fit button — re-centres and rescales to show all nodes.
Zoom Percentage
Label
Displays 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 (+)
Button
Increases zoom level incrementally. Also supports mouse scroll-wheel zoom over the canvas area.
+ Button (blue)
FAB
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.
Figure 1 — UI Canvas main view with all collapsible sections
Top Bar Controls
Element
Type
Description
Add / Create User Screen
Dropdown + Button
Searchable 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 Assistant
Button
Opens 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 Analyzer
Button
Opens 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.
Action
Dropdown
A 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
Element
Type
Description
GitHub Files
Section
Lists 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.
Summary
Section
Shows 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.
Description
Section
A free-text area for the functional purpose of this screen. Used as context by the AI Assistant and AI Analyzer.
User Acceptance Criteria – UAC
Section
Lists testable criteria that must pass before the screen is accepted. Shows completion status, linked backlog issues, and estimated/actual hours.
UI View
Section
Embeds 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 & Description
Section
A 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
Element
Type
Description
Left Sidebar
Navigation
Persistent 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)
Dropdown
Displays the currently active project (e.g., "User Tracking System"). Click to switch between projects without losing your place.
User Avatar / Name
Profile
Shows the logged-in user's name and email in the top-right corner. Click the avatar to access profile settings.
Bell Icon
Notification
Real-time notification center. The red badge shows the number of unread alerts (task assignments, system events, UAC updates).
Floating "+" Button
Button
Fixed 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.
Figure 2 — Summary panel with Estimated Hours, Spent Hours, Code Lines, and Alignment Rate
Element
Type
Description
EH — Estimated Hours
Metric
The 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 Hours
Metric
Hours 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 Lines
Metric
Predicted 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 Lines
Metric
Actual 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 Alignment
Metric
A 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 Scope
Info Label
Blue info bar beneath the BRA score explaining the basis of the alignment calculation (canvas JSON + GitHub commits linked to this screen).
Alignment Note
Text Area
A free-text AI-generated explanation of the current alignment score — describing strengths, gaps, and what remains unimplemented. Editable for manual notes.
Estimate It
Button
Triggers an AI re-estimation for EH or ECL. Available next to Estimated Hours and Estimated Code Lines fields.
Check It
Button
Triggers 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.
Figure 3 — GitHub Files section with one linked file (CreateUser.jsx)
Element
Type
Description
GitHub Files (n)
Section Header
Collapsible row showing the total number of linked files in parentheses. Click the chevron (▶) to expand or collapse the list.
+ Add GitHub Files
Button
Opens 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 Badge
Label
Displays 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.
Path
Label
Shows the full file path within the repository (e.g., src/pages/CreateUser.jsx), making it easy to locate the file in your IDE.
Repo
Label
Displays the repository name the file belongs to.
View Icon (Eye)
Button
Opens the file directly in GitHub in a new tab for quick reference without leaving the DPS System.
Delete Icon (Trash)
Button
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.
Figure 4 — Actions dropdown showing all canvas-level operations
Element
Type
Description
Duplicate
Action
Creates 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 Assistant
Action
Shortcut that opens the AI Assistant panel (same as the top-bar button).
AI Analyzer
Action
Shortcut that opens the AI Analyzer panel (same as the top-bar button).
Share Canvas
Action
Generates a shareable read-only link to the current canvas that can be sent to stakeholders or reviewers outside the development team.
Import JSON
Action
Imports a previously exported canvas JSON file, overwriting the current canvas data. Useful for migrating canvases between projects or restoring a backup.
Export JSON
Action
Exports 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 Template
Action
Downloads an empty canvas JSON template with the correct schema. Use this as a starting point for bulk-creating canvases programmatically or via Import JSON.
History
Action
Opens 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.
Figure 5 — AI Assistant panel with generated preview content across all four sections
Element
Type
Description
Prompt Text Area
Input
Enter a natural-language description of the screen you are building. The more detail you provide, the more accurate the draft.
Generate Draft
Button (Primary)
Sends the prompt to the AI and populates the four Preview sections: Description, User Acceptance Criteria, Input and Description, and UI Prototype.
Clear Preview
Button
Clears all generated draft content from the Preview sections. The prompt text is preserved.
Local Prompt History
Accordion
Collapsible list of previously used prompts for this canvas. Click any past prompt to reload it.
Preview — 4/4 filled
Status Badge
Shows how many of the four sections have been generated.
1. Description → Apply to Description
Section + Button
Preview of the AI-generated description. Click "Apply to Description" to save it into the canvas Description field.
2. User Acceptance Criteria → Apply to UAC
Section + Button
Preview table of generated UAC criteria. Click "Apply to UAC" to create these criteria in the UAC section.
3. Input and Description → Apply to Input List
Section + Button
Preview of the input fields and their types. Click "Apply to Input List" to populate the Input & Description section.
4. UI Prototype → Apply to UI Prototype
Section + Button
A 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.
Figure 6 — AI Analyzer with risk report and accuracy level
Figure 7 — AI Analyzer result with per-field accuracy and suggestions
Element
Type
Description
Open Analysis / Analysis Date
Header
Shows the timestamp and user who last ran the analysis. "Delete" removes the current result.
Analysis History
Accordion
Collapsible list of past analysis runs with dates.
Analysis Prompt
Text Area
A 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 Accordions
Accordion
Each canvas section is analyzed separately. Expand a section to see its specific report.
Analysis Report — Current Status
Report Block
A brief neutral summary of what the section currently contains.
Analysis Report — Risks / Threats
Report Block
Highlights weaknesses and gaps. Includes an "Accuracy Level" percentage badge reflecting quality confidence.
Applies 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?
Figure 8 — Description section with free-text area
Element
Type
Description
Description (row header)
Collapsible Row
Click the chevron (▶/▼) to expand or collapse. When collapsed the row is compact.
Edit Icon
Button
Located at the top-right of the row. Click to enter edit mode.
Description Text Area
Input
Multi-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.
Figure 9 — UAC section with criteria and status badges
Header Summary Badges
Element
Type
Description
n/n completed
Badge
Fraction of criteria marked Closed vs. total.
Total-n
Badge
Total number of UAC criteria rows.
closed-n
Badge
Number of criteria with status "Closed".
New Request-n
Badge (Blue)
Criteria created via AI Assistant or manually added and not yet reviewed.
ES-n
Badge (Green)
Estimated Spent hours for UAC testing tasks.
EH-n
Badge (Red)
Extra Hours beyond the original UAC estimate.
+ (Add)
Button
Adds a new UAC criterion row manually.
Criteria Table Columns
Element
Type
Description
Criteria
Column
The acceptance criterion text. Click to expand details or edit.
Related Issue(s)
Column
Backlog tasks linked to this criterion. "No linked task" if none.
Status
Column
Pending or Closed. Click to toggle.
Manage Related Issues Dialog
Figure 9.1 — 'Manage Related Issue(s)' modal
Element
Type
Description
Select existing backlog tasks
Dropdown
Select one or more backlog tasks to link to this criterion.
Create New Issue
Option
Creates a new backlog task and links it immediately.
Save
Button
Confirms links and closes the dialog.
Cancel
Button
Closes 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.).
Figure 10 — UI View with UI Prototype rendered inline
Element
Type
Description
Date Picker
Dropdown
Selects the version date to display. Older versions are preserved.
View Type Selector
Dropdown
Switches between "UI Prototype" (built-in) and external views.
Live Preview
Button
Opens full-screen preview simulating the final application.
CSS Panel
Button
Opens the CSS Panel overlay for custom styling.
Add External View
Button (Primary)
Opens the External View Link panel. See Section 10.
··· (More Options)
Button
Additional options: remove view, set default version.
Prototype Canvas
Display Area
Rendered form/prototype built from the Input & Description list.
CSS Panel
Figure 11 — CSS Panel overlay for custom styles
Element
Type
Description
CSS Target Tabs
Tab Group
CSS Target, Container, Component, Canvas — selects the style scope.
No component selected
Status
Shown in red when no prototype element is selected.
Context
Dropdown
Filters the CSS scope (Canvas, Container, Component).
Width (px) / Height (px)
Input
Explicit pixel dimensions for the selected target.
Raw CSS
Text Area
Free-form CSS applied directly to the selected target.
✕ Close
Button
Closes 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.
Figure 12 — External View Link panel with upload options
Element
Type
Description
Add Image URL
Button
Adds an external image by URL.
Add Embed Code
Button
Pastes an iframe embed code (e.g., Figma).
Upload Image
Button
File picker for local images (PNG, JPG, etc.).
Upload from Clipboard
Button
Pastes an image directly from the system clipboard.
Table columns
Table
#, Title, File Name, URL Content preview, Type badge, Last Update timestamp.
Default View
Column
Marks which entry is shown by default in the UI View section.
Full iframe embed HTML (e.g., from Figma Share → Embed).
Create
Button
Saves the embed and adds it to the table.
Cancel
Button
Closes 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.
Figure 14 — Input & Description table with Actions sidebar
Table Columns
Element
Type
Description
#
Column
Auto-incremented row number reflecting visual order on the screen.
Input
Column
The element name as it appears on the screen. Click to expand for editing.
Description
Column
Component type badge (yellow) + business description with validation rules.
Row Actions Sidebar
Element
Type
Description
Component Information
Action
Edits the element's type, width, and content. See Section 12.
Manual Description
Action
Free-text editor for the description without a template.
Template Description
Action
Structured rules/values form. See Section 13.
API Relation
Action
Links an API endpoint to this element's action. See Section 14.
Form Action
Action
Defines post-submission navigation. See Section 15.
Rename
Action
Renames the input element inline.
Delete
Action
Removes 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.
Figure 15 — Component Information panel with type grid and width selector
Element
Type
Description
Input Name
Input
Label/name of the element as shown in the table and prototype.
12-column grid width. 12 = full width, 6 = half, 4 = one-third. Selected value highlighted in blue.
Content
Textarea
Static content: label text, button label, or image URL. Leave blank for interactive inputs.
Update
Button
Saves and closes. Table updates the component type badge immediately.
Cancel
Button
Discards 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.
Figure 16 — Template Description with Rules and Values
Rules (Checkboxes)
Element
Type
Description
Is Mandatory
Rule
Field must be filled before form submission. Renders a required-field indicator (*).
Is Unique
Rule
Value must be unique across the dataset.
Is Editable
Rule
User can edit the field value after initial entry.
Is Not Editable
Rule
Field is locked after creation (read-only in edit mode).
Is Integer
Rule
Accepts only whole numbers.
Is Float
Rule
Accepts decimal/floating-point numbers.
Is String
Rule
Accepts any text string.
Is Dropdown
Rule
Renders as a dropdown populated from a data source.
Is Readonly
Rule
Always read-only — value displayed but not changeable.
Is Current User
Rule
Auto-populates with the logged-in user's identifier.
Is Current Date
Rule
Auto-populates with today's date.
Is Current Time
Rule
Auto-populates with the current time.
Is Minimum Value
Rule
Enforces a minimum numeric value.
Is Maximum Value
Rule
Enforces a maximum numeric value.
Is Row Count
Rule
Displays the count of rows in a related dataset.
Is Average Value
Rule
Displays the calculated average of a related numeric dataset.
Is Summary
Rule
Displays an aggregated sum from a related dataset.
Close After Click
Rule
Closes the current panel or modal after this element is clicked.
Disappear After Click
Rule
Hides the element after it is clicked once.
Values (Input Fields)
Element
Type
Description
Maximum length is
Value
Maximum characters allowed.
Minimum length is
Value
Minimum characters required.
After redirect to
Value
URL or canvas name to navigate to after a successful action.
Generates and saves the description from selected rules and values.
Cancel
Button
Closes without saving.
Clear
Button
Resets 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.
Figure 17 — Event API Call linking the Submit button to the insert/user endpoint
Element
Type
Description
Action
Label
Trigger event (e.g., "onclick"). Determined by the component type.
API (path input)
Input
API endpoint path (e.g., insert/user). References an API Canvas endpoint.
Description
Textarea
Brief explanation of what this API call does in context.
Add Issue
Link Button
Creates a backlog task tracking the API integration implementation.
Add UI Canvas
Link Button
Links to another UI Canvas for cross-screen dependencies.
Add API Canvas
Link Button
Links to a specific API Canvas endpoint for traceability.
Create
Button
Saves the API relation to the input row.
Cancel
Button
Closes without saving.
15. Form Action
The Form Action panel defines what happens after the form completes — typically a navigation redirect to another screen.
Figure 18 — Form Action configuring a redirect to 'Menu Page'
Element
Type
Description
Action Type
Dropdown
"Redirect" — navigates the user to another canvas screen after the action completes.
Related UI Canvas
Dropdown
Target canvas for the redirect (e.g., "Menu Page"). Creates a navigational link visible in the Data Flow module.
Condition (optional)
Input
Optional conditional expression (e.g., "if role === admin"). Leave blank for unconditional execution.
Create
Button
Saves the form action. The redirect appears as an arrow in the Data Flow diagram.
Cancel
Button
Closes 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.
Figure AC-1 — API Canvas overview: endpoint toolbar and six collapsible sections
Endpoint Toolbar
Element
Type
Description
Endpoint Path Input
Text Input
Editable 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" Badge
Status Badge
Indicates the current sharing state of this canvas. Click the dropdown arrow (▾) next to it to open the Share dialog.
+ Button (blue)
Button
Creates a new API Canvas (new endpoint) within the current project.
Test
Button
Opens the API Testing module pre-loaded with this endpoint's path, request body, and headers for live execution.
AI Assistant
Button
Opens the AI Assistant panel to generate or improve the Description and Operation Description sections using AI.
AI Analyzer
Button
Runs an AI-driven analysis of the canvas content, checking for completeness, consistency, and missing fields.
Action ▾
Dropdown
Contains advanced operations: Live Preview, Share/Unshare, Change History, Import, Export, and Duplicate.
Shared API Canvases
Element
Type
Description
Shared API Canvases (N)
Link
Shows the count of API canvases currently shared via public links. Click to view all shared canvases in the project.
GitHub Files (N)
Collapsible
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.
Element
Type
Description
Description
Section
Free-text description of what the endpoint does. See Section 2.
Input Fields
Section
Table of request headers and query parameters. See Section 3.
Request Body
Section
JSON code editor for the request payload. See Section 4.
Operation Description
Section
Numbered list of backend processing steps. See Section 5.
Output Fields
Section
Table of expected response fields and their descriptions. See Section 6.
Response Body
Section
JSON 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.
Multi-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 (💾)
Icon Button
Saves the description content. Appears in the top-right of the section header. Also auto-saved on blur.
▶ / ▼ Toggle
Button
Expands 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.
Figure AC-3 — Input Fields table: request headers with name and description
Table Columns
Element
Type
Description
#
Column
Auto-incremented row number.
Name
Column
Header or parameter name exactly as sent in the HTTP request (e.g., Content-Type, Authorization).
Description
Column
Plain-text explanation of the field's purpose, accepted values, and whether it is required or optional.
✏ Edit Icon
Action
Opens an inline editor for the row. Allows updating name and description without leaving the section.
Common Input Fields
Element
Type
Description
Content-Type
Header
Specifies the media type of the request body. For JSON APIs this must be "application/json".
Authorization
Header
Bearer token for authenticating the request. Required when the endpoint is restricted to authenticated administrators or privileged users.
Element
Type
Description
+ Button
Button
Adds 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.
Figure AC-4 — Request Body editor: JSON payload example for "insert/user"
Element
Type
Description
Code Editor
Editor
Inline syntax-highlighted JSON editor. Write or paste the full request payload. Keys are shown in blue, string values in red.
Line Numbers
Gutter
Line numbers on the left for reference when reviewing multi-field payloads.
Beautify
Button
Auto-formats the JSON content with proper indentation and line breaks. Use after pasting minified JSON.
Save Icon (💾)
Icon Button
Saves the request body content. The saved value becomes the default payload in API Testing.
− Collapse
Button
Collapses 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.
Figure AC-5 — Operation Description: numbered backend steps with operation type badges
Element
Type
Description
Step Number
Label
Auto-incremented index (1, 2, 3 …). Steps are executed in order at runtime.
Step Text
Text
Detailed description of the backend action for this step. Written in plain language for developers and AI tools to interpret.
Operation Type Badge
Badge
Coloured 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 Icon
Action
Opens inline editing for the step text and badge type.
Delete Icon
Action
Removes the step permanently. Remaining steps are re-numbered.
+ Button
Button
Adds 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.
Figure AC-6 — Output Fields: response schema with nested field paths
Table Columns
Element
Type
Description
#
Column
Auto-incremented row index.
Name
Column
Dot-notation field path as it appears in the JSON response (e.g., "data.userId"). Supports nested objects.
Description
Column
Human-readable explanation of the field's type, content, and significance.
Example — insert/user Response Fields
Element
Type
Description
success
Boolean
Top-level flag indicating whether the operation completed successfully.
message
String
Human-readable outcome message confirming successful user creation.
data.userId
String (UUID)
Unique identifier (UUID v4) assigned to the newly created user.
data.username
String
The username of the newly created user.
data.email
String
The email address of the newly created user.
Element
Type
Description
+ Button
Button
Adds 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.
Figure AC-7 — Response Body: full JSON success response for insert/user
Element
Type
Description
Code Editor
Editor
Inline syntax-highlighted JSON editor. Paste or type the expected successful response. The editor renders keys in blue and string values in red.
Line Numbers
Gutter
Line numbers for reference. Useful for large nested responses.
Beautify
Button
Formats and indents the JSON for readability.
Save Icon (💾)
Icon Button
Persists the response body. Saved value is loaded in Live Preview and API Testing.
− Collapse
Button
Hides 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.
Figure AC-8 — Live Preview modal: compiled read-only view of the API Canvas
Element
Type
Description
Name
Field
The endpoint path (e.g., "insert/user").
Method
Badge
HTTP method badge (e.g., POST shown in blue). Set when configuring the endpoint.
Local URL
Field
The local development URL path with a copy-to-clipboard icon.
File Path
Field
The source code file path for the endpoint with a copy icon. Populated when GitHub Files are linked.
Description
Section
Full description text rendered as readable paragraphs.
Input Fields
Section
Numbered list of headers/params with descriptions.
Request Body
Section
JSON payload example rendered in a code block.
✕ Close
Button
Closes 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.
Figure AC-9 — Share dialog: enable public link and manage sharing settings
Element
Type
Description
Enable Public Sharing (toggle)
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 Link
Input
The full read-only URL (e.g., https://…/api-canvas/share/{id}). Click the copy icon to copy to clipboard.
"Anyone with this link…"
Info
Confirms that the shared URL grants read-only access with no login required.
"No authentication required"
Info
Viewers do not need a DPS account to access the shared canvas.
"Changes you make will be visible…"
Warning
Any edits saved to this canvas are immediately reflected in the shared link — there is no separate snapshot or version lock.
Generate New ID
Button
Invalidates the existing public URL and creates a new share ID. Use this to revoke access for previous link holders.
Close
Button
Closes 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.
Figure AC-10 — Shared Canvas View: public read-only page accessible via share URL
Element
Type
Description
"Read-only Mode" banner
Banner
Blue 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 section
Section
Shows Name, Description, URL, Method badge, and Local URL in a structured card.
Input Parameters (N)
Section
Collapsible list of all input fields with their descriptions. Count shown in the header.
Output Fields (N)
Section
Collapsible list of all output fields. Count shown in the header.
Operations (N)
Section
Collapsible numbered list of operation steps. Count shown in the header.
Request Body
Section
JSON payload example shown in a code block. Collapsible.
Response Body
Section
JSON response example shown in a code block. Collapsible.
Browser URL
Reference
The 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" with the endpoint name (e.g., "insert/user") shown as subtitle.
✕ Close
Button
Dismisses the panel and returns focus to the main canvas editor.
Event Type Badge
Badge (green)
"API Canvas Updated" — the type of change recorded. Future entry types may include "Created" or "Deleted".
Timestamp
Label
Date and time of the change in DD/MM/YYYY, HH:MM:SS format (e.g., 25/04/2026, 12:31:11).
Author
Label
Email address of the user who made the change.
Field Badge
Badge (blue)
The canvas field that was modified (e.g., "endpoint"). Corresponds to one of the six canvas sections or the endpoint path.
Old Value
Code Block
The previous value before the change, shown as a formatted JSON snippet. Truncated for long values — click to expand.
New Value
Code Block
The 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
Figure AC-12a — Import dialog: select sections and paste or upload JSON
Element
Type
Description
Import target
Label
Shows the destination canvas (e.g., "insert/user"). The import will write into this canvas.
Browse
Button
Opens a file picker to load a .json export file from disk instead of pasting.
Toggles that control whether each section is cleared before writing the imported data.
Section Toggles (Description … Response Body)
Toggles
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 Area
Textarea
Paste the JSON canvas export directly here, or use Browse to load a file.
Import
Button (Primary)
Executes the import. Affected sections are updated immediately.
Cancel
Button
Closes the dialog without importing.
Export API Canvas JSON
Figure AC-12b — Export dialog: choose sections and download as JSON file
Element
Type
Description
File name
Label
Auto-generated filename from the endpoint path (e.g., "insertuser.json"). Dots and slashes are removed.
Section Checkboxes (6)
Checkboxes
Each section is checked by default. Uncheck any sections you do not want included in the export file.
Export
Button (Primary)
Downloads the selected sections as a .json file to the local machine.
Cancel
Button
Closes 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.
Figure AC-13 — Duplicate Canvas dialog: enter a new endpoint name to clone the canvas
Element
Type
Description
* New Canvas Name
Input (Required)
The endpoint path for the duplicated canvas (e.g., "update/user"). Must be unique within the project. The asterisk (*) indicates a required field.
Duplicate
Button (Primary)
Creates the new canvas with all content copied from the source. Navigates to the new canvas immediately after creation.
Cancel
Button
Closes 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.
Figure AT-1 — API Testing module: API Editor interface
Top Toolbar
Element
Type
Description
Endpoint Selector
Dropdown
Displays the active endpoint (e.g., "insert/user"). Shows how many endpoints are available in the project. Click to switch between saved endpoints.
Environment Badge
Dropdown
Shows the currently active environment (e.g., "test (Active)"). Click to switch between environments.
Environments
Button
Opens the Environment Management modal to create, edit, or switch environments and their variables.
Console (N)
Button
Opens the Request Console Inspector to view the history of all requests made in this session, including status, timing, and full detail.
Stress Test
Button
Opens the Advanced Load Testing modal to configure and run repeated requests for performance measurement.
Compare
Button
Opens the Request Comparison tool to run two endpoint variants side by side and diff their responses.
Request Builder
Element
Type
Description
Active Environment Banner
Info Bar
Confirms 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 Selector
Dropdown
Choose from GET, POST, PUT, PATCH, DELETE, HEAD, or OPTIONS. Defaults to GET for new requests.
URL / Endpoint Input
Text Input
Full URL or path for the request. Supports environment variable interpolation (e.g., "{url}/loging"). Resolved URL is shown in the Console detail view.
Run
Button
Sends the request with current method, URL, headers, and body. Response appears in the Response tab below.
Save
Button
Saves the current request configuration (method + URL + body + headers) to the selected endpoint slot.
Tab Panels
Element
Type
Description
Authorization
Tab
Set bearer tokens and custom authorization headers. See Section 8.
Body
Tab
JSON or raw request body editor for POST/PUT/PATCH requests.
Response
Tab
Displays 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.
Figure AT-2 — Environment Management: list of environments and their variables
Element
Type
Description
+ New Environment
Button
Opens the Add Environment dialog to create a new named environment. See Section 3.
Name
Column
The identifier for the environment (e.g., "test"). Referenced nowhere in request syntax — only the variables inside it are used.
Variables
Column
Shows the count of key-value pairs defined in that environment (e.g., "2 variables").
Active
Column
A green "Active" badge marks the environment currently injected into all requests. Only one environment can be active at a time.
Edit
Action Button
Opens the environment in edit mode so you can rename it, add variables, or change values.
Delete
Action Button
Permanently removes the environment and all its variables. Cannot be undone.
Variables for [name]
Panel
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.
Figure AT-3 — New Environment dialog: define name and variable pairs
Element
Type
Description
* Environment Name
Text Input (Required)
A unique label for this environment (e.g., "Development", "Production"). Shown in the environment dropdown and in the Active Environment banner.
Set as active environment
Checkbox
When checked, this environment becomes the active one immediately after saving, replacing any previously active environment.
Variables / + Add Variable
Button
Adds 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.
Key
Text Input
The variable name used in request templates (e.g., "url", "token"). Case-sensitive.
Value
Text Input
The actual string substituted when the variable is resolved at run time (e.g., "https://main.com").
Delete Row (🗑)
Icon Button
Removes that specific variable row from the list.
Cancel
Button
Closes the dialog without saving any changes.
Save
Button (Primary)
Creates 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.
Figure AT-4 — Run API: response panel with CORS error and response body
Response Tab Elements
Element
Type
Description
Status Indicator
Badge
HTTP status code returned by the server (e.g., 200, 401, 404, 500). Shown in colour: green for 2xx, red for 4xx/5xx.
Network Info Bar
Info Strip
Shows whether the request went through a Network Error (CORS block) or succeeded, plus the response time in milliseconds and payload size in bytes.
Body
Sub-tab
Displays 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)
Sub-tab
Lists all response headers returned by the server.
Cookies (N)
Sub-tab
Shows any cookies set by the server in the response.
Raw View / HTML View
Toggle
Switch the response body display between raw text and rendered HTML.
CORS Error
Element
Type
Description
CORS Error Banner
Alert
Appears 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 Note
Info
DPS 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.
Figure AT-5 — Console Log: session request history and detail panel
Request List
Element
Type
Description
Search Bar
Text Input
Filter the request list by URL or HTTP method. Updates in real time.
Clear All
Button
Removes all entries from the console log for this session. Cannot be undone.
Method
Column
HTTP method label (GET, POST, etc.) with colour coding — blue for GET, green for POST.
URL
Column
The resolved URL used for the request (environment variables already substituted).
Status
Column
HTTP response status code or "Pending" while the request is in flight.
Time
Column
Server response time in milliseconds.
Size
Column
Response payload size in bytes.
Timestamp
Column
Wall-clock time when the request was dispatched (e.g., 07:18:42 PM).
Detail Panel — Overview
Element
Type
Description
Method
Field
HTTP method of the selected request.
Status
Field
Final HTTP status code (e.g., 403, 200).
Original URL
Field
The raw URL template as typed in the request builder, including unresolved variable placeholders (e.g., {url}/loging).
Resolved URL
Field
The actual URL sent to the server after environment variables have been substituted.
Response Time
Field
Round-trip latency in milliseconds for this specific request.
Response Size
Field
Size of the response body in bytes.
Timestamp
Field
Exact date and time the request was sent (format: DD/MM/YYYY, HH:MM:SS).
Environment Variables Used
Section
Lists all variables that were resolved from the active environment for this request.
Request → Headers
Sub-tab
Shows all request headers sent, including Content-Type and any Authorization tokens.
Request → Params
Sub-tab
Query parameters appended to the URL.
Request → Body
Sub-tab
The request body payload as sent (JSON or raw text).
Response
Section
Expands 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.
Indicates 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 Mode
Dropdown
Selects 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 Requests
Label
Summary label showing the configured total number of requests that will be sent across all concurrency slots.
Advanced
Toggle
Reveals additional low-level configuration options such as Batch Delay. Hidden by default to keep the UI simple.
* Request Count
Number Input
Total number of HTTP requests to send. Default: 100. Required field.
* Concurrency
Number Input
Number of requests sent in parallel at any moment. Default: 10. Higher values increase server pressure but may expose race conditions.
Batch Delay (ms)
Number Input
Milliseconds to wait between each concurrency batch. Set to 0 for a continuous burst (no pauses). Useful for simulating rate-limited clients.
Start Test
Button (Primary)
Begins sending requests with the configured parameters. Results stream in real time.
Stop Test
Button
Halts 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.
The reference endpoint. Defaults to "(Current Request)" — the method, URL, and body from the active request builder.
RIGHT ENDPOINT
Input
The endpoint path to compare against (e.g., "insert/user"). Uses the same active environment variables as the left side.
Run Left
Button
Executes only the left endpoint and populates the left response panel.
Run Right
Button
Executes only the right endpoint and populates the right response panel.
Run Both
Button (Primary)
Executes both endpoints simultaneously and populates both panels for comparison.
Response Panels
Element
Type
Description
Left Status / Right Status
Field
HTTP status codes returned by each endpoint. Helps immediately spot divergent status codes (e.g., 200 vs 401).
Left Time / Right Time
Field
Round-trip response time in milliseconds for each endpoint. Use for performance comparison.
Body
Sub-tab
Displays the raw response body for each side.
Headers
Sub-tab
Lists the response headers for each side.
LEFT / RIGHT Badge
Badge
Colour-coded labels (blue for LEFT, orange for RIGHT) appear above each response panel for easy visual separation.
Diff Tabs
Element
Type
Description
JSON Diff
Tab
Field-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 Diff
Tab
Same field-by-field comparison, applied to response headers rather than the body.
Performance
Tab
Displays timing metrics side by side, useful for identifying which endpoint is faster under the same load conditions.
"Responses are identical"
Badge
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.
Primary bearer token field. The value entered here is automatically sent as the Authorization: Bearer <token> header on every request.
Quick Authorization Token
Text Input
A 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.
Key
Text Input
Custom HTTP header name (e.g., "x-api-key", "x-tenant-id"). Added to the request alongside the Authorization header.
Value
Text Input
Value for the corresponding custom header.
Delete Row (🗑)
Icon Button
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).
Figure BC-1 — Backlog Canvas list view: issue table with column customiser open
Toolbar
Element
Type
Description
Search (issue)
Input
Free-text search across issue descriptions and IDs. Results filter in real time.
Create Issue
Button (Primary)
Opens the Create New Issue modal. See Section 2.
Filter
Button
Opens the Issue Filter panel to narrow results by status, type, assignee, and more. See Section 14.
Column toggle icons
Icon Buttons
Three additional toolbar icons: column layout toggle, export/share, and refresh.
My Issue
Toggle
Filters the list to show only issues assigned to the currently logged-in user.
Columns dropdown
Dropdown
Opens a checklist to show/hide individual table columns. Reset Order restores default column order.
Issue Table Columns
Element
Type
Description
#
Column
Sequential issue number within the project. Unique identifier for each task.
Status
Column
Current state of the issue: NEW (yellow), ONGOING (blue), CLOSED (grey), or WAITING. Clickable to change status inline.
Description
Column
Brief title or description of the task. Includes a comment count badge when comments exist.
Assignee
Column
Avatar of the user responsible for this issue.
Created By
Column
Avatar of the user who created the issue.
Attached Files
Column
Number of file attachments on the issue, with a count badge for multiple files.
Commit SHA / Code Line
Column
Short commit hash linking this issue to a specific GitHub commit, plus the code lines count.
UI Canvas
Column
Name of the UI Canvas this issue is linked to.
Type
Column
Issue 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.
Figure BC-2 — Create New Issue modal: required fields, issue type, priority, and image upload
Element
Type
Description
UI Canvas *
Dropdown (Required)
Associates this issue with a specific UI Canvas screen. Only canvases within the current project are listed.
Assignee *
Dropdown (Required)
User responsible for implementing or resolving this issue.
Common Descriptions
Dropdown
Pre-defined description templates. Selecting one auto-populates the Description field.
Description *
Textarea (Required)
Clear explanation of the task. Placeholder: "Explain the issue clearly so implementation can start without extra clarification…"
Issue Type *
Toggle Group (Required)
Classifies the issue: New Request (blue), Bug, Change Request, or Backlog.
Priority
Toggle Group
Sets urgency level: Urgent (red), High (yellow), or Normal (blue, default).
Upload Image
File Input
Attaches a screenshot or mockup to the issue via the "Choose File" picker.
Drag, Drop or Paste
Drop Zone
Alternative image upload: drag a file, drop it, or paste from clipboard. Supports PNG and JPG.
Close after insert
Toggle
When enabled, the modal closes automatically after the issue is created.
Create Issue
Button (Primary)
Submits the form and creates the issue. Disabled until all required fields are filled.
Cancel
Button
Closes 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.
Figure BC-3 — Issue Details: Details tab with description, related canvas, and attachment zone
Details Tab
Element
Type
Description
Description
Field
Full description of the issue as entered during creation. An Edit link appears on hover.
Related UI Canvas
Field
Linked UI Canvas screen shown as a clickable tag (e.g., "🔲 Login").
Attachments
File Zone
Thumbnail grid of attached images/files. Drag, drop, or paste new files to add. Click a thumbnail to preview.
Right Sidebar
Element
Type
Description
Assignee
Field
Avatar and name of the assigned user.
Created By
Field
Avatar and name of the issue creator.
Status
Badge
Current status displayed as a coloured badge. Click to open the Change Status panel. See Section 10.
Priority
Toggle
Inline priority selector: Urgent, High, Normal.
Actions
Dropdown
Action menu for issue management operations. See Section 8.
Estimation Hours
Input
Planned hours for this issue (e.g., 0.00). Updated manually.
Spent Hours
Input
Actual hours logged against this issue.
Issue / Type / Priority / Sprint / Created
Metadata
Summary 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.
Figure BC-4 — Comments tab: rich-text editor and posted comment with Edit action
Blank editor where the comment is composed. Supports formatted text.
Save
Button
Posts the comment and appends it to the comment list.
Cancel
Button
Discards the draft without posting.
Comment List
Element
Type
Description
User Avatar
Visual
Coloured circle with initials identifying the comment author.
Author Name
Label
Full name of the commenter (e.g., "Raine Smith").
Timestamp
Label
Relative time since posting (e.g., "2 minutes ago").
Comment Body
Content
Full text of the comment, preserving rich-text formatting.
Edit
Link
Allows 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.
Figure BC-5 — Issue History: chronological audit log with user, action, and timestamp
Element
Type
Description
User Avatar + Name
Identity
The user who performed the action, shown with avatar circle and full name.
Action Description
Event Log
Human-readable description of the change: e.g., "added a Comment", "added an Attachment", "created the Work Item".
Attachment Details
Sub-entry
When files are attached, the entry expands to show the file name, a download link, and a counter (e.g., 4→5).
Timestamp
Metadata
Exact 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).
Figure BC-6 — Issue Relations: parent and child issue sections with add controls
Element
Type
Description
Parent Issues
Section
Lists the source issue(s) this work item was derived from. Each entry shows the parent issue number and description.
Child Issues
Section
Lists any follow-up issues created from this task. Useful for breaking large tasks into subtasks.
+ (Add button)
Button
Present in both sections. Opens a picker to search and select an existing issue to link as parent or child.
Empty state message
Status
"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.
Figure BC-7 — Committed Files: commit metadata, diff stats, and changed file list
Element
Type
Description
Author + Timestamp
Metadata
GitHub username and exact commit date/time (e.g., "anar1984 23/04/2026 11:54:24").
SHA Hash
Identifier
Short commit hash (e.g., "SHA: 8950df9"). Used to uniquely identify the commit in GitHub.
Change GitHub commits
Link
Allows re-linking this issue to a different commit. Opens the GitHub commit picker.
Commit Message
Label
The commit message as entered by the developer (e.g., "Initial commit").
+N additions / -N deletions
Stats
Line-level diff summary showing lines added (green) and removed (red) across all changed files.
N file(s) changed
Summary
Total count of files modified in this commit.
View on GitHub
Link
Opens the full commit page on GitHub in a new tab.
Changed Files list
Table
Collapsible 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.
Figure BC-8 — Actions dropdown with four management options and Code Line input
Element
Type
Description
Select Action (dropdown)
Trigger
Click to expand the action list. Closes automatically after selection.
Update Type
Action
Changes the issue type (New Request, Bug, Change Request, Backlog). See Section 11.
Related UI Canvas
Action
Re-links this issue to a different UI Canvas screen.
Close and Send
Action
Marks the issue as closed and forwards it to another user. See Section 13.
Forward Issue
Action
Reassigns the issue to another team member without closing it. See Section 12.
Code Line (input)
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.
Figure BC-9 — Share Issue modal: auto-generated public link with one-click copy
Element
Type
Description
Share issue #N (title)
Header
Modal title showing the issue number being shared.
Share link
Label
Section label for the generated URL.
URL field
Read-only Input
The generated public URL (e.g., https://…/backlog-canvas?key=RgKgO). Read-only; copy via the Copy link button.
Copy link
Button
Copies the URL to the system clipboard.
✕ (close)
Button
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.
Figure BC-10 — Update Issue Status panel with status dropdown
Element
Type
Description
Status dropdown
Dropdown
Lists all available statuses: New, Ongoing, Closed, Waiting, Draft. The current status is pre-selected.
Update
Button
Saves the new status immediately. The badge in the list updates in real time.
Cancel
Button
Closes 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.
Figure BC-11 — Update Issue Type panel: four classification options
Element
Type
Description
Type dropdown
Dropdown
Four options: New Request, Bug, Change Request, Backlog. The current type is pre-selected (shown at top of the dropdown).
Update
Button
Applies the type change and updates the badge in the issue list.
Cancel
Button
Closes 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.
Figure BC-12 — Forward Issue(s) panel: searchable team member list with email addresses
Element
Type
Description
Search input
Input
Type a name or email to filter the team member list. Results update as you type.
User list
Listbox
All project members shown with avatar, full name, and email. The highlighted row is the currently selected user.
Forward
Button
Assigns the issue to the selected user and updates the Assignee field in the details sidebar.
Cancel
Button
Closes 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.
Figure BC-13 — Close and Send Issue panel: recipient, type, and optional comment
Element
Type
Description
Assignee *
Field (Required)
The user who will receive the closed issue notification (e.g., "John Muller"). Pre-populated from the current assignee.
Type *
Field (Required)
Issue type at the time of closing (e.g., "New Request"). Shown for reference.
Comment
Textarea
Optional message to accompany the closure — useful for explaining what was done or what needs review next.
Close and Send
Button (Primary)
Closes the issue and dispatches the notification to the specified assignee.
Cancel
Button
Closes 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.
Filters by current status (New, Ongoing, Closed, Waiting, Draft).
Type
Dropdown
Filters by issue type (New Request, Bug, Change Request, Backlog). Supports multi-select.
Issue Description
Text Input
Partial or full text search within issue description fields.
Assignee
Dropdown
Filters to issues assigned to a specific team member.
Created By
Dropdown
Filters by the user who originally created the issue.
UI Canvas
Dropdown
Shows only issues linked to the selected UI Canvas screen.
Sprint
Dropdown
Filters to issues assigned to a specific sprint.
Created Date
Date Picker
Filters to issues created on or after this date.
Closed Date
Date Picker
Filters to issues closed on or before this date.
Filter
Button (Primary)
Applies all active filters and updates the backlog list.
Clear
Button
Resets all filter fields to their default (empty) state.
Cancel
Button
Closes 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.
Figure BC-15 — Commit History: full diff view with file-level changes and GitHub link
Element
Type
Description
Panel Title
Header
"Commit History – {issue description}" — confirms which issue's commit is being viewed.
Author + Timestamp
Metadata
GitHub username and exact date/time of the commit.
Commit Message
Label
Full commit message as written by the developer.
+N additions / -N deletions
Stats
Aggregate line-level diff across all changed files.
N file(s) changed
Summary
Total file count modified in this commit.
SHA Hash
Reference
Short commit SHA shown on the right side of the header row.
View on GitHub
Link
Opens the commit on GitHub in a new browser tab.
Changed Files
Section
Expandable 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.
Figure BC-16a — GitHub Commits Not in Backlog: filter toolbar for repository, branch, date range, and collaborator
Figure BC-16b — GitHub Commits Not in Backlog: commit list with canvas and assignee selectors and Add to Backlog button
Filter Toolbar
Element
Type
Description
Repository
Dropdown
Selects the GitHub repository to scan (e.g., "DPS-Public/react_mekan_4_dps_demo…").
Filter by Branch
Dropdown
Limits commits to a specific branch (e.g., "main").
From Date – To Date
Date Range
Narrows the search to commits within the specified date range.
Filter by Collaborator
Dropdown
Shows only commits made by a specific GitHub collaborator.
Filter
Button
Applies all active filter criteria to the commit list.
Commit Entries
Element
Type
Description
Author + Date + SHA
Metadata
GitHub author, commit date/time, and short SHA hash for identification.
Associates this commit with a specific UI Canvas screen when creating the backlog issue.
Select Assignee
Dropdown
Sets the assignee for the new backlog issue derived from this commit.
Add to Backlog
Button
Creates 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.
Figure BC-17 — Kanban view: five status columns with issue cards and create-in-column support
Status Columns
Element
Type
Description
New (orange)
Column
All newly created issues awaiting assignment or start. Issue count badge shown in the column header.
Ongoing (blue)
Column
Issues currently being actively worked on by the assigned developer.
Closed (green)
Column
Completed issues. Populated automatically when status is set to Closed.
Waiting (yellow)
Column
Issues blocked or waiting on an external dependency before work can continue.
Draft (grey)
Column
Issues in planning stage — not yet ready for assignment or active work.
Issue Card
Element
Type
Description
#N (issue number)
Identifier
Issue number shown in the top-left of the card.
Priority badge
Badge
Coloured label showing Urgent, High, or Normal priority.
Description
Content
Brief issue description truncated to fit the card width.
Related Canvas
Link
Linked UI Canvas name as a clickable tag (e.g., "🔲 Login").
Date
Metadata
Issue creation or last-updated date.
Assignee avatars
Avatars
Avatar circles of the assigned users.
+ Create Issue
Button
Inline 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.
Element
Type
Description
GitHub Repository Browser
Module
Main workspace pane — combines the file tree, code viewer, and toolbar actions in one panel.
Sign in with GitHub
Button
Launches the OAuth flow to authenticate DPS with your GitHub account.
File Tree
Panel
Left-side expandable directory listing for the selected repository and branch.
Code Viewer
Panel
Right-side syntax-highlighted file content display with line numbers.
Commit History
Drawer
Slide-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.
Figure CB-2 — GitHub Repository Browser before authentication: Sign in prompt
Authentication Flow
Element
Type
Description
GitHub Repository Browser heading
Title
Module header confirming you are inside the Code Builder workspace.
GitHub logo + Connect to GitHub
Illustration
Visual confirmation that no GitHub session is currently active.
"Authenticate with GitHub…" subtitle
Label
Explains the purpose: authenticate to browse and edit your repositories.
Sign in with GitHub
Button (primary)
Initiates the OAuth redirect to GitHub. After approval, DPS receives a scoped token and returns you to the browser.
Login with GitHub (top-right)
Button (secondary)
Alternate entry point at the top-right of the panel — produces the same OAuth flow.
"Logged out from GitHub" toast
Notification
Green 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.
Shows the GitHub owner/repo name (e.g., DPS-Public/react_mekan_4_dps_…). Confirms the active repository.
Private badge
Badge
Indicates the repository visibility on GitHub (Private / Public).
Branch selector
Dropdown
Switch the file tree and code viewer to any branch available in the repository (e.g., main, develop, feature/*).
Open in
Button
Opens a dropdown of external editors for the currently selected file or repository.
Commit History
Button
Slides open the Commit History panel on top of the file explorer.
Load Content
Button (primary)
Pushes the currently viewed file content into the active DPS canvas or API canvas context.
GitHub Logout
Button
Ends the OAuth session and returns the panel to the Sign in screen.
File Tree Panel
Element
Type
Description
Repository name tab
Tab
Shows the repo name as a clickable tab — navigates to the root of the file tree.
Language badge
Badge
Auto-detected programming language of the currently open file (e.g., JavaScript, TypeScript).
Search files
Input
Filter the file tree in real time by typing a file or folder name.
Refresh
Button
Re-fetches the file tree from GitHub to pick up any newly pushed files.
Folder rows (▶)
Expandable
Click to expand or collapse a directory. Sub-directories nest visually with indentation.
File rows
Selectable
Click a file to load its content in the code viewer. The active file is highlighted.
Code Viewer Panel
Element
Type
Description
File name tab
Tab
Displays the currently open file name (e.g., App.jsx). A pencil icon on the right allows inline editing when permitted.
Line numbers
Gutter
Sequential line numbers on the left for easy reference during code review.
Syntax highlighting
Display
Language-specific colour coding applied automatically based on the detected file type.
Branch: main label
Badge
Confirms 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.
Figure CB-4 — 'Open in' dropdown: five external editor integrations
Available Options
Element
Type
Description
Open in VS Code
Deep-link
Launches the repository in a locally installed Visual Studio Code instance using the vscode:// URI scheme.
Open in StackBlitz
Web IDE
Opens the repository in StackBlitz — a browser-based Node.js dev environment with instant hot-reload.
Open in CodeSandbox
Web IDE
Forks the repository into CodeSandbox for rapid prototyping without any local setup.
Open in CodeSpace
Cloud IDE
Spins up a GitHub Codespace — a full cloud-hosted VS Code environment with configurable compute.
Open in github.dev
Web Editor
Opens 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.
Figure CB-5 — Commit History panel: branch filter, date range, and commit list
Filter Controls
Element
Type
Description
Repository
Label
Displays the full owner/repo path to confirm which repository's commits are being shown.
Default Branch
Label
Shows the repository default branch (e.g., main) as context for the filter.
Filter by Branch
Dropdown
Narrows the commit list to commits made to the selected branch only.
From Date – To Date
Date Range Picker
Restricts the commit list to a specific calendar window. Useful for sprint or release reviews.
Filter
Button
Applies the selected branch and date filters to refresh the commit list.
Commit Entry Anatomy
Element
Type
Description
Commit message
Title
The full commit subject line, typically following conventional commits format (feat, fix, chore, refactor…).
Author name
Metadata
GitHub display name of the person who authored the commit.
Timestamp
Metadata
Exact date and time the commit was pushed (e.g., 23/04/2026, 12:47:36).
SHA hash
Identifier
Shortened unique commit identifier (e.g., e62a25fc). Matches the SHA on GitHub.
+N Added badge
Badge (green)
Total number of lines added across all changed files in this commit.
−N Deleted badge
Badge (red)
Total number of lines deleted across all changed files in this commit.
N Files badge
Badge (blue)
Total count of files that were created, modified, or deleted in this commit.
N Modified badge
Badge (yellow)
Count of files that were changed (not newly added or deleted).
N files changed
Link
Expands the commit entry to reveal the per-file change breakdown.
View on GitHub
Link
Opens 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.
Figure CB-6 — Commit entry expanded: changed files with status badges and [Open] links
Changed Files List
Element
Type
Description
Changed Files: (N files)
Header
Sub-section header confirming the number of files affected by this commit.
[Open] link
Action
Loads the file content into the Code Builder code viewer panel for reading.
File name — [src/path/file.jsx]
Identifier
Display name of the file and its full repository path in brackets.
added badge (green)
Status Badge
File was newly created in this commit — did not exist on the branch before.
modified badge (yellow)
Status Badge
File already existed and was changed — lines added and/or deleted.
deleted badge (red)
Status Badge
File was removed from the repository in this commit.
+N −N line stats
Metadata
Lines added (green +) and deleted (red −) within this specific file.
N changes
Metadata
Total 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.
Figure CB-7 — File Diff Viewer: inline diff for src/App.jsx — green additions, red deletions
Diff Viewer Elements
Element
Type
Description
File Diff: [file path]
Panel Title
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]
Sub-header
Full relative file path inside the repository (e.g., File: src/App.jsx).
+N / −N change count
Summary
Total additions and deletions in this diff (e.g., +6 −1, 6 changes).
Green highlighted lines (+)
Addition
Lines that were added in this commit. Background is green with a + prefix.
Red highlighted lines (−)
Deletion
Lines that were removed in this commit. Background is red with a − prefix.
Neutral context lines
Context
Unchanged lines shown around additions and deletions to provide reading context.
@@ hunk header @@
Hunk
Git diff hunk notation indicating the line range of the following change block (e.g., −2,4,0 @@ function App() @@).
Line numbers (left / right)
Gutter
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.
Figure GR-1 — GitHub Repositories main view: repository table with Owner, Repo, Type, Collaborators, and Actions columns
Page Header
Element
Type
Description
Add New Github Repository
Page Title
Heading of the module. Confirms you are managing repository connections for the current DPS project.
+ Add
Button
Opens the Add New Repository modal. Requires GitHub Owner, GitHub Repo name, and canvas Type to be filled in before saving.
Repository Table Columns
Element
Type
Description
GitHub Owner
Column
The GitHub organisation or individual account that owns the repository (e.g., DPS-Public).
GitHub Repo
Column
The full repository name as it appears on GitHub (e.g., react_mekan_4_dps_demo_project_user_tracking_system).
Type
Column
The canvas category this repository is linked to. Possible values include UI Canvas and API Canvas.
Collaborators
Action Button
Opens the GitHub Collaborators modal showing all users who have access to this repository with their permission levels.
Edit
Action Link
Opens 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).
Figure GR-2 — Add New Repository modal: three required fields and Cancel / Add actions
Modal Fields
Element
Type
Description
GitHub Owner *
Text Input
The GitHub username or organisation name that owns the repository. Must match exactly as it appears on GitHub (case-sensitive).
GitHub Repo *
Text Input
The repository name without the owner prefix. Must match the exact repository slug on GitHub.
Type *
Dropdown
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.
Cancel
Button
Closes the modal without saving. No changes are made to the repository list.
Add
Button
Validates 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)
Icon Button
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.
Figure GR-3 — GitHub Collaborators modal: user list with permission badges and Remove action per entry
Modal Elements
Element
Type
Description
Modal Title
Header
"GitHub Collaborators — [Owner]/[Repo]" — confirms which repository's collaborators are being viewed.
User (avatar + name + handle)
Column
Displays the collaborator's profile photo, display name, and GitHub username. Role label (e.g., User) shown beneath the handle.
Permissions
Column
Shows the permission badges granted to the collaborator on this repository.
Admin badge
Permission
Grants full administrative access — the collaborator can manage settings, add/remove other collaborators, and delete the repository.
Push badge
Permission
Allows the collaborator to push commits and create branches on the repository.
Pull badge
Permission
Allows the collaborator to clone and fetch the repository contents.
Remove
Action Button
Revokes the collaborator's access to the repository. The action takes effect immediately and cannot be undone from this modal.
Close
Button
Dismisses 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.
Figure UCRA-1 — UI Canvas Reports: KPI row, filter/sort bar, and per-canvas metrics table with 8 canvases
Page Structure
Element
Type
Description
UI Canvas Reports (title)
Header
Module heading confirming you are in the canvas-level report view, not a chart-based analytics view.
KPI Summary Row
Section
Five metric cards at the top of the page aggregating totals across all currently visible (non-filtered-out) UI canvases.
Filter by UI canvas name
Search Input
Narrows 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
Toolbar
"Ordered by UI canvas name" label with directional sort, plus a canvas count indicator (e.g., 8 of 8 UI canvases).
Canvas metrics table
Table
One 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.
Sum of estimated development hours across all visible canvases. In the example: 215 hours total. Set manually per canvas by the product team.
Spent Hours
KPI Card
Sum 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 Lines
KPI Card
Sum 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 Lines
KPI Card
Sum 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 Rate
KPI Card
Average alignment score across all visible canvases. In the example: 69%. Reflects how closely delivered functionality matches the original canvas requirements.
Total across visible UI canvases
Sub-label
Appears 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.
Figure UCRA-3 — Filter & Sort toolbar: canvas name search (left), ordered-by label and canvas count (right)
Element
Type
Description
Filter by UI canvas name
Text Input
Live 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 name
Sort Label
Indicates 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 canvases
Counter
Shows 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.
Figure UCRA-4 — Canvas metrics table: five columns covering hours, code lines, and requirement alignment per canvas
Table Columns
Element
Type
Description
UI Canvas
Column
The canvas (screen) name as defined in the project. Clickable — opens that canvas's detail view. A sort icon allows alphabetical ordering.
Estimated Hours
Column
The planned development hours for this canvas, set during estimation. Displayed alongside a "Last estimated" timestamp showing when the estimate was last saved.
Spent Hours
Column
Actual hours logged against backlog issues linked to this canvas. Labelled "Backlog aggregate" to clarify the data source.
Estimated Code Lines
Column
The planned code line target for this canvas. Displayed with a "Last estimated" timestamp.
Developed Code Lines
Column
Actual 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 Rate
Column
A 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).
Figure UCRA-5 — Per-canvas rows: each cell shows the primary value plus a source label and a last-updated timestamp
Cell Sub-labels
Element
Type
Description
Last estimated: [timestamp]
Sub-label
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 aggregate
Sub-label
Appears 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 aggregate
Sub-label
Appears 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]
Sub-label
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 aggregate
Zero value
A 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)
Missing value
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.
Figure UCA-1 — UI Canvas Analytics main view: filter bar + Closed Issues and Closed Bugs charts
Filter Controls
Element
Type
Description
UI Canvas List
Multi-select
Choose 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)
Date Picker
Sets the start and end date of the analysis window. Works with Time Interval to determine bucket boundaries.
Currently supports Histogram — grouped vertical bars placing each canvas side-by-side within a single time bucket.
This Week / This Month / Last 30 Days / This Year
Quick Preset
One-click date-range shortcuts that populate From and To automatically.
Reset
Button
Clears all active filter selections and restores default values.
Filter (Apply)
Button
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.
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
Element
Type
Description
Chart Title
Header
"Number of Closed Issues by UI Canvas and [Interval]" — the interval label updates with the selected Time Interval.
Y-axis
Axis
Count of issues closed (integer). Scale auto-adjusts to the highest single-bucket value across all selected canvases.
X-axis
Axis
Time bucket — a calendar date in Daily mode, a week label in Weekly, a month name in Monthly, a year in Yearly.
Grouped bars
Visual
Each colour corresponds to one UI Canvas. Bars for the same time bucket are placed side-by-side for direct comparison.
Legend
Visual
Maps canvas names to bar colours (e.g., Add/Create User Screen → teal, Login → purple, Menu Page → red, Settings Screen → orange).
Full Size
Button
Expands 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.
Figure UCA-3 — Closed Bugs: empty state when no bug-type issues match the selected canvas and date filters
Chart Details
Element
Type
Description
Chart Title
Header
"Number of Closed Bugs by UI Canvas and [Interval]" — tracks only backlog items with type Bug linked to the selected canvases.
Grouped bars
Visual
Same colour palette as Closed Issues — consistent canvas-to-colour mapping across all four charts.
No analytics data
Empty state
Displayed 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
Helper text
"Try another date range, interval, or selection." Prompts the user to broaden the filter rather than assume no bugs exist.
Full Size
Button
Available 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.
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
Element
Type
Description
Chart Title
Header
"Spent Hours by UI Canvas and [Interval]" — aggregates all time-log entries on issues assigned to each canvas.
Y-axis
Axis
Hours in decimal format (e.g., 0.4 = 24 minutes). Scale adjusts automatically to the highest canvas value.
X-axis
Axis
Time bucket matching the active interval.
Canvas bars
Visual
Canvases with no logged time in the period have no visible bar — they remain in the legend but do not render a column.
Full Size
Button
Expands 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.
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
Element
Type
Description
Chart Title
Header
"Code Lines by UI Canvas and [Interval]" — sums GitHub commit additions attributed to each canvas in each time bucket.
Y-axis
Axis
Integer line count. Auto-scales to the dominant canvas value (e.g., 0–4,500 when one canvas has ~4,000 lines).
X-axis
Axis
Time bucket — daily date, week label, month name, or year depending on the selected interval.
Per-canvas bars
Visual
Each 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.
Legend
Visual
Same colour-to-canvas mapping as all other charts in the module. Clicking a legend item hides or shows that canvas's bars.
Full Size
Button
Opens 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.
Figure AA-1 — Assignee Analytics main view: filter bar + four chart widgets
Filter Controls
Element
Type
Description
Assignee List
Multi-select
Choose one or more team members to include in the analysis. Defaults to all project assignees.
Date Range (From / To)
Date Picker
Sets the start and end date of the analysis window. Works in conjunction with the Time Interval to determine bucket boundaries.
Time Interval
Toggle
Controls chart bucket granularity. Options: Daily (one bar per calendar day), Weekly, Monthly, Yearly.
Diagram Type
Select
Currently 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 Year
Quick Preset
One-click date-range shortcuts that set From and To automatically without opening the date pickers.
Reset
Button
Clears all active filter selections and restores default values (all assignees, current month, Daily interval).
Filter (Apply)
Button
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.
Figure AA-2 — Closed Issues: grouped bars for Anar Rustamov (teal), John Muller (purple), Raine Smith (red)
Chart Elements
Element
Type
Description
Chart Title
Header
"Number of Closed Issues by Assignee and [Interval]" — the interval label updates with the selected Time Interval.
Y-axis
Axis
Count of issues closed (integer). Scale adjusts automatically to the highest single-bucket value.
X-axis
Axis
Time bucket label — a calendar date in Daily mode, a week label in Weekly mode, etc.
Grouped bars
Visual
Each colour represents one assignee. Multiple assignee bars are placed side-by-side within the same time bucket.
Legend
Visual
Maps assignee names to their bar colour. Clicking a legend item toggles that assignee's bars on or off.
Full Size
Button
Expands 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.
Figure AA-3 — Closed Bugs: empty-state view when no bug-type issues match the active filters
Chart Elements
Element
Type
Description
Chart Title
Header
"Number of Closed Bugs by Assignee and [Interval]" — tracks only issues with type Bug.
Grouped bars
Visual
Same grouped-bar structure as Closed Issues. Colour palette is shared across all Assignee Analytics charts for consistency.
No analytics data
Empty state
Shown 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
Helper text
"Try another date range, interval, or selection." Directs the user to adjust filters rather than assuming a system error.
Full Size
Button
Available 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.
Figure AA-4 — Spent Hours: daily effort per assignee, Y-axis in hours (decimal)
Chart Elements
Element
Type
Description
Chart Title
Header
"Spent Hours by Assignee and [Interval]" — aggregates all time-log entries linked to issues assigned to each person.
Y-axis
Axis
Hours (decimal format). A value of 0.4 means 24 minutes logged in that bucket.
X-axis
Axis
Time bucket matching the selected interval (date, week label, month name, or year).
Grouped bars
Visual
Side-by-side bars per assignee within each bucket. Instantly reveals which team member logged the most time on any given day.
Full Size
Button
Opens 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.
Figure AA-5 — Code Lines: 4,300+ lines contributed by Anar Rustamov on 23 Apr (Daily interval)
Chart Elements
Element
Type
Description
Chart Title
Header
"Code Lines by Assignee and [Interval]" — sums GitHub commit additions for each assignee in each time bucket.
Y-axis
Axis
Integer 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-axis
Axis
Time bucket label. In Daily mode each group represents one calendar day of commits.
Grouped bars
Visual
Each assignee's code contribution sits beside their teammates' bars for direct comparison.
Full Size
Button
Expands 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.
Figure UM-1 — User Management main page: KPI row, Team Members, Project Invitations, and System / Custom Roles
Page Sections
Element
Type
Description
Total Members / Permission Distribution
KPI Row
Shows the total headcount and a horizontal bar chart breaking down how many users hold each role (e.g., Admin: 1, Product Engineer: 1).
Team Members
Section
Lists every user currently active in the project with their assigned role and inline edit / remove actions.
Invite Member / + Add Member
Action Buttons
Two distinct ways to bring users into the project — Invite Member sends an email link; Add Member adds an existing DPS user directly.
Project Invitations
Section
Tracks all invitations sent to external email addresses, including their acceptance status and timestamps.
System Role / Custom Roles
Section
Displays 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.
Figure UM-2 — Team Members: John Muller (Product Engineer) and Raine Smith (Admin / You)
Element
Type
Description
Avatar
Visual
User profile photo or generated initials avatar. Colour is consistent across all DPS pages for the same user.
Display name
Text
Full name of the team member as registered in the DPS system.
Email
Text
Account email address shown beneath the display name.
Role badge
Tag
The role currently assigned to this member (e.g., Product Engineer, Admin). A member can hold only one role at a time.
You
Tag
Highlighted tag on the logged-in user's own row. Prevents accidental self-removal.
Edit icon (pencil)
Action
Opens an inline edit control to change the member's assigned role without removing and re-adding them.
Remove icon (trash)
Action
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.
Figure UM-3 — Project Invitations: two accepted invitations with role, status, created/accepted timestamps, and action icons
Table Columns
Element
Type
Description
Email
Column
The email address to which the invitation was sent. This becomes the user's login email if they register via the invitation link.
Role
Column
The role that will be assigned to the invited user upon joining the project (e.g., Product Engineer, Product Manager).
Status
Column
Current state of the invitation. "accepted" (green badge) means the user clicked the link and completed registration. Pending invitations show a different colour.
Created
Column
Exact date and time the invitation was sent (e.g., 23/04/2026, 13:12:09).
Accepted
Column
Exact date and time the invitee clicked the link and joined the project. Empty if still pending.
Link icon
Action
Copies the invitation link to the clipboard so the admin can share it manually via a different channel.
Resend icon
Action
Resends the invitation email to the same address — useful if the original email was missed or expired.
Delete icon (trash)
Action
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.
Figure UM-4 — Roles panel: Admin system role (left) and two custom roles with module counts and Edit / Delete actions (right)
System Role
Element
Type
Description
Admin (badge)
System Role
The only built-in role in DPS. Displayed as a red badge. Cannot be edited or deleted.
Admin has full access to all modules
Description
Admins bypass all module-level permission checks — every DPS feature is accessible regardless of Custom Role settings.
Custom Roles
Element
Type
Description
Role name
Header
The label assigned when the role was created (e.g., Product Engineer, Product Manager).
N users
Counter
Number of team members currently assigned this role. Helps admins understand the blast radius before editing or deleting a role.
N module access configured
Sub-label
Count of DPS modules enabled for this role (e.g., "12 module access configured"). Clicking Edit reveals exactly which modules are toggled on.
Edit
Action Button
Opens the role editor — same form as Create New Role but pre-filled with existing settings. Changes apply immediately to all members holding this role.
Delete
Action Button
Permanently removes the custom role. Only available when the role has 0 assigned users — prevents accidental permission loss.
+ Create New Role
Button
Opens 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.
Figure UM-5 — Create New Role: existing roles listed at top, Role Name field, and 13 module permission checkboxes
Required. The unique name for the new role (e.g., QA Manager). Used throughout the system wherever role assignment is needed.
Permissions (Modules) *
Checkbox Grid
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.
Info Banner
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.
Cancel
Button
Closes the modal without saving. No role is created.
Create Role
Button
Validates 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
Element
Type
Description
Dashboard
Module
Access to the project-level execution dashboard with KPI widgets.
Data Flow
Module
Access to the Data Flow visual graph for system architecture.
API Canvas
Module
Access to API Canvas design and documentation.
Code Builder
Module
Access to the GitHub-integrated code browser and diff viewer.
GitHub Repositories
Module
Access to the GitHub repository linking and collaborator management.
UI Canvas Reports
Module
Access to the tabular UI Canvas execution report.
UI Canvas Analytics
Module
Access to the canvas-level grouped bar chart analytics.
UI Editor
Module
Access to the drag-and-drop UI component editor.
UI Canvas
Module
Access to UI Canvas management (screens, UAC, descriptions).
API Testing
Module
Access to the API Testing environment and stress test runner.
Backlog Canvas
Module
Access to the project backlog, issue creation, and kanban view.
Analytics
Module
Access to the Analytics section (parent of Canvas and Assignee analytics).
Assignee Analytics
Module
Access 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.
Figure UM-6 — Add User to Project modal: user search (min. 2 characters) and role assignment
Element
Type
Description
Select User *
Search Dropdown
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 *
Dropdown
Required. Choose the role to assign to the selected user from the list of available roles in this project (System + Custom roles).
Cancel
Button
Closes the modal without making any changes.
Add User
Button
Validates 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.
Figure UM-7 — Invite Member modal: email address, role selection, and invitation behaviour explanation
Element
Type
Description
Email *
Text Input
Required. The email address to send the invitation to (placeholder: new-member@company.com). Must be a valid email format.
Role *
Dropdown
Required. The role to assign to the invitee after they complete registration. All project roles (System + Custom) are available.
Invitation behavior (info box)
Callout
"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.
Cancel
Button
Closes the modal without sending an invitation.
Create Invitation
Button
Validates 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.
Figure NT-1 — Notification Panel flyout (right) shown alongside the All Notifications page (left)
Panel Elements
Element
Type
Description
Notifications (panel title)
Header
Confirms the panel context. The header is fixed — notification entries scroll beneath it.
Mark all as read
Button
Marks every notification in the panel as read in one click, clearing the unread badge on the bell icon.
Today (group label)
Section divider
Groups notifications by date. The most recent group appears at the top; older groups (Yesterday, earlier dates) follow below.
Notification entry
List item
Each 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)
Visual
A small blue dot on the right edge of an entry signals it has not yet been read.
Check Details
Action Button
Navigates directly to the entity that triggered the notification (e.g., the backlog issue, canvas, or user record).
View all notifications →
Footer Link
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.
Figure NT-2 — All Notifications page: filter bar, Unread badge, notification rows with actions, and pagination
Page Header
Element
Type
Description
All Notifications
Page Title
Heading of the notifications history page.
Total: N
Counter
Total number of notifications matching the current filter state (including both read and unread).
Unread: N
Badge
Count of notifications that have not yet been marked as read. Updates immediately when entries are marked.
Show All
Toggle
Switches the list between showing only unread notifications and showing all notifications regardless of read status.
Mark all as read
Button
Marks every notification currently visible (based on active filters) as read in one operation.
Notification Row
Element
Type
Description
Actor avatar
Visual
Profile picture or initials of the user who triggered the notification. Unknown system actions show a default avatar.
Action title
Text
Bold summary of the event (e.g., "New issue #6 created"). Clicking the title may navigate to the related entity.
System badge
Tag
Identifies which DPS project or module generated the notification (e.g., "User Tracking System").
Action description
Text
A plain-language sentence describing what happened (e.g., "Unknown User created a new issue").
Timestamp
Meta
Relative time since the event occurred (e.g., "about 7 hours ago"). Hover reveals the absolute date and time.
Email sent badge
Tag
Indicates 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.
Figure NT-3 — Filter bar: Project, Created By, Date Picker (From–To), and Clear Filters
Filter Controls
Element
Type
Description
Project
Dropdown
Filters notifications by DPS project. Useful when a user is a member of multiple projects and wants to focus on one.
Created By
Dropdown
Filters by the user who triggered the event. Select a specific team member to see only the actions they performed.
Date Picker From–To
Date Range
Limits results to notifications generated between the chosen start and end dates. Accepts calendar input or manual entry.
Clear Filters
Link
Resets 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.
Figure NT-4 — Per-notification actions: Open Issue (left) and Mark as read (right) on each row
Row-level Actions
Element
Type
Description
Open Issue
Action Button
Navigates 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 →
Action Button
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)
Bulk Action
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.