Local-First GitHub Activity Explorer & Search Tool
GitVegas was started around an offsite in Las Vegas, started on a flight, iterated during a sleepless jet lag night, refined in the weeks and month after. It was mainly created using cursur and 99% it was prompted. The original intend was to allow the quick copy and paste of descriptive GitHub links.
Technically speaking, GitVegas is a Progressive Web App (PWA) that provides comprehensive GitHub activity exploration, search, and analytics. Built with React, TypeScript, and modern web technologies, it offers a native app-like experience with offline capabilities.
- Search Mode: Find issues and pull requests across repositories
- Events Mode: Explore GitHub activity events (up to 300 events per user)
- Summary Mode: Get a comprehensive overview of all activity
- Real-time Search: Filter by text, labels, users, and repositories
- Repository Filtering: Use
repo:owner/repoand-repo:owner/reposyntax - Label Filtering: Filter by specific labels with
label:namesyntax - User Filtering: Filter by authors with
author:usernamesyntax - Date Range Filtering: Specify custom date ranges for all searches
- Timeline View: Chronological display of all GitHub activity
- Summary View: Categorized overview (PRs, Issues, Comments, Commits)
- Detailed Item View: Full issue/PR details with markdown support
- Bulk Operations: Select and copy multiple items at once
- Offline Support: Works without internet connection
- App Installation: Install as native app on desktop and mobile
- Background Updates: Automatic content updates
- Local-First: All data processed locally for privacy
- IndexedDB Storage: Fast local data storage
- Intelligent Caching: 30-minute cache with automatic refresh
- Avatar Caching: User avatars cached for faster loading
- Search Persistence: Search queries saved across sessions
- Shareable URLs: Generate links with search parameters
- URL State Management: Deep linking to specific searches
- Export Functionality: Copy results to clipboard
- Bulk Copy: Select and copy multiple items
- GitHub-Native Design: Uses Primer React components
- Responsive Design: Works on desktop, tablet, and mobile
- Dark/Light Theme: Automatic theme detection
- Accessibility: Full keyboard navigation and screen reader support
- Node.js 18+
- npm or yarn
- GitHub account (optional, for enhanced features)
-
Clone the repository
git clone https://github.com/yourusername/git-vegas.git cd git-vegas -
Install dependencies
npm install
-
Start development server
npm run dev
-
Open your browser
http://localhost:5173
# Build the application
npm run build
# Preview the production build
npm run preview
# Deploy to GitHub Pages
npm run deploy-
Enter GitHub Username(s)
- Single user:
octocat - Multiple users:
octocat,defunkt,mojombo
- Single user:
-
Set Date Range
- Choose start and end dates for your search
- Defaults to last 30 days
-
Select API Mode
- Summary: Overview of all activity
- GitHub Issues & PRs: Detailed search results
- GitHub Events: Activity timeline
-
Click "Update" to fetch data
Use the header search bar for real-time filtering:
- Text Search:
bug fix- finds items containing "bug fix" - Label Filter:
label:bug- shows items with "bug" label - Repository Filter:
repo:owner/repo- shows items from specific repo - Exclude Repo:
-repo:owner/repo- excludes items from specific repo - Author Filter:
author:username- shows items by specific author - Combined:
label:bug repo:react/react- combines multiple filters
- PRs - merged: Merged pull requests
- PRs - opened: New pull requests
- PRs - closed: Closed (not merged) pull requests
- Issues - opened: New issues
- Issues - closed: Closed issues
- Comments: Issue and PR comments
- Commits: Code commits
- Other Events: Repository events
- Chronological timeline of all GitHub activity
- Up to 300 events per user (GitHub API limit)
- Event latency: 30 seconds to 6 hours
- Detailed search results
- Advanced filtering and sorting
- Bulk selection and copy operations
GitVegas works offline with cached data:
- Cached Results: Previous searches remain available
- Offline Indicator: Visual indicator when offline
- Smart Caching: Automatic cache management
- PWA Installation: Install as native app for better offline experience
src/
βββ components/ # Reusable UI components
βββ hooks/ # Custom React hooks
βββ utils/ # Utility functions
βββ views/ # Main application views
βββ types/ # TypeScript type definitions
βββ assets/ # Static assets
# Development
npm run dev # Start development server
npm run build # Build for production
npm run preview # Preview production build
# Testing
npm run test # Run all tests
npm run test:watch # Run tests in watch mode
npm run test:coverage # Generate coverage report
npm run test:e2e # Run end-to-end tests
# Code Quality
npm run lint # Run ESLint
npm run format # Format code with Prettier
npm run format:check # Check code formatting
# Deployment
npm run deploy # Deploy to GitHub PagesThe project includes comprehensive testing:
- Unit Tests: 583+ tests with Vitest
- Integration Tests: React Testing Library
- E2E Tests: Playwright for cross-browser testing
- Coverage: V8 coverage reporting
Application Functionality:
- Core app features and form handling
- Navigation between tabs (Summary, Issues & PRs, Events)
- Settings dialog and configuration
- Responsive design across devices
Search & Filtering:
- Basic text search functionality
- Advanced search syntax (
label:,repo:,user:,-repo:) - Combined filter queries
- Search persistence across tab switches
- Performance and edge case handling
PWA Features:
- Service worker registration and functionality
- Offline mode testing
- App installation capabilities
- Caching behavior and performance
- Mobile PWA features and touch interactions
Browser Support:
- Chrome/Chromium, Firefox, Safari/WebKit
- Mobile Chrome (Pixel 5), Mobile Safari (iPhone 12)
- Microsoft Edge
- Cross-platform compatibility testing
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit changes:
git commit -m 'Add amazing feature' - Push to branch:
git push origin feature/amazing-feature - Open a Pull Request
Create a .env.local file for local development:
# GitHub API Configuration
VITE_GITHUB_API_URL=https://api.github.com
VITE_GITHUB_CLIENT_ID=your_client_id
# PWA Configuration
VITE_PWA_NAME=GitVegas
VITE_PWA_SHORT_NAME=GitVegas
VITE_PWA_DESCRIPTION=GitHub Activity ExplorerFor enhanced features, add a GitHub personal access token:
- Go to GitHub Settings β Developer settings β Personal access tokens
- Generate a new token with
public_reposcope - Enter the token in GitVegas settings
Desktop (Chrome/Edge):
- Visit the deployed site
- Click install icon in address bar
- Follow browser prompts
Mobile (iOS/Android):
- Open site in browser
- Tap share button
- Select "Add to Home Screen"
- App Shell: Full interface works offline
- Cached Data: Previous searches available offline
- Smart Updates: Background content updates
- Offline Detection: Real-time status monitoring
The project is configured for automatic deployment to GitHub Pages:
npm run deployThe built application can be deployed to any static hosting service:
- Netlify: Drag and drop
dist/folder - Vercel: Connect GitHub repository
- AWS S3: Upload
dist/contents - Firebase Hosting: Use Firebase CLI
- Code Splitting: Automatic route-based splitting
- Tree Shaking: Unused code elimination
- Image Optimization: Automatic image compression
- Service Worker: Intelligent caching strategies
- IndexedDB: Fast local data storage
npm run build
# Check dist/ folder for optimized assetsWe welcome contributions! Please see our Contributing Guide for details.
- Fork and clone the repository
- Install dependencies:
npm install - Start development server:
npm run dev - Run tests:
npm run test - Make your changes and submit a PR
- TypeScript: Strict type checking enabled
- ESLint: Comprehensive linting rules
- Prettier: Automatic code formatting
- Conventional Commits: Standard commit message format
This project is licensed under the MIT License - see the LICENSE file for details.
- GitHub API: For providing comprehensive data access
- Primer React: For the beautiful UI components
- Vite: For the fast build tooling
- React: For the amazing framework
- TypeScript: For type safety
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Documentation: Wiki
Made with β€οΈ by the GitVegas Team
Inspired by the need for better GitHub activity exploration and search capabilities.