A developer activity tracking platform that aggregates GitHub contributions, competitive programming stats, coding time, and more into a clean unified dashboard.
Live at devact.vercel.app
Built with the MERN stack (MongoDB, Express, React, Node.js).
| Feature | Description |
|---|---|
| GitHub Tracker | Monitor commits, PRs, and contribution streaks across all repositories |
| CP Tracker | Codeforces ratings, LeetCode progress, and full contest history |
| Repo Visualizer | Language breakdowns, star counts, and activity across your repos |
| Practice Review | Problems you attempted but didn't solve — with editorial links |
| WakaTime Integration | Weekly coding time and per-language breakdown |
| Stack Overflow | Reputation, badges, and top answers |
| npm / PyPI Packages | Weekly download stats for your open-source packages |
| Trend Charts | 30-day history charts for ratings, solved count, and GitHub stars |
| Shadow Dashboard | Toggle into the "Shadow Board" to view anti-metrics like longest zero-commit streak and abandoned repos |
| Skill Decay Monitor | Track languages and CP tags you haven't touched in >30 days and discover quick refresher tasks |
| Public Profile | Shareable developer profile at /u/:username |
| Authentication | JWT-based login, registration, and GitHub OAuth |
- Frontend: React (Vite), React Router, Recharts, Axios
- Backend: Node.js, Express.js, Passport.js
- Database: MongoDB Atlas, Mongoose
- Auth: JWT (httpOnly cookies), bcryptjs, GitHub OAuth2
- APIs: GitHub REST, Codeforces, LeetCode GraphQL, WakaTime, Stack Overflow, npm Registry, PyPI
- Deployment: Vercel (monorepo — client + server)
devact/
├── client/ # React frontend (Vite)
│ └── src/
│ ├── api/ # Axios instance
│ ├── components/ # Navbar, Footer, ProtectedRoute
│ ├── context/ # AuthContext
│ └── pages/ # Dashboard, GitHubTracker, CPTracker, RepoVisualizer,
│ # PracticeReview, Profile, ManageAccount, PublicProfile
├── server/ # Express backend
│ ├── config/ # DB connection, Passport config
│ ├── controllers/ # Route handlers
│ ├── cron/ # Daily sync cron job
│ ├── middleware/ # Auth + rate limiter
│ ├── models/ # Mongoose schemas (User, SyncData, DailySnapshot)
│ ├── routes/ # API route definitions
│ └── services/ # External API integrations
├── .env.example # Environment variables template
└── package.json # Root scripts (concurrently)
- Node.js >= 18
- MongoDB (local or Atlas)
# Clone the repo
git clone https://github.com/parth2711/devact.git
cd devact
# Copy environment config and fill in values
cp .env.example .env
# Install all dependencies (root + server + client)
npm run install-all
# Start development (client + server concurrently)
npm run devClient runs on http://localhost:5173, server on http://localhost:5000.
| Variable | Required | Description |
|---|---|---|
MONGO_URI |
✅ | MongoDB connection string |
JWT_SECRET |
✅ | Secret for signing JWT tokens |
FRONTEND_URL |
✅ | Frontend origin for CORS (e.g. http://localhost:5173) |
ENCRYPTION_KEY |
✅ | Exactly 32-byte key for encrypting WakaTime tokens |
JWT_EXPIRE |
No | Token expiry duration (default: 7d) |
GITHUB_TOKEN |
Recommended | GitHub PAT — raises API rate limit from 60 to 5000/hr |
GITHUB_CLIENT_ID |
OAuth | GitHub OAuth App client ID |
GITHUB_CLIENT_SECRET |
OAuth | GitHub OAuth App client secret |
GEMINI_API_KEY |
AI features | Google Gemini API key for AI insights |
| Script | Description |
|---|---|
npm run dev |
Start client + server concurrently |
npm run client |
Start React dev server only |
npm run server |
Start Express server only |
npm run install-all |
Install all dependencies |
| Branch | Purpose |
|---|---|
main |
Production — auto-deploys to Vercel |
development |
Active development — features merge here first |
feature/* |
Individual feature branches |
- Handle changes: If you change your GitHub username or Codeforces handle and update your profile, old
DailySnapshotentries remain. Trend charts may show a temporary discontinuity until new snapshots accumulate. - WakaTime sync: Requires a valid API key configured in your profile. Data reflects the past 7 days as returned by the WakaTime API.
This project is licensed under the MIT License.