πŸ§‘β€πŸ’» Technical Specifications – Issue Delivery Report

πŸ§‘β€οΏ½οΏ½ Technical Specifications – Issue Delivery Report

βš™οΈ Core Technologies

Issue Delivery Report is built with:

  • Atlassian Forge (Cloud Runtime)

  • React using @forge/react (UI Kit 2)

  • Jira REST API v3 for issue data and changelogs

  • Forge view.getContext() to access issue context and license state

  • Blob-based export via browser APIs (for CSV, JSON, Markdown, TXT)

  • PieChart + DynamicTable from Forge UI Kit


🧬 Architecture Overview

A lightweight client-side app rendered directly inside the Jira issue view, which:

  • Reads issue changelog and fields in real-time

  • Categorizes status durations by keywords

  • Calculates Flow Efficiency and Sprint Addition flags

  • Shows visual feedback and enables 1-click exports


πŸ” How It Works (Step by Step)

  1. App loads in the Jira issue view panel
    ↳ Via @forge/react using ForgeReconciler.render()

  2. Reads the current issue key
    ↳ Obtained through view.getContext()

  3. Fetches issue details and full changelog
    ↳ Calls /rest/api/3/issue/{key}?expand=changelog

  4. Parses status transitions
    ↳ Iterates over the changelog to detect status changes and sprint additions

  5. Builds a timeline
    ↳ Calculates start/end times for each status and classifies them using keyword matching

  6. Computes key metrics
    ↳ Total Time, Active / Waiting / Blocked Time, Flow Efficiency, Sprint Addition

  7. Renders metrics, insights, and chart
    ↳ Displays in DynamicTable, PieChart, and Lozenge components

  8. Offers export options
    ↳ Allows download of report in 4 formats (CSV, JSON, Markdown, TXT)


    Frame 124.png

πŸ“‘ APIs Used

API Endpoint

Purpose

API Endpoint

Purpose

/rest/api/3/issue/{key}?expand=changelog

Fetch issue details and full status transition history

view.getContext()

Access issue key, sprint metadata, and license state

requestJira()

Perform REST API calls from Forge frontend

🚫 No data is written to Jira β€” the app is read-only, except during export.


πŸ’Ύ Data Storage

Issue Delivery Report does not use issue.properties to persist state.
All computations are ephemeral and run in-memory for the current session.

Nothing is stored in Jira unless the user manually exports data to file.


πŸš€ Performance

  • Loads changelog once per session

  • Timeline calculations use native Date arithmetic

  • DynamicTable + PieChart are rendered conditionally to avoid overhead

  • Export logic is lazy-loaded upon button click

  • Lightweight and fast, even with 50+ status transitions


πŸ›‘ Security

  • Fully sandboxed inside the Atlassian Forge runtime

  • App runs in the issue view only β€” never across issues or projects

  • Uses OAuth2-scoped requestJira() with user context

  • No persistent storage or external API usage

  • Complies with Atlassian Marketplace data handling standards


πŸ§ͺ Test Coverage

The core logic has been verified via:

  • βœ… Status parsing and keyword matching

  • βœ… Time duration and efficiency calculations (including edge cases)

  • βœ… Sprint addition logic and date comparisons

  • βœ… Export content (header correctness, file structure, encoding)

UI rendering is stable in both light and dark themes via Forge dev preview.