← cd ../work

case 02 / 06 · Own product · Jira app

role

Solo developer · product, design & build

year

2026 · 5 weeks

stack

Atlassian Forge · React + Vite · Jira REST & Agile APIs · Node.js (serverless) · Unit + smoke tests · Design tokens & theming

drag or use arrows →
Sprint Verdict — 01 — hero screen
Sprint Verdict — 02 — research board
Sprint Verdict — 03 — wireframes
Sprint Verdict — 04 — shipped UI

A Jira app that tells Scrum teams whether a sprint’s commitment is actually possible, once leave, holidays and part-time hours are counted.

## 01

Problem

Jira assumes everyone on the team has the same capacity every sprint. It doesn’t know that someone is on leave for three days, that Friday is a public holiday, or that a contractor works 60%. Teams overcommit, sprints slip, and the board can’t explain why. Managers running several boards can’t see that one person is stretched across three teams, because each board looks fine on its own.

## 02

Research

I designed around how teams actually work. Teams estimate differently (story points, T-shirt sizes, time or issue count), so the app supports all of them. Leave usually already lives in Jira, so the app reads it from there, counting approved requests only. Holiday formats vary by country, and managers need to compare several boards side by side. This came from my own experience of sprints slipping at work.

## 03

Design

Verdict first. Every dashboard opens with one completion number and a plain-language verdict (On track, Behind schedule, Overcommitted or Scope keeps moving) plus one sentence explaining why. Detail sits below. The tabs follow a story: now → next → what happened → across teams → who → settings. The app is honest about its data: it shows what it skipped and why, and forecasts use only leave that’s already booked. Light, dark and six editor-inspired themes, with contrast checked by tests.

## 04

Build

A Forge app with a Jira project page and a global page sharing one React bundle, backed by 24 serverless endpoints. Because the app runs with app-level access, I rebuilt Jira’s per-user permission checks on the server so people only see projects they’re allowed to browse, and only project admins can change settings. All data stays inside the customer’s Jira, with no external database and no outbound network calls, so it qualifies for Atlassian’s “Runs on Atlassian” badge. The capacity maths, forecasting and leave parsing are pure functions, covered by 222 unit tests.

222

unit tests passing

24

backend endpoints

6

dashboard pages

0

external network calls

$ open next →LaluanLive