A simple Java command-line application for tracking system issues, using Google Sheets as the persistent data store.
Think of it as a lightweight Jira β but living in a spreadsheet π.
The CLI supports the following operations:
- Description (required)
- Parent Issue ID (optional)
- Issue ID (required)
- Status (required)
Allowed status values:
OPENIN_PROGRESSCLOSED
-
Status (required)
OPENIN_PROGRESSCLOSED
All issues are stored and managed inside a Google Spreadsheet.
Your spreadsheet must contain a single sheet with the following columns in this exact order:
| Column Name | Description |
|---|---|
| ID | Unique identifier (UUID or incremental ID) |
| Description | Issue description |
| Parent ID | Optional reference to another issue |
| Status | OPEN / IN_PROGRESS / CLOSED |
| Created At | Timestamp of creation |
| Updated At | Timestamp of last update |
Before running the application, a few setup steps are required.
- Visit console.cloud.google.com and sign in.
- Create a new project (the name doesnβt matter).
From the left sidebar:
-
Open API Library
-
Enable:
- Google Sheets API
-
Navigate to APIs & Services β Credentials
-
Click Create Credentials β OAuth client ID
-
If prompted, configure the Consent Screen:
- Use your email
- Fill required fields only
-
Choose Desktop App as the application type
-
Download the credentials file and rename it to:
credentials.json
- Move the file to:
src/main/resources/credentials.json
- In OAuth settings, open the Audience tab
- Add your email under Test Users
This allows your account to access Google Sheets during development.
Open credentials.json and update:
"redirect_uris": [
"http://localhost:8080"
]
- Create a new Google Spreadsheet
- Set up the columns exactly as shown below
- Column names must match exactly
- Column order must not change
- Remember the sheet name (highlighted in red)
This value will be used for the environment variable:
SHEET_NAME
| Variable Name | Description | Example |
|---|---|---|
SHEET_NAME |
Sheet name | Issue Data |
SPREADSHEET_RANGE |
Column range (! required) |
!A1:F |
SPREADSHEET_ID |
Spreadsheet ID from URL | 1AbC... |
π The Spreadsheet ID can be copied from url:
https://docs.google.com/spreadsheets/d/<SPREADSHEET_ID>/edit
The application is distributed as a Docker image β no local Java installation required.
- Docker installed
- Google Spreadsheet created
- Google Cloud credentials configured
docker build -t system-issue-tracker .Make sure the spreadsheet setup is complete:
β‘οΈ Creating valid google spreadsheet
docker run -it \
-p 8080:8080 \
-e SPREADSHEET_ID=<your_spreadsheet_id> \
-e SHEET_NAME=<your_sheet_name> \
-e SPREADSHEET_RANGE=<your_sheet_range> \
system-issue-trackerOnce running, the CLI will prompt you to create, update, or list issues. Type anything to receive information about program usage.
The application is fully interactive and supports the following commands:
Create a new issue with a description and an optional parent issue.
create -p <parent_id> -d <description>
-d <description>β required, issue description-p <parent_id>β optional, links the issue to a parent
Example:
create -d "Login button not working"
create -p dc092f2b-4cd7-4d6b-a125-d2c62913afdc -d "OAuth callback fails"
Update the status of an existing issue.
update <issue_id> <status>
Example:
update dc092f2b-4cd7-4d6b-a125-d2c62913afdc IN_PROGRESS
Display all issues matching the given status.
list <status>
Example:
list OPEN
Exit the CLI application.
exit
The following status values are supported:
OPENIN_PROGRESSCLOSED
- Issue IDs are generated automatically
Updated Atis refreshed on status change- Parent issues can be used for subtasks or dependencies
Happy tracking! ππ