Built for IBM Bob Hackathon 2026
BobInsight is a developer tool that analyzes GitHub repositories and visualizes function-level dependencies as an interactive graph. It uses the IBM Bob API to understand code structure and presents it through an intuitive React Flow interface.
- GitHub Repository Analysis: Clone and analyze any public GitHub repository
- Interactive Graph Visualization: Explore function-to-function dependencies with React Flow
- Multi-Tier Fallback System: Ensures the graph always renders, even if the API is unavailable
- Real-time Inspection: Click nodes and edges to see detailed information
- Secure by Design: URL sanitization, rate limiting, and no arbitrary code execution
- Modern Tech Stack: React 18, TypeScript, Fastify, Tailwind CSS
bobinsight-monorepo/
βββ apps/
β βββ frontend/ # React + Vite + React Flow
β βββ backend/ # Fastify + TypeScript API
βββ packages/
β βββ shared-types/ # Shared TypeScript interfaces
βββ package.json # Workspace root
βββ .env.example # Environment template
- React 18 with TypeScript
- Vite (build tool)
- React Flow (graph visualization)
- Tailwind CSS (styling)
- Zustand (state management)
- Axios (HTTP client)
- Node.js 20+
- Fastify (web framework)
- TypeScript
- simple-git (Git operations)
- node-cache (caching)
- axios + axios-retry (API client)
- bottleneck (rate limiting)
- Node.js 20+ and npm 10+
- Git
- IBM Bob API key (optional - fallback works without it)
git clone <your-repo-url>
cd bobinsight-monoreponpm installThis will install dependencies for all workspaces (frontend, backend, shared-types).
cp .env.example apps/backend/.envEdit apps/backend/.env and add your IBM Bob API credentials:
IBM_BOB_API_KEY=your_api_key_here
IBM_BOB_BASE_URL=https://api.ibm-bob.comNote: If you don't have an API key, the system will automatically use mock fallback data.
npm run build --workspace=packages/shared-typesOption A: Start both servers concurrently
npm run devOption B: Start servers separately
Terminal 1 (Backend):
npm run dev:backendTerminal 2 (Frontend):
npm run dev:frontend- Frontend: http://localhost:5173
- Backend API: http://localhost:3000
- Health Check: http://localhost:3000/health
# Development
npm run dev # Start both frontend and backend
npm run dev:frontend # Start frontend only
npm run dev:backend # Start backend only
# Build
npm run build # Build all packages
npm run build:frontend # Build frontend only
npm run build:backend # Build backend only
# Testing
npm test # Run tests in all workspaces
# Linting
npm run lint # Lint all workspaces
# Clean
npm run clean # Remove all node_modules and build artifacts# Install a dependency in a specific workspace
npm install <package> --workspace=apps/frontend
npm install <package> --workspace=apps/backend
# Run a script in a specific workspace
npm run <script> --workspace=apps/frontendHealth check endpoint
Response:
{
"status": "ok",
"timestamp": "2026-05-16T15:30:00.000Z",
"services": {
"api": "healthy",
"cache": "healthy"
}
}Analyze a GitHub repository
Request:
{
"repoUrl": "https://github.com/username/repository"
}Response:
{
"success": true,
"data": {
"nodes": [...],
"edges": [...]
},
"source": "ibm-bob",
"timestamp": "2026-05-16T15:30:00.000Z"
}- URL Validation: Only accepts valid GitHub URLs
- No Shell Injection: Uses
simple-gitAPI, neverexec() - Secret Management: Credentials loaded from
.env, never logged - Rate Limiting: Max 10 requests per minute per IP
- CORS: Whitelist frontend origin only
- Temp Cleanup: Automatic cleanup of cloned repositories
BobInsight implements a 3-tier fallback system:
- Fallback A: API key missing or API unreachable β Serve hardcoded mock JSON
- Fallback B: Response time > 15s β Serve pre-cached demo repositories
- Fallback C: Success rate < 80% β Use local AST parser (future enhancement)
This ensures the frontend graph never breaks, even if the IBM Bob API is unavailable.
Try these repositories for testing:
https://github.com/expressjs/express- Express.js web frameworkhttps://github.com/facebook/react- React libraryhttps://github.com/nodejs/node- Node.js runtime
- Enter a GitHub URL in the input field
- Click "Analyze Repository"
- Wait for the graph to load
- Click on nodes to see file details
- Click on edges to see function call relationships
cd apps/frontend
npm run build
vercel --prodcd apps/backend
npm run build
railway upMake sure to set these in your deployment platform:
IBM_BOB_API_KEY=<your-production-key>
IBM_BOB_BASE_URL=https://api.ibm-bob.com
NODE_ENV=production
FRONTEND_URL=https://your-frontend-domain.com- Check if port 3000 is available
- Verify Node.js version (20+)
- Check
.envfile exists inapps/backend/
- Verify backend is running on port 3000
- Check CORS configuration in
apps/backend/src/server.ts - Verify proxy configuration in
apps/frontend/vite.config.ts
- Check if the GitHub URL is valid and public
- Verify IBM Bob API key (or rely on fallback)
- Check backend logs for detailed error messages
- Project Plan - Detailed implementation plan
- Agent Instructions - AI agent guidelines
- Shared Types - TypeScript interfaces
This project was built for the IBM Bob Hackathon 2026. Contributions are welcome!
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
MIT License - see LICENSE file for details
Built by the BobInsight Team for IBM Bob Hackathon 2026
Happy Analyzing! π