A command-line issue tracking system for software development projects
Project description
IssueDB
A command-line issue tracking system for software development projects. IssueDB provides a simple yet concrete way to manage issues, bugs, and tasks directly from your terminal.
Features
- Simple Issue Management: Create, update, delete, and list issues
- Project-based Organization: Group issues by project
- Priority Levels: Categorize issues as low, medium, high, or critical
- Status Tracking: Track issues through open, in-progress, and closed states
- FIFO Queue Management: Get the next issue to work on based on priority and creation date
- Full-text Search: Search issues by keyword in title and description
- Audit Logging: Complete immutable history of all changes
- JSON Output: Machine-readable output for scripting and automation
- Local Storage: SQLite database stored locally with no external dependencies
Installation
From PyPI (when published)
pip install issuedb
From Source
git clone https://github.com/rodmena-limited/issue-queue
cd issuedb
pip install -e .
Quick Start
Create your first issue
issuedb-cli create --title "Fix login bug" --project MyApp --description "Users cannot log in with special characters" --priority high
List all open issues
issuedb-cli list --status open
Get the next issue to work on
issuedb-cli get-next --project MyApp
Usage
Creating Issues
Create a new issue with required title and project:
issuedb-cli create -t "Add user authentication" -p WebApp
With additional details:
issuedb-cli create \
--title "Implement OAuth2" \
--project WebApp \
--description "Add Google and GitHub OAuth providers" \
--priority high \
--status open
Listing Issues
List all issues:
issuedb-cli list
Filter by project:
issuedb-cli list --project WebApp
Filter by status and priority:
issuedb-cli list --status open --priority high
Limit results:
issuedb-cli list --limit 10
Getting Issue Details
View a specific issue:
issuedb-cli get 42
Updating Issues
Update issue status:
issuedb-cli update 42 --status in-progress
Update multiple fields:
issuedb-cli update 42 \
--title "Updated title" \
--priority critical \
--status in-progress
Deleting Issues
Delete an issue (with audit trail preserved):
issuedb-cli delete 42
Getting Next Issue
Get the highest priority oldest issue:
issuedb-cli get-next
For a specific project:
issuedb-cli get-next --project WebApp
Searching Issues
Search by keyword:
issuedb-cli search --keyword "login" --project WebApp
Clearing Project Issues
Clear all issues for a project (requires confirmation):
issuedb-cli clear --project OldProject --confirm
Viewing Audit Logs
View all changes for an issue:
issuedb-cli audit --issue 42
View all changes in a project:
issuedb-cli audit --project WebApp
Database Information
Get database statistics:
issuedb-cli info
JSON Output
All commands support JSON output for scripting and automation:
issuedb-cli list --project WebApp --json | jq '.[].title'
issuedb-cli get-next --json | jq '.id'
Command Reference
Commands
create- Create a new issuelist- List issues with optional filtersget- Get details of a specific issueupdate- Update issue fieldsdelete- Delete an issueget-next- Get the next issue to work onsearch- Search issues by keywordclear- Clear all issues for a projectaudit- View audit logsinfo- Get database information
Global Options
--db PATH- Use a custom database file (default: ~/.issuedb/issuedb.sqlite)--json- Output results in JSON format
Priority Levels
low- Low prioritymedium- Medium priority (default)high- High prioritycritical- Critical priority
Status Values
open- Issue is open (default)in-progress- Issue is being worked onclosed- Issue is resolved
Examples
Example Workflow
# Create a new project's issues
issuedb-cli create -t "Setup CI/CD pipeline" -p DevOps --priority high
issuedb-cli create -t "Add unit tests" -p DevOps --priority medium
issuedb-cli create -t "Update documentation" -p DevOps --priority low
# Get the next issue to work on
issuedb-cli get-next -p DevOps
# Start working on it
issuedb-cli update 1 --status in-progress
# Complete the issue
issuedb-cli update 1 --status closed
# Check remaining open issues
issuedb-cli list -p DevOps --status open
Integration with Scripts
#!/bin/bash
# Get next issue ID and mark it as in-progress
ISSUE_ID=$(issuedb-cli get-next --project MyApp --json | jq -r '.id')
if [ "$ISSUE_ID" != "null" ]; then
echo "Working on issue $ISSUE_ID"
issuedb-cli update $ISSUE_ID --status in-progress
fi
LLM Agent Integration
IssueDB is designed to be easily used by LLM agents:
import subprocess
import json
def get_next_issue(project):
result = subprocess.run(
["issuedb-cli", "get-next", "--project", project, "--json"],
capture_output=True,
text=True
)
return json.loads(result.stdout) if result.returncode == 0 else None
def create_issue(title, project, description=None, priority="medium"):
cmd = ["issuedb-cli", "create",
"--title", title,
"--project", project,
"--priority", priority,
"--json"]
if description:
cmd.extend(["--description", description])
result = subprocess.run(cmd, capture_output=True, text=True)
return json.loads(result.stdout) if result.returncode == 0 else None
Database
IssueDB uses a local SQLite database stored at ~/.issuedb/issuedb.sqlite. The database includes:
- issues table - Stores all issue data
- audit_logs table - Immutable audit trail of all changes
- Comprehensive indexes for optimal query performance
The database is automatically created on first use.
Testing
Run the test suite:
pytest
Run with coverage:
pytest --cov=issuedb
Development
Setup Development Environment
# Clone the repository
git clone https://github.com/yourusername/issuedb
cd issuedb
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install in development mode
pip install -e .
pip install pytest pytest-cov ruff
Code Formatting and Linting
# Format code
ruff format .
# Check linting
ruff check .
Running Tests
# Run all tests
pytest
# Run specific test file
pytest tests/test_repository.py
# Run with verbose output
pytest -v
License
MIT License - See LICENSE file for details
Contributing
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Support
For issues, questions, or suggestions, please open an issue on GitHub.
Roadmap
- Export/import functionality
- Issue templates
- Tags/labels support
- Due dates
- Issue relationships (blocks, depends on)
- Statistics and reporting
- Web UI (optional)
- Backup and restore utilities
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file issuedb-1.0.0.tar.gz.
File metadata
- Download URL: issuedb-1.0.0.tar.gz
- Upload date:
- Size: 22.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
59c25ffe794aa2f899b3bded8273959427494e82f1833dbf4254998c377fbc52
|
|
| MD5 |
dbac9496dcdda1842c1477e0cf7c5102
|
|
| BLAKE2b-256 |
d4376d83e9aeb7e37c9c3e8f812ce09779b4005936b3a56ed4e3052fa18e6011
|
File details
Details for the file issuedb-1.0.0-py3-none-any.whl.
File metadata
- Download URL: issuedb-1.0.0-py3-none-any.whl
- Upload date:
- Size: 15.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b3016699846297451907f4ea51f7997609f258ef1da729b53957d45f970fdedd
|
|
| MD5 |
262fa2131a039edc6c4665c16b84b454
|
|
| BLAKE2b-256 |
c966d5c1072ea110d3365d6739a1ecf7dd21594abc54dab3dbd6cb59fd207c24
|