The global open-source developer discovery platform β search, compare, and connect with the people behind the code
26,000+ developers Β· ranked by stars, commits, repo reach & StackOverflow reputation Β· searchable by skill, location & language
DevGlobe is an interactive global developer network built for engineering teams, open-source communities, and the emerging ecosystem of AI agents. It combines a 3D developer map with Azure Cosmos DB vector and hybrid search to surface relevant expertise from real contribution signals rather than popularity alone. The long-term vision is a consent-aware discovery layer where AI agents can find the right human collaborators.
Important
Connect an AI agent to DevGlobe: MCP-compatible agents can use the hosted endpoint at https://www.devglobe.dev/mcp to search public developer profiles without credentials. Verified agents can also request developer-approved introductions. See the MCP setup guide.
- Interactive 3D Globe β Explore developers pinned to their real-world locations using Three.js
- AI-Powered Search β Hybrid + vector search via Azure Cosmos DB (e.g. "AI & deep learning", "full stack JS dev")
- Composite Scoring β Each developer scored 0β100 across 6 dimensions
- Leaderboard β Filter by country, language, or sort by score/stars/commits
- Developer Profiles β Click any pin to see detailed stats, top repos, and contribution breakdown
- Remote MCP Access β Agents can discover developers and request consent-gated introductions through hosted tools
- Mobile Responsive β Bottom-sheet filters and full-width search on smaller screens
git clone https://github.com/sajeetharan/devglobe.git
cd devglobe
npm install
npm run dev
# Open http://localhost:3000The app automatically falls back to the bundled sample data (20 developers) when no Cosmos DB credentials are configured. No API keys, no emulator, no setup β just clone and run.
Text search works fully offline. Vector/hybrid search requires Azure OpenAI (see Option 3).
For contributors working on the API layer or data pipeline:
-
Install the Cosmos DB Emulator β Download here (Windows, macOS via Docker, or Linux Docker)
-
Start the emulator and wait for it to be ready at
https://localhost:8081 -
Seed sample data into the emulator:
npm run seed-emulator
-
Create
.env.local(the seed script prints this for you):COSMOS_ENDPOINT=https://localhost:8081 COSMOS_KEY=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==
-
Run the app:
npm run dev
The emulator key above is Microsoft's well-known emulator key β it is intentionally public and only works locally.
For the complete experience including AI-powered search:
# .env.local
COSMOS_ENDPOINT=https://your-account.documents.azure.com:443/
COSMOS_KEY=your-cosmos-key
AZURE_OPENAI_ENDPOINT=https://your-openai.openai.azure.com/
AZURE_OPENAI_KEY=your-openai-key
EMBEDDING_DEPLOYMENT=text-embedding-3-smallnpm run dev| Layer | Technology |
|---|---|
| Frontend | React 19, Three.js (react-globe.gl), Next.js 15 |
| Search | Azure Cosmos DB (vector + hybrid search) |
| API | Next.js API Routes |
| Hosting | Vercel |
| Data Pipeline | Node.js scripts (GitHub GraphQL, StackOverflow API, geocoding) |
| Dimension | Weight | Source |
|---|---|---|
| GitHub Stars | 20% | Total stars across repos |
| GitHub Commits | 20% | Yearly commit activity |
| Repo Reach | 15% | Forks + watchers |
| SO Reputation | 25% | StackOverflow reputation |
| SO Engagement | 15% | Answer acceptance Γ count |
| Community | 5% | Followers + badges |
All dimensions are log-normalized to prevent outlier domination.
Requires API keys β copy .env.example to .env and fill in your tokens.
npm run fetch-github # Fetch top devs from GitHub GraphQL
npm run fetch-stackoverflow # Enrich with StackOverflow reputation
npm run geocode # Convert locations to lat/lng
npm run build-data # Run full pipeline
npm run upload-cosmos # Upload to Azure Cosmos DBVerified community credentials are stored explicitly on each developer document. Do not infer them from stars, followers, or profile text.
{
"login": "example",
"specialTags": ["github-star", "microsoft-mvp", "aws-community-builder"]
}Supported IDs: github-star, microsoft-mvp, google-developer-expert, docker-captain, cncf-ambassador, aws-hero, and aws-community-builder. The legacy docker-champion ID remains supported. The upload script preserves this field from source JSON, and the list, detail, and search APIs project it from Cosmos DB.
Populate exact GitHub-login matches from the official GitHub Stars, Google Developer Experts, and CNCF Ambassadors rosters:
npm run populate-special-tags # Dry run
npm run populate-special-tags -- --apply # Patch verified matches in Cosmos DBThe command preserves existing tags and is idempotent. Other credentials require an official profile that explicitly identifies the developer's GitHub account; do not populate them by matching display names.
βββ index.html # Entry HTML
βββ src/
β βββ main.jsx # App bootstrap + Vercel Analytics
β βββ App.jsx # Root component, data loading
β βββ components/
β β βββ Globe.jsx # 3D globe (react-globe.gl)
β β βββ Leaderboard.jsx # Ranked sidebar with filters
β β βββ SearchBar.jsx # Hybrid/vector search input
β β βββ DetailPanel.jsx # Developer detail card
β β βββ Header.jsx # Top bar with branding
β β βββ LoadingOverlay.jsx # Loading state
β βββ utils/
β βββ scoring.js # Composite scoring algorithm
β βββ format.js # Number formatting helpers
βββ api/
β βββ developers.js # List all developers
β βββ developer.js # Single developer lookup
β βββ search.js # Cosmos DB vector/hybrid search
βββ scripts/ # Data pipeline scripts
βββ styles/main.css # Dark theme styles
βββ data/
βββ developers-sample.json # Sample data for local dev
npx vercelRequired environment variables:
| Variable | Purpose |
|---|---|
COSMOS_ENDPOINT |
Azure Cosmos DB endpoint |
COSMOS_KEY |
Azure Cosmos DB key |
COSMOS_DATABASE |
Database name |
COSMOS_CONTAINER |
Container name |
COSMOS_ACTIVITY_CONTAINER |
Rolling GitHub activity container (activities) |
COSMOS_CONTACTS_CONTAINER |
Private lifecycle-email contact container (developer-contacts) |
ACTIVITY_INGEST_SECRET |
Bearer secret for the activity collector endpoint |
RESEND_API_KEY |
Optional Resend API key for claim and approval emails |
EMAIL_FROM |
Sender on a domain verified by Resend |
CRON_SECRET |
Bearer token used by Vercel Cron for the weekly digest endpoint |
EMAIL_PREFERENCE_SECRET |
HMAC secret for weekly-email unsubscribe links; defaults to SESSION_SECRET |
Lifecycle emails are transactional and best-effort. Claims use the verified primary email authorized through GitHub OAuth; self-nominations collect an explicitly consented notification address. Addresses are stored only in the private developer-contacts container and are never projected by public APIs or copied into developer documents. Create the container before deployment:
npm run setup-contacts-containerSee the lifecycle email PRD.
Verified users can explicitly opt in to a Monday weekly digest from the user menu. The digest includes current global and country rankings, rank movement since the previous digest, current DevGlobe features, and an Explore DevGlobe link. Vercel invokes /api/cron/weekly-digest at 13:00 UTC each Monday; only verified contacts with productUpdatesEnabled: true are eligible. Each message uses a per-user, per-week idempotency key and includes one-click unsubscribe headers and a signed unsubscribe link.
The Activity tab is anonymous and shows a rolling 24-hour feed for indexed developers. Create its dedicated Cosmos container before deployment:
npm run setup-activity-containerDeploy functions/activity-ingest as an Azure Timer Function and configure these application settings:
ACTIVITY_INGEST_URL=https://your-site.example/api/activities/ingest
ACTIVITY_INGEST_SECRET=the-same-secret-configured-on-the-siteThe timer invokes the collector every minute, matching GitHub's advertised polling interval. GitHub's public Events API is best-effort and may delay or omit events; the 15-second browser refresh does not guarantee GitHub source delivery within that interval. A valid GITHUB_TOKEN is required for full three-page collection; anonymous fallback inspects one page only. The Cosmos activity container uses a 48-hour TTL while the API exposes only the latest 24 hours.
Contributions are welcome! See CONTRIBUTING.md for setup instructions and areas where help is needed.
DevGlobe exposes a hosted Streamable HTTP MCP endpoint for public developer discovery and consent-gated agent introductions:
https://www.devglobe.dev/mcp
Public search and profile lookup work anonymously. Introduction requests and status polling require an issued agent credential. A local stdio connector remains available for clients that do not support remote MCP:
npm run mcpSee docs/mcp-server.md for credential provisioning, Cosmos DB setup, client configuration, and the consent lifecycle. docs/agent-readiness.md documents machine-readable discovery, WebMCP, and the external DNS-AID deployment steps.
MIT β see LICENSE for details.
β Star this repo if you find it useful!
Built with β€οΈ by @sajeetharan