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.
2h 30m, 1.5h, 90m, 2:30, 1d),
backdate it, add a comment. Or click any card on the board to log against it.DEMO=1 and explore the whole app with fake data, no Jira needed.| Report | Log time |
|---|---|
npm install
DEMO=1 npm run dev
# open http://localhost:5173
Create a Jira Cloud API token: https://id.atlassian.com/manage-profile/security/api-tokens
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
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.
| 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) |
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.
MIT © Aleksei Ryskin