
Jira Issue Tracker is a Kivy-based desktop application designed to provide an overview of Jira issues based on custom JQL (Jira Query Language) queries. It offers a simple and intuitive interface to track the status of various issues without needing to browse to Jira.
- Custom JQL Queries: Display issues in a grid layout with customizable queries
- Auto-refresh: Fetch and update issue counts at regular intervals (default: 1 hour)
- Direct Navigation: Clicking on issue boxes directly opens your Jira site with the JQL search performed
- Theme Support: Toggle between light and dark mode for user convenience
- Settings Management: Easy access to user settings and configuration
- Secure API Calls: Built-in security measures for API requests with retry logic
- Python 3.9 or higher
- pip (Python package installer)
pip install jira-issue-tracker
- Clone the repository:
git clone https://github.com/star7js/jira-issue-tracker.git
cd jira-issue-tracker
- Create a virtual environment (recommended):
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
- Install dependencies:
pip install -e .
Option 1: Interactive Setup (Recommended)
python setup_interactive.py
This will guide you through the configuration process step by step.
Option 2: Manual Setup
- Copy the example environment file:
cp example.env .env
- Edit the
.env
file with your Jira configuration:- Open
.env
in your preferred text editor - Update the required fields (see below)
- Save the file
- Open
⚠️ Security Note: Never commit your.env
file to version control as it contains sensitive information like API tokens. The.env
file is already included in.gitignore
to prevent accidental commits.
You must configure these two fields to connect to your Jira instance:
# Your Jira site URL
# Cloud: https://yourcompany.atlassian.net
# Server/Data Center: https://jira.yourcompany.com or https://yourcompany.com/jira
JIRA_SITE_URL=https://yourcompany.atlassian.net
# Your Jira Personal Access Token (not your password!)
JIRA_API_TOKEN=your_personal_access_token_here
You can customize the JQL queries to track different types of issues:
# Query 1: Default project issues
JQL_QUERY_ONE=project = DEMO
# Query 2: Another project or filter
JQL_QUERY_TWO=project = IP
# Query 3: Issues reported by current user
JQL_QUERY_THREE=reporter = currentUser() order by created DESC
# Query 4: Additional project or custom filter
JQL_QUERY_FOUR=project = ITZ
# Server mode (set to TRUE for background service)
JIRA_SERVER=FALSE
This application works with all Jira deployment types:
Type | URL Format | Description |
---|---|---|
Jira Cloud | https://yourcompany.atlassian.net |
Hosted by Atlassian |
Jira Server | https://jira.yourcompany.com |
Self-hosted on-premises |
Jira Data Center | https://yourcompany.com/jira |
Enterprise self-hosted |
For Jira Cloud:
-
Go to your Atlassian account:
- Visit: https://id.atlassian.com/manage-profile/security/api-tokens
- Or navigate from your Jira instance: Profile Settings → Security → API tokens
-
Create a new API token:
- Click "Create API token"
- Give it a descriptive label (e.g., "Jira Issue Tracker Desktop App")
- Copy the generated token
For Jira Server/Data Center:
-
Go to your Jira instance:
- Navigate to Profile Settings → Security → API tokens
- Or use your admin's preferred method for API access
-
Create a new API token:
- Follow your organization's process for API token creation
- Copy the generated token
-
Add to your
.env
file:- Paste the token as the value for
JIRA_API_TOKEN
- Paste the token as the value for
💡 Tip: API tokens are more secure than passwords and can be revoked individually if needed.
Here are some useful JQL patterns you can use:
Query Type | JQL Example | Description |
---|---|---|
Project Issues | project = DEMO |
All issues in a specific project |
Assigned to Me | assignee = currentUser() |
Issues assigned to you |
My Reports | reporter = currentUser() |
Issues you reported |
High Priority | priority = High |
High priority issues |
Recent Issues | created >= -7d |
Issues created in last 7 days |
Open Issues | status != Done |
Issues not marked as done |
Combined | project = DEMO AND priority = High |
Multiple conditions |
Ordered | project = DEMO ORDER BY created DESC |
Issues sorted by creation date |
For more JQL help, visit: Atlassian JQL Documentation
python main.py
Or if installed via pip:
jira-tracker
On first run, if the .env
file is not configured, the application will show a settings popup where you can configure your Jira connection.
- Issue Boxes: Each box displays the count of issues matching a JQL query
- Click to Navigate: Click any issue box to open your Jira site with that specific JQL search
- Theme Toggle: Use the "Toggle Light/Dark Mode" button to switch themes
- Settings: Access user settings through the "User Settings" button
pytest
black .
pip install -e ".[dev]"
jira-issue-tracker/
├── main.py # Main application entry point
├── setup_interactive.py # Interactive setup script
├── jira_issue_tracker.py # Main application logic
├── api.py # Jira API integration
├── issue_box.py # Individual issue box component
├── jira_connection_settings_popup.py # Settings popup
├── security.py # Secure request handling
├── pyproject.toml # Project configuration
├── README.md # This file
├── example.env # Environment variables template
└── test_*.py # Test files
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Solution: Make sure you've copied
example.env
to.env
and updated the values - Check: Verify your
.env
file exists in the project root directory
- Solution: Verify your
JIRA_SITE_URL
is correct (includehttps://
) - Check: Test the URL in your browser to ensure it's accessible
- Server/Data Center: Ensure your Jira instance allows external API access
- Solution: Regenerate your API token and update the
.env
file - Check: Ensure you're using an API token, not your password
- Solution: Check your JQL queries are valid
- Check: Test the JQL query directly in your Jira instance
- Solution: This is just a warning and doesn't affect functionality
- Note: The app works fine with the current KivyMD version
If you encounter any issues or have questions:
- Check the Issues page
- Create a new issue with detailed information about your problem
- Include your Python version, operating system, and any error messages
- Service Management Projects support
- Enhanced JQL query builder
- Export functionality
- Multiple Jira instance support
- Advanced filtering options