A faster, modern UI for Jira Cloud. Because Jira's UI deserves better.
By Abdelkrim BOUJRAF / ALT-F1 SRL, Brussels 🇧🇪 🇲🇦
Not affiliated with Atlassian. Taskara is an independent, open-source project that uses Jira's public REST APIs. "Jira" is a registered trademark of Atlassian.
| Jira's UI | Taskara |
|---|---|
| 3-5s page loads | Instant (SPA + smart caching) |
| Cluttered sidebars | Clean, focused views |
| Confusing navigation | Dashboard · List · Board · Sprint views |
| No useful keyboard shortcuts | Ctrl+K search, j/k navigation, c create |
| Sprint charts buried in menus | Burndown + velocity charts on one page |
| No offline support | Works offline with auto-sync |
Auto-generated with mock data — see all 17 in APP_SCREENSHOTS.md
| Dashboard | Kanban Board |
|---|---|
![]() |
![]() |
| Sprint Dashboard | Command Palette |
|---|---|
![]() |
![]() |
| Issue Detail | Light Mode |
|---|---|
![]() |
![]() |
| Mobile List | Mobile Board |
|---|---|
![]() |
![]() |
- Dashboard — quick overview: active sprints, recent issues, project cards
- List view — sortable, filterable table with pagination
- Kanban board — drag-and-drop status transitions, swimlanes by assignee/priority
- Sprint dashboard — burndown chart, velocity chart, scope tracking, issue counts
- Issue detail — slide-in panel with ADF rendering, inline editing, status transitions
- ⌨️ Keyboard shortcuts —
j/knavigate,Enteropen,Escapeclose,b/l/sswitch views,ccreate,?help - 🔍 Command palette —
Ctrl+Kinstant fuzzy search across all issues - ⚡ Bulk actions — select multiple issues, bulk transition/assign/priority
- 💾 Saved filters — save filter combinations as named views
- ⏱️ Time tracking — built-in timer, log work modal, progress bar
- 📝 Rich text editor — TipTap editor for descriptions (bold, italic, headings, lists, links, code)
- 🌙 Dark/Light mode — toggle in header, system preference detection
- 📱 Responsive — mobile-first, works on phone/tablet/desktop
- 📴 Offline mode — works without internet, auto-syncs when reconnected
- 🔔 Sprint state filter — view Active, Future, Closed, or All sprints
- 📋 Create submenu — quick-create issues and projects from anywhere
- 🔐 OAuth 2.0 — "Login with Atlassian", no passwords stored
- 🚫 No data stored — your Jira content stays in your browser, never on our servers
- 🔒 Encrypted tokens — OAuth tokens encrypted at rest (Fernet/AES-128-CBC)
- 🛡️ Session protection — fingerprinting prevents stolen cookie reuse
- 📊 Rate limiting — per-IP limits protect your Jira API quota
- 🇪🇺 GDPR compliant — Privacy Policy, Terms of Service, cookie consent
Visit taskara.alt-f1.be → Login with Atlassian → Done.
# 1. Download
curl -O https://raw.githubusercontent.com/ALT-F1-OpenClaw/atlassian-jira-ui/main/docker-compose.ghcr.yml
# 2. Configure
mkdir -p backend && cat > backend/.env << EOF
JIRA_HOST=https://yourcompany.atlassian.net
JIRA_EMAIL=you@company.com
JIRA_API_TOKEN=your-api-token-here
APP_SECRET_KEY=$(openssl rand -base64 32)
EOF
# 3. Run
docker compose -f docker-compose.ghcr.yml up -dOpen http://localhost:5173 🎉
Pre-built images (amd64 + arm64): ghcr.io/alt-f1-openclaw/atlassian-jira-ui-backend:latest + -frontend:latest
docker compose pull && docker compose up -d # Pull latest
APP_VERSION=v1.62.5 docker compose up -d # Pin version| Guide | For |
|---|---|
| 📖 User Guide | Feature walkthrough |
| 📸 Screenshots | All 17 views |
| ⚖️ Terms of Service | Usage terms |
| 🔒 Privacy Policy | GDPR compliance |
| ❓ Troubleshooting | Common issues + fixes |
Browser → Frontend (React 19 + Vite + Tailwind CSS 4)
│
nginx (SPA + /api/ + /auth/ proxy)
│
Backend (FastAPI + async httpx)
│
Redis (sessions, encrypted tokens)
│
Jira Cloud REST API v3
| Layer | Technology |
|---|---|
| Frontend | React 19, Vite 6, TypeScript 5.7 (strict), Tailwind CSS 4, TanStack Query, TipTap, dnd-kit, cmdk |
| Backend | Python 3.13, FastAPI, httpx (async), Pydantic, slowapi (rate limiting) |
| Sessions | Redis 7 (preferred) or file-based JSON fallback |
| Auth | OAuth 2.0 (3LO) + API Token (dev only), Fernet encryption |
| Testing | Vitest (255), pytest (25), Playwright (22) = 302 tests |
| CI/CD | 6 GitHub Actions workflows, Docker multi-arch (amd64 + arm64), GHCR |
| Infra | Traefik / Cloudflare Tunnel, Let's Encrypt / Tailscale TLS |
# Backend
cd backend
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env # Fill in Jira credentials
bash start.sh # → http://localhost:35400
# Frontend
cd frontend
npm install
npm run dev # → http://localhost:5173cd frontend && npm test # 255 unit tests
cd backend && python -m pytest tests/ -v # 25 backend tests
cd frontend && npm run build && npx playwright test # 22 E2E testsBDD naming: "Given [context], when [action], then [expected result]"
See docs/API_REFERENCE.md for all endpoints, parameters, and examples.
Key endpoints: /api/issues, /api/projects, /api/sprints, /api/search, /auth/login, /auth/me
| Option | Guide | Use Case |
|---|---|---|
| 🌐 Public SaaS | deploy/public/README.md | VPS + Let's Encrypt |
| 🏠 Private | deploy/README.md | Raspberry Pi + Tailscale |
| 🔒 Hardened VPS | docs/SECURE_VPS_DEPLOYMENT.md | Cloudflare + OpenAppSec |
| ✅ Checklist | docs/VPS_DEPLOYMENT_CHECKLIST.md | 46-step checklist |
├── backend/app/ # FastAPI (routers, auth, jira_client, session_store)
├── frontend/src/ # React SPA (App.tsx — single file)
├── frontend/e2e/ # Playwright E2E tests + screenshots
├── deploy/ # Pi deployment (Traefik + Tailscale)
├── deploy/public/ # Public deployment (Let's Encrypt + Redis)
├── docs/ # Guides, ADRs, meeting minutes
├── docs/adr/ # 23 Architecture Decision Records
├── scripts/ # Version bump, API comparison test
└── .github/workflows/ # 6 CI/CD workflows
6 workflows: CI (test matrix), Release, Docker Validate, Docker Publish (GHCR multi-arch), CodeQL (weekly), CI Auto-Fix (create issue + Discord notification on failure).
See docs/CHANGELOG_HIGHLIGHTS.md for version history.
node scripts/bump-version.mjs patch # 1.0.0 → 1.0.1
node scripts/bump-version.mjs minor # 1.0.0 → 1.1.0
git push && git push --tags # Triggers Release + Docker workflows23 ADRs in docs/adr/ covering: React single-file, FastAPI proxy, TipTap, dnd-kit, CSS variables, Workbox, BDD testing, Docker/GHCR, code splitting, CI auto-fix, SearchableSelect, Traefik, port-based envs, Tailscale TLS, no server storage, Platform API fallback, dual auth strategy, Jira URL construction, site selection, rate limiting, multi-tenant isolation, Redis sessions, Let's Encrypt deployment.
See docs/CONTRIBUTING.md. Use conventional commits (feat:, fix:, docs:, chore:). All features need tests.
See SECURITY.md for vulnerability reporting.
MIT — see LICENSE
Abdelkrim BOUJRAF — ALT-F1 SRL, Brussels 🇧🇪 🇲🇦
- GitHub: @Abdelkrim
- LinkedIn: Abdelkrim BOUJRAF
- X: @altf1be







