Your GitHub analytics dashboard — commit heatmaps, language breakdowns, activity patterns, and streaks, all from your real data.
Live at: devpulse-5y2i.onrender.com
- GitHub OAuth Login — Secure login, no passwords stored
- Commit Heatmap — GitHub-style 365-day activity calendar
- Language Distribution — Doughnut chart of every language you've written
- Hourly Activity — Bar chart showing what time of day you code
- Weekly Patterns — Which days you're most productive
- Top Repos — Most active repositories by commit count
- Streaks — Longest and current commit streak tracking
- Auto-sync — Background job refreshes your data every 24 hours
| Layer | Technology |
|---|---|
| Backend | Python 3.11 + Flask |
| Database | SQLite + SQLAlchemy |
| Auth | GitHub OAuth2 |
| Data Source | GitHub REST API v3 |
| Scheduler | APScheduler |
| Charts | Chart.js |
| Frontend | HTML + CSS + Vanilla JS |
| Deployment | Render + Gunicorn |
git init
git add .
git commit -m "Initial commit"
git remote add origin https://github.com/yourusername/devpulse.git
git push -u origin main- Go to github.com/settings/developers
- Click New OAuth App
- Fill in:
- Application name:
DevPulse - Homepage URL:
https://devpulse-5y2i.onrender.com - Authorization callback URL:
https://devpulse-5y2i.onrender.com/callback
- Application name:
- Click Register application
- Copy the Client ID
- Click Generate a new client secret — copy it immediately
- Go to render.com → New → Web Service
- Connect your GitHub repo
- Configure:
- Name:
devpulse← this gives youdevpulse.onrender.com - Build Command:
pip install -r requirements.txt - Start Command:
gunicorn run:app --workers 2 --bind 0.0.0.0:$PORT --timeout 120 - Python Version:
3.11
- Name:
In your Render dashboard → Environment, add these:
| Key | Value |
|---|---|
GITHUB_CLIENT_ID |
from your GitHub OAuth app |
GITHUB_CLIENT_SECRET |
from your GitHub OAuth app |
SECRET_KEY |
a random hex string (see below) |
APP_URL |
https://devpulse-5y2i.onrender.com |
Generate a SECRET_KEY:
python -c "import secrets; print(secrets.token_hex(32))"Hit Deploy. Render will build and deploy automatically. First login and sync takes 30–90 seconds depending on how many repos you have.
Note: The
.envfile in this repo is for reference only — never commit real secrets to git. Always set them via Render's Environment tab.
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txtUpdate .env:
APP_URL=http://localhost:5000Update your GitHub OAuth app callback URL to http://localhost:5000/callback, then:
python run.pyOpen http://localhost:5000.
devpulse/
├── app/
│ ├── __init__.py # App factory
│ ├── scheduler.py # 24hr background sync
│ ├── routes/
│ │ ├── auth.py # GitHub OAuth flow
│ │ ├── dashboard.py # Page rendering
│ │ └── api.py # JSON endpoints
│ ├── models/
│ │ ├── user.py # User model
│ │ └── stats.py # Analytics model
│ ├── services/
│ │ ├── github.py # GitHub API client
│ │ ├── analyzer.py # Analytics engine
│ │ └── sync.py # Data sync orchestrator
│ ├── templates/
│ │ ├── index.html
│ │ └── dashboard.html
│ └── static/
│ ├── css/style.css
│ └── js/dashboard.js
├── config.py
├── run.py
├── Procfile
├── requirements.txt
├── .env
├── .gitignore
├── LICENSE
└── README.md
- DevPulse only requests read-only GitHub access (
read:user,repo) - No data is shared with third parties
- Revoke access anytime at github.com/settings/applications
MIT — see LICENSE


