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 with a per-directory database model - each directory gets its own issue database.
Features
Core Features
- Per-Directory Databases: Each directory has its own
issuedb.sqlite- your issues live where your code lives - Simple Issue Management: Create, update, delete, and list issues
- Bulk Operations: Update multiple issues at once with filters, patterns, or JSON input
- 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
- Comments: Add notes and progress updates to issues
Advanced Features
- Issue Dependencies: Block issues on other issues, track dependency graphs
- Code References: Link issues to specific files and line numbers in your codebase
- Time Tracking: Start/stop timers, set estimates, generate time reports
- Workspace Awareness: Track active issues, git branch integration
- Duplicate Detection: Find similar issues before creating duplicates
- Issue Templates: Create issues from predefined templates (bug, feature, task)
- Issue Context: Get comprehensive context for LLM agents
Web Interface
- Web UI: Clean, premium web interface for issue management
- Dashboard: Summary statistics, priority breakdown, active issues
- Issue Browser: Filter and search issues with status/priority badges
- API Endpoints: Full REST API for programmatic access
Dashboard with statistics, priority breakdown, and active issue tracking
Issues list with filtering and search
Create new issue form
Issue detail with async-loaded comments, similar issues, dependencies, and audit history
Complete audit log of all changes
Reporting & Integration
- Summary & Reports: Aggregate statistics and detailed breakdowns by status/priority
- Audit Logging: Complete immutable history of all changes
- JSON Output: Machine-readable output for scripting and automation
- LLM Agent Integration: Built-in prompt for programmatic usage
- Natural Language Interface: Ollama integration for conversational issue management
- Local Storage: SQLite database with no external dependencies
- Minimal Dependencies: Core functionality uses only Python standard library (Flask optional for web UI)
Per-Directory Project Model
IssueDB v2.0 uses a per-directory model where each directory has its own issuedb.sqlite database:
my-workspace/
├── frontend/
│ ├── src/
│ ├── issuedb.sqlite # Frontend issues
│ └── README.md
├── backend/
│ ├── api/
│ ├── issuedb.sqlite # Backend issues
│ └── README.md
└── docs/
├── guides/
└── issuedb.sqlite # Documentation issues
Benefits
- Better isolation: Each project/directory has its own independent database
- Simpler mental model: Your issues are where your code is
- Easier backup: Just backup the directory to preserve all issues
- Natural organization: Filesystem directories already organize projects
- Git-friendly: Database file can be .gitignored or committed per project needs
Working with Multiple Projects
# Work on frontend issues
cd ~/workspace/frontend
issuedb-cli create -t "Fix navbar bug"
issuedb-cli list
# Switch to backend issues
cd ~/workspace/backend
issuedb-cli create -t "Add authentication"
issuedb-cli list
# Each directory maintains its own issues
Installation
From PyPI (when published)
pip install issuedb
With Web UI Support
To use the web interface, install with the web extra:
pip install issuedb[web]
This installs Flask as an optional dependency for the web UI.
From Source
git clone https://github.com/rodmena-limited/issue-queue
cd issuedb
pip install -e .
# Or with web UI support:
pip install -e ".[web]"
Quick Start
Create your first issue
cd ~/my-project
issuedb-cli create --title "Fix login bug" --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
Usage
Creating Issues
Create a new issue:
issuedb-cli create -t "Add user authentication"
With additional details:
issuedb-cli create \
--title "Implement OAuth2" \
--description "Add Google and GitHub OAuth providers" \
--priority high \
--status open
Listing Issues
List all issues in current directory:
issuedb-cli list
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
Bulk Updates
Close all open issues:
issuedb-cli bulk-update --filter-status open -s closed
Set all critical issues to high priority:
issuedb-cli bulk-update --filter-priority critical --priority high
Bulk Operations (JSON)
Create multiple issues at once:
# From stdin
echo '[
{"title": "Issue 1", "priority": "high", "description": "First issue"},
{"title": "Issue 2", "priority": "medium"},
{"title": "Issue 3"}
]' | issuedb-cli --json bulk-create
# From file
issuedb-cli --json bulk-create -f issues.json
# Inline data
issuedb-cli --json bulk-create -d '[{"title": "Quick issue", "priority": "low"}]'
Update multiple specific issues:
# Update different fields on different issues
echo '[
{"id": 1, "status": "closed", "description": "Completed"},
{"id": 2, "priority": "high", "title": "Updated title"},
{"id": 3, "status": "in-progress"}
]' | issuedb-cli --json bulk-update-json
Close multiple issues by ID:
# Close issues 1, 2, 3, and 5
echo '[1, 2, 3, 5]' | issuedb-cli --json bulk-close
# Or from file
issuedb-cli --json bulk-close -f issue_ids.json
Deleting Issues
Delete an issue (with audit trail preserved):
issuedb-cli delete 42
Comments
Add comments to issues to track notes, resolutions, or updates:
# Add a comment to an issue
issuedb-cli comment 42 -t "Fixed by updating the configuration file"
# List all comments on an issue
issuedb-cli list-comments 42
issuedb-cli --json list-comments 42
# Delete a comment
issuedb-cli delete-comment 5
Common use case - close an issue with a comment:
issuedb-cli update 42 -s closed && issuedb-cli comment 42 -t "Resolved: Updated dependencies to v2.0"
Getting Next Issue
Get the highest priority oldest issue:
issuedb-cli get-next
With status filter:
issuedb-cli get-next --status open
Getting Last Fetched Issues
Track which issues were recently retrieved with get-next:
# Get the last issue you fetched
issuedb-cli get-last
# Get the last 5 fetched issues
issuedb-cli get-last -n 5
# JSON output for automation
issuedb-cli --json get-last -n 3
This feature helps you:
- Track what issues you've recently worked on
- Review fetch history even for deleted issues
- Maintain continuity when switching between tasks
Searching Issues
Search by keyword:
issuedb-cli search --keyword "login"
With limit:
issuedb-cli search -k "bug" -l 5
Clearing All Issues
Clear all issues in current directory (requires confirmation):
issuedb-cli clear --confirm
Issue Dependencies
Track blocking relationships between issues:
# Mark issue 5 as blocked by issue 3
issuedb-cli block 5 --by 3
# Remove a specific blocker
issuedb-cli unblock 5 --by 3
# Remove all blockers from an issue
issuedb-cli unblock 5
# View dependency graph for an issue
issuedb-cli deps 5
# List all blocked issues
issuedb-cli blocked
issuedb-cli --json blocked -s open
Code References
Link issues to specific code locations:
# Attach a file reference
issuedb-cli attach 5 --file "src/auth.py"
# Attach with line number
issuedb-cli attach 5 --file "src/auth.py:42"
# Attach with line range and note
issuedb-cli attach 5 --file "src/auth.py:42-50" --note "Bug location"
# List references for an issue
issuedb-cli refs 5
# Find issues referencing a file
issuedb-cli affected --file "src/auth.py"
# Remove a code reference
issuedb-cli detach 5 --file "src/auth.py"
Time Tracking
Track time spent on issues:
# Start a timer
issuedb-cli timer-start 5
# Check timer status
issuedb-cli timer-status
# Stop the timer
issuedb-cli timer-stop
# Set an estimate
issuedb-cli set-estimate 5 --hours 4
# View time log for an issue
issuedb-cli time-log 5
# Generate time reports
issuedb-cli time-report
issuedb-cli time-report --period week
issuedb-cli --json time-report --period month
Workspace Awareness
Track your current working context:
# View workspace status (git branch, active issue, etc.)
issuedb-cli workspace
# Start working on an issue (sets active + starts timer)
issuedb-cli start 5
# Stop working (stops timer)
issuedb-cli stop
# Stop and close the issue
issuedb-cli stop --close
# View currently active issue
issuedb-cli active
Duplicate Detection
Find similar issues to avoid duplicates:
# Find issues similar to a query
issuedb-cli find-similar "login bug"
issuedb-cli --json find-similar "authentication" --threshold 0.7
# Find potential duplicate groups in database
issuedb-cli find-duplicates
issuedb-cli --json find-duplicates --threshold 0.8
# Create with duplicate check
issuedb-cli create -t "Fix login" --check-duplicates
issuedb-cli create -t "Fix login" --check-duplicates --force # Create anyway
Issue Templates
Create issues from predefined templates:
# List available templates
issuedb-cli templates
# Create from template
issuedb-cli create --template bug -t "Login crash" -d "App crashes on login"
issuedb-cli create --template feature -t "Dark mode"
issuedb-cli create --template task -t "Update dependencies"
Issue Context (for LLM Agents)
Get comprehensive context for an issue:
# Full context with comments, history, related issues, suggestions
issuedb-cli context 5
issuedb-cli --json context 5
# Compact context (just issue + comments)
issuedb-cli context 5 --compact
Bulk Pattern Operations
Operate on issues matching patterns:
# Close issues matching a pattern (glob)
issuedb-cli bulk-close-pattern --title "*test*"
# Update issues matching a pattern
issuedb-cli bulk-update-pattern --title "*bug*" --priority high
# Delete with regex pattern (requires --confirm)
issuedb-cli bulk-delete-pattern --title "temp.*" --regex --confirm
# Preview changes with --dry-run
issuedb-cli bulk-close-pattern --title "*WIP*" --dry-run
Viewing Audit Logs
View all changes for an issue:
issuedb-cli audit --issue 42
View all audit logs:
issuedb-cli audit
Database Information
Get database statistics:
issuedb-cli info
Summary Statistics
Get aggregate statistics:
issuedb-cli summary
Summary shows:
- Total issue count
- Count by status (open, in-progress, closed)
- Count by priority (low, medium, high, critical)
- Percentage breakdowns
Detailed Report
Get a detailed report grouped by status:
issuedb-cli report
Get report grouped by priority:
issuedb-cli report --group-by priority
Reports include:
- Full issue details grouped by status or priority
- Count for each group
- Total issues
JSON Output
All commands support JSON output for scripting and automation:
issuedb-cli list --json | jq '.[].title'
issuedb-cli get-next --json | jq '.id'
Command Reference
Commands
Issue Management:
create- Create a new issue (supports templates and duplicate check)list- List issues with optional filtersget- Get details of a specific issueupdate- Update issue fieldsdelete- Delete an issueget-next- Get the next issue to work on (logs to fetch history)get-last- Get the last fetched issue(s) from historysearch- Search issues by keyword
Comments:
comment- Add a comment to an issuelist-comments- List comments for an issuedelete-comment- Delete a comment
Dependencies:
block- Mark an issue as blocked by anotherunblock- Remove blocker(s) from an issuedeps- Show dependency graph for an issueblocked- List all blocked issues
Code References:
attach- Attach a code reference to an issuedetach- Remove a code referencerefs- List code references for an issueaffected- List issues referencing a file
Time Tracking:
timer-start- Start tracking time on an issuetimer-stop- Stop the active timertimer-status- Show active timersset-estimate- Set time estimate for an issuetime-log- View time entries for an issuetime-report- Generate time reports
Workspace:
workspace- Show workspace statusstart- Start working on an issuestop- Stop working on active issueactive- Show currently active issuecontext- Get full context for an issue (for LLM agents)
Duplicate Detection:
find-similar- Find issues similar to given textfind-duplicates- Find potential duplicate groups
Templates:
templates- List available issue templates
Bulk Operations:
bulk-update- Bulk update by filterbulk-create- Create multiple issues from JSONbulk-update-json- Update specific issues from JSONbulk-close- Close multiple issues by IDbulk-close-pattern- Close issues matching patternbulk-update-pattern- Update issues matching patternbulk-delete-pattern- Delete issues matching pattern
Reporting:
summary- Get summary statisticsreport- Get detailed reportinfo- Get database informationaudit- View audit logs
Administrative:
clear- Clear all issuesweb- Start the web UI server
Global Options
--db PATH- Use a custom database file (default: ./issuedb.sqlite)--json- Output results in JSON format--prompt- Display LLM agent guide for automated usage--ollama REQUEST...- Generate and execute command from natural language via Ollama (no quotes needed, must be last flag)--ollama-model MODEL- Ollama model to use (default: llama3) - must come before --ollama--ollama-host HOST- Ollama server host (default: localhost) - must come before --ollama--ollama-port PORT- Ollama server port (default: 11434) - must come before --ollama
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
# Navigate to your project
cd ~/my-project
# Create some issues
issuedb-cli create -t "Setup CI/CD pipeline" --priority high
issuedb-cli create -t "Add unit tests" --priority medium
issuedb-cli create -t "Update documentation" --priority low
# Get the next issue to work on
issuedb-cli get-next
# 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 --status open
Multi-Project Workflow
# Work on frontend
cd ~/projects/frontend
issuedb-cli create -t "Fix navbar styling"
issuedb-cli list
# Work on backend
cd ~/projects/backend
issuedb-cli create -t "Add authentication endpoint"
issuedb-cli list
# Each project maintains its own issues
Integration with Scripts
#!/bin/bash
# Get next issue ID and mark it as in-progress
cd ~/my-project
ISSUE_ID=$(issuedb-cli get-next --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
import os
def get_next_issue(project_dir):
os.chdir(project_dir)
result = subprocess.run(
["issuedb-cli", "get-next", "--json"],
capture_output=True,
text=True
)
return json.loads(result.stdout) if result.returncode == 0 else None
def create_issue(project_dir, title, description=None, priority="medium"):
os.chdir(project_dir)
cmd = ["issuedb-cli", "create",
"--title", title,
"--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
Advanced LLM Agent Integration
IssueDB provides a specialized prompt optimized for LLM agents to use the CLI directly:
# Get the LLM agent guide
issuedb-cli --prompt
This outputs a comprehensive guide that instructs LLM agents to:
- Output only executable shell commands (no markdown, no explanations)
- Use proper syntax and quoting
- Leverage JSON output for machine parsing
- Follow FIFO priority-based workflows
Example LLM agent workflow:
import subprocess
import json
import os
# Get the agent prompt to include in your LLM context
prompt = subprocess.run(["issuedb-cli", "--prompt"], capture_output=True, text=True).stdout
# Your LLM can now generate direct issuedb-cli commands
# Example: User says "Create a high priority bug for login issues"
# LLM outputs: issuedb-cli create -t "Fix login bug" --priority high
# Execute the command in the correct directory
os.chdir("~/my-project")
result = subprocess.run(llm_generated_command.split(), capture_output=True, text=True)
The prompt ensures LLM agents generate commands that are:
- Directly executable without post-processing
- Properly quoted for shell safety
- Machine-readable when using --json flag
- Priority-aware for optimal workflow
Natural Language Interface with Ollama
IssueDB can integrate directly with Ollama for natural language command generation:
# Use natural language to create issues (no quotes needed!)
issuedb-cli --ollama we have many junk files and we need to fix it fast
# Get the next task to work on
issuedb-cli --ollama what should I work on next
# Search for issues
issuedb-cli --ollama find all critical bugs
# Update issues
issuedb-cli --ollama mark issue 42 as completed
# With custom model (model flag must come BEFORE --ollama)
issuedb-cli --ollama-model mistral --ollama create a high priority bug for login
Setup
- Install and start Ollama:
# Install Ollama
curl https://ollama.ai/install.sh | sh
# Pull a model (e.g., llama3, mistral, codellama)
ollama pull llama3
# Start Ollama server
ollama serve
- Use issuedb-cli with natural language:
cd ~/my-project
issuedb-cli --ollama create a critical bug for login failures
Configuration
Configure Ollama connection via command-line flags or environment variables:
# Command-line flags (--ollama must be LAST)
issuedb-cli --ollama-model mistral --ollama-host localhost --ollama-port 11434 --ollama your request here
# Environment variables
export OLLAMA_HOST=localhost
export OLLAMA_PORT=11434
export OLLAMA_MODEL=llama3
issuedb-cli --ollama create a bug for the payment system
Default values:
- Model:
llama3(or fromOLLAMA_MODELenv) - Host:
localhost(or fromOLLAMA_HOSTenv) - Port:
11434(or fromOLLAMA_PORTenv)
How It Works
- Ollama receives your natural language request
- The agent prompt guides the LLM to generate a valid issuedb-cli command
- The command is automatically validated and executed
- Results are displayed in your terminal
The integration uses only Python standard library (urllib), keeping the package dependency-free.
Web UI
IssueDB includes an optional web interface for visual issue management.
Starting the Web Server
# Start on default port (7760)
issuedb-cli web
# Custom port and host
issuedb-cli web --port 8080 --host localhost
# Enable debug mode for development
issuedb-cli web --debug
Web Features
- Dashboard: Overview with statistics, next issue, active issue, recent issues
- Issues List: Browse all issues with status/priority filters and search
- Issue Detail: Full issue view with comments, quick actions, dependency info
- Create/Edit Forms: Create and modify issues through the web interface
API Endpoints
The web server exposes REST API endpoints:
# List all issues
curl http://localhost:7760/api/issues
# Get specific issue
curl http://localhost:7760/api/issues/5
# Create issue
curl -X POST http://localhost:7760/api/issues \
-H "Content-Type: application/json" \
-d '{"title": "New issue", "priority": "high"}'
# Update issue
curl -X PATCH http://localhost:7760/api/issues/5 \
-H "Content-Type: application/json" \
-d '{"status": "closed"}'
# Delete issue
curl -X DELETE http://localhost:7760/api/issues/5
# Get summary statistics
curl http://localhost:7760/api/summary
# Get next issue
curl http://localhost:7760/api/next
# Add comment
curl -X POST http://localhost:7760/api/issues/5/comments \
-H "Content-Type: application/json" \
-d '{"text": "Comment text"}'
Requirements
The web UI requires Flask (installed separately):
pip install flask
Database
IssueDB uses a local SQLite database stored at ./issuedb.sqlite in the current directory. 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 in each directory.
Custom Database Location
You can specify a custom database path:
issuedb-cli --db ~/custom/location/issues.db create -t "Test"
Testing
Run the test suite:
pytest
Run with coverage:
pytest --cov=issuedb
Development
Setup Development Environment
# Clone the repository
git clone https://github.com/rodmena-limited/issue-queue
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
Apache License 2.0 - 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
Completed
- Issue templates (bug, feature, task)
- Issue relationships (blocks, depends on)
- Code references (link issues to files/lines)
- Time tracking (timers, estimates, reports)
- Workspace awareness (active issue, git integration)
- Duplicate detection (similarity search)
- LLM agent context command
- Bulk pattern operations
Planned
- Export/import functionality
- Tags/labels support
- Due dates
- Web UI (optional)
- Backup and restore utilities
- Git hooks integration
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-2.5.3.tar.gz.
File metadata
- Download URL: issuedb-2.5.3.tar.gz
- Upload date:
- Size: 123.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
576ac0f06df1704ba6b9f8409d72188652f6bf1542bb3e94b1f97cf6ae3eb605
|
|
| MD5 |
2c4aff4a48fe1348a1dfd99693257f6d
|
|
| BLAKE2b-256 |
12fbc8d4d21fcf72ade547dd44f1ccfae26d1f8e22f078b587f03e2731218070
|
File details
Details for the file issuedb-2.5.3-py3-none-any.whl.
File metadata
- Download URL: issuedb-2.5.3-py3-none-any.whl
- Upload date:
- Size: 79.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 |
b1b63e8c0b43d844c22337b9ea36fec29a8dfad0b26594273068721bb302652b
|
|
| MD5 |
5e4b42ff28e8b6511b36275db3d2b560
|
|
| BLAKE2b-256 |
dbcee5f93ac5ab0ffa2769176f1861189ef8af2de4c91dbf0714530761333f9a
|