A Developer Productivity and DORA Metrics Dashboard that analyzes GitHub repositories to calculate and display DORA (DevOps Research and Assessment) metrics.
- Real-time DORA metrics calculation
- GitHub repository analysis
- Interactive dashboard
- Configurable repository selection
DoraPulse calculates the four key metrics defined by the DORA (DevOps Research and Assessment) team:
-
Deployment Frequency
- How often an organization successfully releases to production
- Elite performers: Multiple deployments per day
- Metric shows: Release cadence and batch size
-
Lead Time for Changes
- Time taken from code commit to code running in production
- Elite performers: Less than one hour
- Metric shows: Process efficiency and deployment pipeline health
-
Mean Time to Recovery (MTTR)
- How long it takes to restore service after an incident
- Elite performers: Less than one hour
- Metric shows: Incident response effectiveness
-
Change Failure Rate
- Percentage of changes that lead to degraded service
- Elite performers: 0-15%
- Metric shows: Quality of testing and review processes
- Official DORA Research Program
- Google Cloud's DORA Metrics
- DORA's State of DevOps Reports
- DORA Metrics in GitHub
- Accelerate: The Science of Lean Software - The book that introduced DORA metrics
Below are the performance categories for each metric according to DORA research:
| Metric | Elite | High | Medium | Low |
|---|---|---|---|---|
| Deployment Frequency | On-demand | Weekly to monthly | Monthly to yearly | Yearly or less |
| Lead Time for Changes | < 1 hour | 1 day to 1 week | 1 month to 6 months | > 6 months |
| MTTR | < 1 hour | < 1 day | < 1 week | > 1 week |
| Change Failure Rate | 0-15% | 16-30% | 31-45% | > 45% |
- Python 3.8 or higher
- Node.js 16 or higher
- Poetry (Python dependency management)
- npm (Node.js package manager)
- GitHub Personal Access Token with following scopes:
repo(full repository access)read:userread:org
DoraPulse/
├── backend/ # FastAPI backend
│ ├── auth/ # Authentication handling
│ ├── common/ # Shared utilities
│ └── metrics/ # DORA metrics calculation
└── frontend/ # React + Vite frontend
├── src/ # Source code
└── public/ # Static assets
git clone https://github.com/chandanrattan/DoraPulse.git
cd DoraPulse-
Navigate to backend directory:
cd backend -
Install Poetry (if not already installed):
curl -sSL https://install.python-poetry.org | python3 - -
Install dependencies:
poetry install
-
Navigate to frontend directory:
cd frontend -
Install dependencies:
npm install
-
Set up environment variables:
cp .env.template .env
Then edit
.envfile and add your:- GitHub Personal Access Token
- Target repository name
cd backend
poetry run uvicorn main:app --reloadThe backend will be available at http://127.0.0.1:8000
In a new terminal:
cd frontend
npm run devThe frontend will be available at http://localhost:5173
# API URL (default for local development)
VITE_API_URL=http://127.0.0.1:8000
# Your GitHub Personal Access Token
VITE_GITHUB_TOKEN=your_github_token_here
# Repository to analyze (format: owner/repo)
VITE_GITHUB_REPO=owner/repository
-
All Metrics Show 0
- Verify your GitHub token has required permissions
- Check if the repository exists and has pull requests
- Look for error messages in browser console (F12)
- Verify the repository name format is correct (owner/repo)
-
Cannot Connect to Backend
- Ensure backend is running (http://127.0.0.1:8000)
- Check VITE_API_URL in frontend .env file
- Look for CORS errors in browser console
-
GitHub API Errors
- Verify token permissions include 'repo' access
- Check if you've hit API rate limits
- Verify repository name is correct
cd backend poetry install -
Create
.envfile:cp .env.example .env # Edit .env with your GitHub token and repository details -
Run the server:
poetry run uvicorn main:app --reload
-
Install Node.js:
-
Download Node.js LTS version from nodejs.org
-
Run the installer and follow the installation steps
-
Verify installation by running:
node --version npm --version
-
-
Install dependencies:
cd frontend npm install -
Create
.envfile:cp .env.example .env # Set VITE_API_URL=http://localhost:8000 -
Run the development server:
npm run dev
The frontend will be available at http://localhost:5173
-
Start the Backend:
cd backend poetry run uvicorn main:app --reloadThe backend API will be available at http://localhost:8000
-
Start the Frontend (in a new terminal):
cd frontend npm run dev -
Access the Application:
- Open http://localhost:5173 in your browser
- Login using your GitHub Personal Access Token (PAT)
- The dashboard will display your DORA metrics
GITHUB_TOKEN=your_github_token_here
GITHUB_REPO=owner/repository_nameVITE_API_URL=http://localhost:8000- Ensure Poetry is installed and in your PATH
- Verify GitHub token has correct permissions (needs
reposcope) - Check backend logs for detailed error messages
- Ensure all dependencies are installed with
poetry install - Verify
.envfile exists with correct values
-
Ensure Node.js and npm are installed correctly
-
Clear browser cache and localStorage:
- Open browser DevTools (F12)
- Go to Application → Storage → Clear Site Data
-
Verify the API URL in frontend
.envfile -
Check browser console for error messages
-
If needed, reinstall dependencies:
rm -rf node_modules npm install
-
GitHub Token Problems:
- Ensure token has required permissions (needs
reposcope) - Token should be valid and not expired
- Verify token works by testing in GitHub API
- Ensure token has required permissions (needs
-
API Connection Issues:
- Confirm backend is running (
http://localhost:8000) - Check frontend
.envhas correct API URL - Verify no CORS issues in browser console
- Confirm backend is running (
-
Session Issues:
- Clear browser localStorage
- Log out and log in again
- Ensure token is being stored correctly
-
"Could not validate credentials":
- Check GitHub token permissions
- Verify token is not expired
- Ensure token is correctly set in backend
.env
-
"Cannot connect to API":
- Verify backend server is running
- Check correct ports are being used
- Ensure no firewall blocking
-
"Module not found":
- Run
npm installin frontend directory - Check
package.jsonfor correct dependencies - Verify node_modules directory exists
- Run
-
Backend Issues:
- Ensure Poetry is installed and in your PATH
- Verify GitHub token has correct permissions
- Check backend logs for detailed error messages
- Ensure all dependencies are installed:
poetry install
-
Frontend Issues:
- Ensure Node.js and npm are installed
- Clear browser cache and localStorage
- Verify API URL in frontend .env file
- Check browser console for error messages
- Reinstall dependencies if needed:
rm -rf node_modules && npm install
-
Authentication Issues:
- Ensure GitHub token has required permissions
- Check if backend is running and accessible
- Verify the correct API URL in frontend .env
- Try clearing browser localStorage
-
Common Error Solutions:
- "Could not validate credentials": Check GitHub token and permissions
- "Cannot connect to API": Verify backend is running
- "Module not found": Run
npm installin frontend directory