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