A beautiful, real-time GitHub team analytics dashboard that provides insights into pull requests, releases, branches, and developer activity. Built with React, TypeScript, Express, and MongoDB.
- π Dashboard Metrics: Real-time view of open PRs, stale PRs, branches, and stale branches
 - π₯ Top Contributors: Weekly leaderboard showing top 3 contributors with merged PRs
 - π Release Tracking: Monitor releases and tags across your repositories
 - πΏ Branch Management: Track active and stale branches with last commit information
 - π Analytics Charts: Visual charts for PRs, releases, and time-to-close metrics
 - π Auto-Refresh: Smart caching with 15-minute TTL and manual refresh option
 - π Dark Mode: Beautiful light and dark themes
 - π Authentication: Secure JWT-based authentication system
 - π± Responsive Design: Works seamlessly on desktop and mobile devices
 
GitTeamPulse/
βββ client/              # React frontend (Vite + TypeScript)
β   βββ src/
β   β   βββ api/        # API client functions
β   β   βββ components/ # React components
β   β   βββ pages/      # Page components
β   β   βββ types/      # TypeScript types
β   βββ package.json
βββ server/             # Express backend (TypeScript)
β   βββ config/        # Database configuration
β   βββ models/        # Mongoose models
β   βββ routes/        # API routes
β   βββ services/      # Business logic
β   βββ utils/         # Utility functions
βββ shared/            # Shared types and constants
βββ package.json       # Root package
- Node.js (v18 or higher)
 - MongoDB (v5 or higher)
 - GitHub Personal Access Token with 
repoandread:orgpermissions 
- 
Clone the repository
git clone <repository-url> cd GitTeamPulse
 - 
Install dependencies
npm install
 - 
Set up environment variables
Create a
.envfile in theserver/directory:cd server cp .env.example .envEdit
server/.envwith your configuration:PORT=3000 DATABASE_URL=mongodb://localhost:27017/GitTeamPulse JWT_SECRET=your-super-secret-jwt-key-change-this REFRESH_TOKEN_SECRET=your-super-secret-refresh-token-key-change-this
 - 
Start MongoDB
# On macOS with Homebrew brew services start mongodb-community # On Linux with systemd sudo systemctl start mongod # Or run directly mongod --dbpath /path/to/data/directory
 - 
Start the application
# From the root directory npm startThis will start both the frontend (port 5173) and backend (port 3000) concurrently.
 - 
Access the application
- Frontend: http://localhost:5173
 - Backend API: http://localhost:3000
 
 
- 
Register a new account
- Navigate to http://localhost:5173/register
 - Create your account with email and password
 
 - 
Configure GitHub Integration
- Go to Settings page
 - Enter your GitHub Personal Access Token
- Create one at: https://github.com/settings/tokens/new
 - Required scopes: 
repo,read:org 
 - Enter your GitHub organization name
 - Add repositories you want to track
 - Click "Save Settings"
 
 - 
Explore the Dashboard
- Home: View metrics, releases, and top contributors
 - Branches: See active and stale branches
 - Charts: Analyze trends with visual charts
 
 
Frontend (client/)
- Built with React 18 + TypeScript
 - Vite for fast development and building
 - Tailwind CSS + shadcn/ui components
 - React Router for navigation
 - Recharts for data visualization
 
Backend (server/)
- Express.js with TypeScript
 - MongoDB with Mongoose ODM
 - JWT authentication
 - GitHub API integration via Octokit
 - Smart caching system
 
# Start development servers
npm start
# Run linting
npm run lint
# Build for production
npm run build
# Run tests (if configured)
npm testClient (cd client/)
npm run dev      # Start Vite dev server
npm run build    # Build for production
npm run preview  # Preview production build
npm run lint     # Run ESLintServer (cd server/)
npm run dev      # Start development server with hot reload
npm run build    # Build TypeScript
npm run start    # Start production server
npm run lint     # Run ESLintPOST /api/auth/register- Register new userPOST /api/auth/login- Login userPOST /api/auth/logout- Logout userPOST /api/auth/refresh- Refresh access tokenGET /api/auth/me- Get current user
All GitHub endpoints require authentication.
GET /api/github/settings- Get GitHub settingsPOST /api/github/settings- Save GitHub settingsGET /api/github/metrics- Get dashboard metricsGET /api/github/activity/weekly- Get weekly activityGET /api/github/branches- Get branchesGET /api/github/charts/merged-prs- Get merged PRs chart dataGET /api/github/charts/releases- Get releases chart dataGET /api/github/charts/closed-prs- Get closed PRs chart dataGET /api/github/charts/avg-time-to-close- Get average time to close chartPOST /api/github/refresh- Clear cache and refresh data
Track key metrics at a glance:
- Open PRs: Total currently open pull requests
 - Stale PRs: PRs open for more than 7 days (with draft/active breakdown)
 - Total Branches: All branches across tracked repositories
 - Stale Branches: Branches with last commit older than 7 days
 
View activity organized by week with:
- Number of releases (with π rocket icon)
 - Top 3 contributors with medal rankings (π₯π₯π₯)
 - Expandable details showing all contributors
 - Merged and closed PR counts
 
Monitor your branches with:
- Active Branches: Last commit within 7 days
 - Stale Branches: Highlighted branches needing attention
 - Developer avatars and names
 - Time since last commit
 - Direct links to GitHub
 
Visualize trends over 12 weeks:
- Merged PRs per week
 - Releases per week
 - Closed (not merged) PRs per week
 - Average time to close PRs
 
- JWT-based authentication with access and refresh tokens
 - Bcrypt password hashing
 - GitHub tokens stored securely and masked in responses
 - Environment variables for sensitive configuration
 - CORS protection
 - Request validation and error handling
 
Frontend
- React 18
 - TypeScript
 - Vite
 - Tailwind CSS
 - shadcn/ui
 - React Router
 - Recharts
 - Axios
 - date-fns
 
Backend
- Node.js
 - Express
 - TypeScript
 - MongoDB
 - Mongoose
 - JWT
 - Octokit (GitHub API)
 - Bcrypt
 
| Variable | Description | Required | 
|---|---|---|
PORT | 
Server port number | Yes | 
DATABASE_URL | 
MongoDB connection string | Yes | 
JWT_SECRET | 
Secret for JWT access tokens | Yes | 
REFRESH_TOKEN_SECRET | 
Secret for JWT refresh tokens | Yes | 
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
 - Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
 
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with shadcn/ui for beautiful UI components
 - Icons from Lucide Icons
 - Charts powered by Recharts
 - GitHub API integration via Octokit
 
If you have any questions or run into issues, please open an issue on GitHub.
Made with β€οΈ using Pythagora