A blazingly fast, read-only Jira CLI client written in Go. Gira provides a beautiful terminal user interface (TUI) for viewing and navigating your Jira active sprints - much faster than the web interface.
Note: This is currently a demo project. The application is read-only; users cannot update or edit sprint issues.
gira-demo.mp4
- Fast Performance: Terminal-based interface that's significantly faster than Jira's web UI
- Active Sprint Viewer: Quickly view and navigate active sprint issues
- Project & Board Navigation: Browse through Jira projects and boards
- Task Board View: Organized view of sprint tasks by status
- Task Details: View detailed information about individual tasks
- Read-Only: Safe, non-destructive viewing of your Jira data
- Beautiful TUI: Built with Bubble Tea and styled with Lipgloss
- Go 1.24.6 or higher
- A Jira account with API access
- Jira API token
go install github.com/mabd-dev/gira@latestgit clone https://github.com/mabd-dev/gira.git
cd gira
go build -o giraGira uses a TOML configuration file for authentication with Jira. On first run, the configuration file is automatically created at ~/.config/gira/credentials.toml with secure permissions.
- Run the application for the first time to create the config file:
./giraThe application will create ~/.config/gira/credentials.toml and prompt you to edit it.
- Edit the configuration file with your Jira credentials:
nano ~/.config/gira/credentials.toml- Update the following fields:
[credentials]
email = "your.email@example.com"
secret = "your_jira_api_token"
domain = "your_jira_domain"- Log in to your Jira account
- Go to Atlassian Account Settings
- Click "Create API token"
- Give it a label and click "Create"
- Copy the generated token to your
credentials.tomlfile as thesecretvalue
- general.debug: Enable debug mode to use mock API client (default:
false) - credentials.email: Your Jira account email address
- credentials.secret: Your Jira API token (see above)
- credentials.domain: Your Jira domain (e.g., if your Jira URL is
yourcompany.atlassian.net, useyourcompany)
Run the application:
./giraOr run directly with Go:
go run main.goThe TUI provides an interactive interface for navigating your Jira workspace:
- Projects View: Browse available Jira projects
- Boards View: Select from available boards in a project
- Sprint View: View the active sprint with all issues
- Task Board: See tasks organized by status columns
- Task Details: View detailed information about individual tasks
gira/
├── api/ # Jira API client implementation
│ ├── testdata/ # mock data for testing
│ ├── client.go # Main client interface
│ ├── clientReal.go # Real API client
│ ├── clientMock.go # Mock client for testing
│ └── types.go # API response types
├── config/ # Configuration management
│ └── credentials.go # Environment variable loading
├── models/ # Domain models
│ ├── types.go # Core domain types
│ ├── formatter.go # Data formatters
│ └── taskStatus.go # Task status definitions
├── internal/
│ ├── logger/ # Logging functionality
│ ├── theme/ # UI theming
│ └── ui/ # TUI components
│ ├── projects/ # Projects view
│ ├── boards/ # Boards view
│ └── sprint/ # Sprint views
│ ├── tasksboard/ # Task board view
│ └── taskdetails/ # Task details view
└── main.go # Application entry point
- Go: Programming language
- Bubble Tea: TUI framework
- Bubbles: TUI components
- Lipgloss: Terminal styling
- go-toml/v2: TOML configuration management
- Jira REST API: Data source
Logs are stored in ~/.config/gira/logs/ for debugging and troubleshooting.
Gira follows a clean architecture pattern:
- API Layer: Handles communication with Jira REST API
- Models Layer: Domain models independent of API responses
- UI Layer: Terminal user interface components using Bubble Tea
- Config Layer: Configuration and credentials management
The application uses the Bubble Tea framework's Model-View-Update (MVU) pattern for state management and rendering.
As a demo project, Gira currently has the following limitations:
- Read-only: No ability to create, update, or delete issues
- Active Sprint Only: Only displays the currently active sprint
- Basic Views: Limited to projects, boards, and sprint issues
Potential features for future development:
- Issue editing and creation
- Multiple sprint viewing
- Custom filters and search
- Offline mode with caching
- Custom themes and color schemes
- Comment viewing
This is a demo project, but contributions are welcome! Feel free to:
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
- Built with Charm libraries
- Inspired by the need for a faster Jira experience