DevPulse
Developer Productivity Dashboard β Track commits, PRs, issues, and coding metrics across GitHub, GitLab, and Bitbucket
Features
- Multi-provider support β GitHub, GitLab, and Bitbucket
- Unified dashboard β Commits, PRs, issues, and code changes in one view
- Activity charts β Visualize your coding activity over time
- Language breakdown β See your language distribution across repos
- Top repositories β Track your most active and popular repos
- Productivity metrics β PR merge rate, avg PR size, commit streak
- Time range filters β 7 days, 30 days, 90 days, 1 year, all time
- Token security β Tokens stored locally in browser, sent only to your self-hosted server
- Dark theme β Easy on the eyes for those late-night coding sessions
- Docker-ready β Full containerized deployment with docker-compose
Architecture
Browser (React + Vite)
β
βββ Zustand store (persisted settings)
β
βΌ
DevPulse API Server (Express)
β
βββ GitHub Provider β GitHub REST API
βββ GitLab Provider β GitLab REST API
β
βΌ
Aggregator β Merged DashboardData
Quick Start
Development
npm install
npm run dev # Frontend on :5175
npm run dev:server # API server on :3002
Docker
docker-compose up
- Web UI: http://localhost:5175
- API: http://localhost:3002
Usage
- Add a provider β Go to Settings, select GitHub/GitLab, enter your username and access token
- Select time range β Use the sidebar to filter by 7d, 30d, 90d, 1y, or all time
- View your dashboard β See commits, PRs, issues, charts, and metrics
- Refresh β Click refresh to fetch latest data from your providers
Creating Access Tokens
- GitHub: Settings β Developer settings β Personal access tokens (needs
reposcope) - GitLab: Preferences β Access Tokens (needs
read_apiscope) - Bitbucket: Personal settings β App passwords (needs
readpermissions)
Project Structure
devpulse/
βββ src/
β βββ components/
β β βββ Sidebar.tsx
β β βββ Dashboard.tsx
β β βββ StatCard.tsx
β β βββ ActivityChart.tsx
β β βββ LanguageBreakdown.tsx
β β βββ RecentActivity.tsx
β β βββ TopRepos.tsx
β β βββ Settings.tsx
β β βββ EmptyState.tsx
β βββ types.ts
β βββ store.ts
β βββ api.ts
β βββ App.tsx
β βββ main.tsx
β βββ index.css
βββ server/
β βββ providers/
β β βββ github.ts
β β βββ gitlab.ts
β βββ aggregator.ts
β βββ utils.ts
β βββ index.ts
βββ tests/
β βββ utils.test.ts
β βββ aggregator.test.ts
βββ Dockerfile
βββ Dockerfile.api
βββ docker-compose.yml
βββ nginx.conf
βββ package.json
Development
npm install
npm run dev # Start frontend dev server
npm run dev:server # Start API server
npm test # Run tests
npm run typecheck # Type checking
npm run lint # Lint
npm run build # Build for production
Tech Stack
- Frontend: React 18, Vite, TailwindCSS, Recharts, Zustand, Lucide icons
- Backend: Express, TypeScript, node-fetch
- Testing: Vitest
- Deployment: Docker, Nginx
License
MIT