jira-time Svelte Themes

Jira Time

Self-hosted Jira Cloud time tracking & worklog reports — log time, report worked hours by month/week/custom range (CSV/Markdown export), and a personal Kanban board. SvelteKit + Svelte 5.

Jira Time — Time Tracking & Worklog Reports for Jira Cloud

A self-hosted dashboard for Jira Cloud that makes personal time-tracking pleasant: log time, report worked hours (by month / week / custom range, exportable to CSV & Markdown), and manage a personal Kanban board with drag-to-transition and task creation.

It talks directly to the Jira REST API with your own API token — no third-party service, nothing leaves your machine. Built with SvelteKit + Svelte 5. Light & dark themes.

Features

  • 📊 Report — your logged hours over any range (this week / month / last month / year / custom), broken down by issue, day, ISO week, and month. Expand any issue to edit or delete its individual worklogs. Export raw entries as CSV or the full report as Markdown.
  • ⏱️ Log time — search any issue, enter a duration (2h 30m, 1.5h, 90m, 2:30, 1d), backdate it, add a comment. Or click any card on the board to log against it.
  • 🗂️ Board — issues assigned to / reported by / watched by you, grouped into To Do · In Progress · Done. Drag a card to transition its status in Jira. Create new tasks from the board.
  • 📈 Monthly budget — a strip showing logged vs. required hours this month, with an ahead/behind pace indicator.
  • ⚡ Fast — a 5-minute server cache (the Jira round-trips are the slow part); Refresh forces a live fetch, and logging/editing always invalidates it.
  • 🌗 Light & dark — theme toggle, remembers your choice, respects your OS preference.
  • 🧪 Demo mode — run with DEMO=1 and explore the whole app with fake data, no Jira needed.
Report Log time

Quick start (demo mode, no Jira)

npm install
DEMO=1 npm run dev
# open http://localhost:5173

Connect to your Jira

  1. Create a Jira Cloud API token: https://id.atlassian.com/manage-profile/security/api-tokens

  2. Copy the example env file and fill it in:

    cp .env.example .env
    
    JIRA_SITE=https://your-site.atlassian.net
    [email protected]
    JIRA_API_TOKEN=your-api-token
    # optional — monthly hours budget
    # WORKDAY_HOURS=8
    # JIRA_HOLIDAYS=2026-01-01,2026-05-01
    
  3. Run it:

    npm run dev          # http://localhost:5173
    

Authentication uses HTTP Basic auth (email:token) against the Jira REST API v3 — the token stays in your local .env (which is gitignored) and is only ever sent server-side.

Scripts

Command What it does
npm run dev Dev server (add DEMO=1 for fake data)
npm run build / npm run preview Production build (Node adapter) & preview
npm run check Type-check (svelte-check)
npm test Unit tests (Vitest)

How it works

  • Frontend: SvelteKit + Svelte 5 (runes), TypeScript, plain scoped CSS with a CSS-variable design system (so theming is a token swap).
  • Backend: SvelteKit server routes proxy the Jira REST API. The browser never sees your token, and there's no CORS problem because the browser only talks to your own server.
  • Pure, tested core: date/timezone bucketing, duration parsing, ISO-week aggregation and business-day math live in dependency-free modules with unit tests.

Two Jira-specific gotchas are handled for you: the search endpoint is the current POST /rest/api/3/search/jql (token-paginated), and write requests send X-Atlassian-Token: no-check to satisfy Jira's XSRF guard.

License

MIT © Aleksei Ryskin

Top categories

Loading Svelte Themes