Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

240 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🌐 DevGlobe β€” Developer Discovery for Humans and AI Agents

The global open-source developer discovery platform β€” search, compare, and connect with the people behind the code

Live Demo GitHub Stars License PRs Welcome

DevGlobe Demo

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.

🎬 Watch the DevGlobe Demo


✨ Features

  • 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

πŸš€ Quick Start

Option 1: Zero-config (sample data, no database needed)

git clone https://github.com/sajeetharan/devglobe.git
cd devglobe
npm install
npm run dev
# Open http://localhost:3000

The 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).


Option 2: Cosmos DB Emulator (full database experience locally)

For contributors working on the API layer or data pipeline:

  1. Install the Cosmos DB Emulator β€” Download here (Windows, macOS via Docker, or Linux Docker)

  2. Start the emulator and wait for it to be ready at https://localhost:8081

  3. Seed sample data into the emulator:

    npm run seed-emulator
  4. Create .env.local (the seed script prints this for you):

    COSMOS_ENDPOINT=https://localhost:8081
    COSMOS_KEY=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==
  5. 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.


Option 3: Full Azure backend (vector + hybrid search)

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-small
npm run dev

πŸ—οΈ Tech Stack

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)

πŸ“Š Scoring Formula (0–100)

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.

πŸ”§ Building the Full Dataset

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 DB

Developer credentials

Verified 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 DB

The 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.

πŸ“ Project Structure

β”œβ”€β”€ 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

🌍 Deploy to Vercel

npx vercel

Required 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-container

See 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.

Live developer activity

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-container

Deploy 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-site

The 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.

🀝 Contributing

Contributions are welcome! See CONTRIBUTING.md for setup instructions and areas where help is needed.

πŸ€– MCP Server

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 mcp

See 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.

πŸ“„ License

MIT β€” see LICENSE for details.


⭐ Star this repo if you find it useful!

Built with ❀️ by @sajeetharan

About

🌍 The global network where developers and AI agents discover, connect, and collaborate.

Topics

Resources

Code of conduct

Contributing

Stars

20 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages