A terminal-based user interface (TUI) for interacting with Jira, built in Rust for fun and learning.
- View current sprint tasks
- Display task details
- Transition task status
Jeera CLI requires a configuration file to run. Here's how to set it up:
-
Create a directory named
.jeera
in your home directory:- On Linux/macOS:
mkdir ~/.jeera
- On Windows:
mkdir %USERPROFILE%\.jeera
- On Linux/macOS:
-
Create a configuration file named
config.json
in the.jeera
directory:~/.jeera/config.json
This location is consistent across operating systems (Linux, macOS, and Windows).
-
The
config.json
file must have the following structure:{ "email": "your-email@example.com", "api_token": "your-jira-api-token", "host": "your-jira-host.atlassian.net" }
This application follows a hybrid architecture, combining elements of component-based design and Flux architecture. It consists of three main loops:
- UI Loop
- State Store Loop
- API Server Loop
- State: The central source of truth for the application, managed by the State Store.
- Actions: Events that trigger state changes or API calls.
- Components: UI elements that render based on the current state and dispatch actions.
- Middleware: Intercepts actions to perform side effects, in our case API calls, before updating the state.
- Handles user input and rendering
- Subscribes to state updates, user events (Keyboard and mouse - not used yet)
- Dispatches actions based on user interactions
- Manages the application state
- Processes actions to update the state
- Dispatches state changes to the UI
- Acts as a Middleware and intercepts actions dispatched by UI
- Proxies unhandled Actions to the state store
- Handles API-related actions
- Performs asynchronous API calls
- Dispatches new actions based on API responses to the state store
- User interacts with the UI
- UI component dispatches an action
- Middleware intercepts the action (if necessary)
- State Store processes the action and updates the state
- UI re-renders based on the new state
- Implement release and build process
- Implement create/edit functionalities for Jira tasks
- Improve error handling and user feedback
- Add user authentication and configuration through TUI