A tool for analyzing Jira metrics including lead time, cycle time, throughput, and work in progress.
- Lead Time Analysis
- Cycle Time Analysis
- Throughput Metrics
- Work in Progress (WIP) Tracking
- Cumulative Flow Diagram (CFD)
- Configurable Workflow States
- Named Configuration Management
- Docker Support
The application supports saving and managing multiple named configurations. Each configuration includes:
- Jira API credentials
- Default JQL query
- Workflow states
- Lead time start/end states
- Cycle time start/end states
Configurations can be:
- Created and saved for future use
- Selected to quickly load settings
- Updated as needed
- Deleted when no longer required
-
Clone the repository
-
Create environment file:
# Copy and customize environment variables cp .env.example .env
-
Start the application:
docker-compose up --build
-
Access the application:
- Frontend: http://localhost:80 (or your configured FRONTEND_PORT)
- Backend API: http://localhost:8000 (or your configured BACKEND_PORT)
- API Documentation: http://localhost:8000/docs
# Docker configuration
BACKEND_PORT=8000
FRONTEND_PORT=80
NODE_ENV=development
# Default Jira configuration (optional)
JIRA_SERVER=https://your-domain.atlassian.net
JIRA_EMAIL=[email protected]
JIRA_API_TOKEN=your-api-token
JQL_QUERY="project = PROJ AND type = Story"
WORKFLOW_STATES='["Backlog", "In Progress", "Done"]'
LEAD_TIME_START_STATE=Backlog
LEAD_TIME_END_STATE=Done
CYCLE_TIME_START_STATE="In Progress"
CYCLE_TIME_END_STATE=Done
All configuration is managed through the root .env
file. These settings provide default values that can be overridden by saved configurations in the UI.
The backend service will use these values for its initial configuration, and they can be modified through the configuration management interface once the application is running.
- Docker
- Docker Compose
- Python 3.x (for pre-commit hooks)
-
Start the services with volume mounts:
docker-compose up
-
The following paths are mounted for development:
- Backend:
./backend/app:/app/app
- Backend tests:
./backend/tests:/app/tests
- Frontend nginx config:
./frontend/nginx.conf:/etc/nginx/conf.d/default.conf
- Backend:
-
Data persistence:
- SQLite database is stored in a Docker volume:
jira-analyzer-data
- Configurations persist between container restarts
- SQLite database is stored in a Docker volume:
Backend tests:
docker-compose exec backend pytest
Frontend tests:
docker-compose exec frontend pnpm test
This project uses pre-commit hooks to ensure code quality and consistency. Pre-commit hooks run automatically when you attempt to commit changes, checking for issues like code formatting, linting errors, and failing tests.
-
Install pre-commit and set up the hooks:
make install make setup-pre-commit
-
The pre-commit hooks will now run automatically on
git commit
. They include:- Code formatting (with auto-fix for both frontend and backend)
- Linting for Python and TypeScript
- Type checking
- Security checks
- Tests
-
To manually run all pre-commit hooks on all files:
make pre-commit-run
-
If a pre-commit hook fails, the commit will be aborted. Fix the issues and try committing again.
-
To format all frontend files manually:
cd frontend && pnpm run format
-
To format all backend files manually:
cd backend && ruff format app tests
-
If you need to bypass pre-commit hooks temporarily (not recommended):
git commit -m "Your message" --no-verify
-
Update environment variables:
NODE_ENV=production
-
Deploy with Docker Compose:
docker-compose -f docker-compose.yml up --build -d
- REST API endpoints for metrics and configuration
- SQLite database for configuration storage
- Jira API integration
- Metric calculations:
- Lead Time
- Cycle Time
- Throughput
- Work in Progress (WIP)
- Cumulative Flow Diagram (CFD)
- Configuration management UI
- Interactive metric visualizations
- Responsive design
- Real-time updates
-
Backend:
- Python 3.11 base image
- FastAPI application server
- SQLite database
- Volume mounts for development
- Health checks
-
Frontend:
- Multi-stage build
- nginx server
- Reverse proxy to backend
- Health checks
- Fork the repository
- Create a feature branch
- Add tests for new functionality
- Ensure all tests pass and pre-commit hooks succeed
- Create a Pull Request