- Install dependencies:
npm install-
Create GitHub OAuth App:
- Go to https://github.com/settings/developers
- Click "New OAuth App"
- Fill in:
- Application name: Bottleneck Dev
- Homepage URL: http://localhost:3000
- Authorization callback URL: http://localhost:3000/callback
- Copy the Client ID and Client Secret
-
Configure environment: Create a
.envfile in the project root:
GITHUB_CLIENT_ID=your_client_id_here
GITHUB_CLIENT_SECRET=your_client_secret_here- Run in development mode:
npm run dev- Build for production:
npm run build
npm run distnpm run dev- Start development server with hot reloadnpm run build- Build for productionnpm run dist- Package the app for distributionnpm run dev:main- Watch and compile main process onlynpm run dev:renderer- Start Vite dev server onlynpm run electron- Run the built app
bottleneck/
├── src/
│ ├── main/ # Electron main process
│ │ ├── index.ts # Main entry point
│ │ ├── database.ts # SQLite operations
│ │ ├── auth.ts # GitHub OAuth
│ │ ├── git.ts # Git operations
│ │ ├── menu.ts # Application menu
│ │ └── preload.ts # Preload script
│ ├── renderer/ # React app
│ │ ├── components/ # UI components
│ │ ├── views/ # Page views
│ │ ├── stores/ # Zustand stores
│ │ ├── services/ # API services
│ │ ├── styles/ # CSS styles
│ │ └── utils/ # Utilities
│ └── shared/ # Shared types/constants
├── dist/ # Compiled output
├── release/ # Packaged apps
└── scripts/ # Build scripts
- ✅ GitHub OAuth authentication
- ✅ SQLite database for local caching
- ✅ PR list view with filtering and search
- ✅ PR detail view with conversation and files tabs
- ✅ Monaco-based diff viewer
- ✅ Branch management view
- ✅ Settings page
- ✅ Keyboard shortcuts
- ✅ Bulk actions for PRs
- ✅ Prefix-based PR grouping
- ✅ Sidebar navigation
- ✅ Top bar with sync status
- ✅ Right panel for PR details
- ✅ Command palette
- ✅ Dark theme with Tailwind CSS
- ✅ Virtualized lists
- ✅ Incremental data syncing
- ✅ Local caching with SQLite
- ✅ React Query for API state management
- ✅ Zustand for UI state management
- GitHub OAuth device flow is used (no backend required)
- Some advanced Git operations may require command-line tools
- Large repositories may require initial sync time
- Monaco editor decorations for inline comments are simplified
- If you encounter SQLite build errors, ensure you have build tools installed:
- macOS: Install Xcode Command Line Tools
- Windows: Install windows-build-tools
- Linux: Install build-essential
- Ensure your GitHub OAuth app is properly configured
- Check that the callback URL matches exactly
- Verify the required scopes are granted
- Clear the cache in Settings > Advanced > Clear Cache
- Reduce sync frequency in Settings > General
- Close unused PR tabs
See README.md for contribution guidelines.