The problem

Every team lead gets asked what a project, an epic or a client's work cost. The hours are already in Jira, because people log work, but turning them into money means exporting worklogs to a spreadsheet, looking up who earns what, remembering that someone's rate changed in October, and doing it again next month. The apps that do this properly are full time-tracking suites with their own timesheets, priced per user for everyone on the site.

What Ratecard does

  1. Prices the time you already log. A Jira administrator sets a default hourly rate and individual rates, each starting in a month. Rates are dated, so a raise in October never rewrites September's cost. Time logged by someone with no rate is shown as unrated hours instead of being silently dropped.
  2. Shows cost where the work is. Each project gets a Cost page: pick a period (this month, last month, this quarter, last 90 days, this year, last year) and see cost and hours by epic, by work item, by month and, for administrators, by person. Sub-tasks roll up to their parent and stories to their epic.
  3. Tracks budgets. A project or an epic can carry a budget from a start month. The Cost page shows the burn as a percentage and flags Near at 80% and Over above 100%.
  4. Follows the work item. On any work item the Cost panel shows its cost by month; on an epic it totals the epic and its child work items, and the epic's budget can be set right there.
  5. Puts cost on dashboards. The Project cost gadget compares this month with last month and shows the budget burn.
  6. Exports. Show CSV gives one row per work item and month (work item, summary, epic, month, hours, cost, plus person for administrators) to paste into a spreadsheet.
  7. Keeps rates private. Rates and per-person costs are visible to Jira administrators only; project costs are visible to administrators and one group they choose. Everything else in Jira keeps its own permissions, because worklogs are read as the person viewing.

How it is built

Forge only, no egress, and worklogs are never copied: each view reads them from Jira on demand. Jira REST v3 /search/jql with nextPageToken finds the work items with work logged in the period (worklogDate bounds), the worklog field is used directly when complete and /issue/{id}/worklog?startedAfter&startedBefore is called when it is not, and parents are resolved so sub-tasks land on their story and stories on their epic. All money is integer cents, rates are looked up by the month each worklog started, and the rollups (by epic, item, person and month, plus unrated time) are pure functions covered by unit tests. Rate tables, budgets and the access group live in Forge KVS; computed summaries are cached for five minutes. Modules: jira:adminPage, jira:projectPage, jira:issuePanel, jira:dashboardGadget with an edit view, and a weekly scheduledTrigger that reports stored account IDs through privacy.reportPersonalData and erases the rates of closed accounts.

Built With

Share this project:

Updates

Submission history