The easiest way to manage GitHub repository visibility - Switch between public and private with a single click!
QuickVis is a Chrome extension that simplifies GitHub repository management by allowing you to change repository visibility (public ↔ private) directly from your GitHub profile pages. No more navigating through settings menus - just one click!
- One-Click Visibility Toggle: Change repository visibility instantly from your repositories list or individual repo pages
- Beautiful UI Integration: Seamlessly integrated buttons that match GitHub's design language
- Smart Access Control: Toggle switch in the header to grant or revoke access anytime
- Secure OAuth Authentication: Uses GitHub OAuth for secure, token-based authentication
- Visual Feedback: Real-time badge updates and elegant notifications
- Inactive State Support: All buttons remain visible even without access, just styled differently to indicate status
When you first visit your GitHub repositories page, you'll see an elegant toggle switch in the header near the search bar. Click it to authorize QuickVis with your GitHub account via OAuth.
Once authorized, you'll see "Change Visibility" buttons next to each of your repositories. Click any button to instantly toggle between public and private.
Use the header toggle to revoke access anytime. QuickVis will show a confirmation modal, and all buttons will transition to an inactive state with pale colors.
- Manifest V3: Modern Chrome extension architecture
- Content Script: Injects UI elements and handles interactions on GitHub pages
- Background Worker: Manages OAuth flow and token storage
- Local Storage: Securely stores access tokens with automatic expiration (7 days)
- Express.js Server: Deployed on Vercel for serverless OAuth token exchange
- Security Features:
- Rate limiting to prevent abuse
- Extension ID validation
- Redirect URI validation
- Environment-based configuration
User → QuickVis → GitHub OAuth → Proxy Server → GitHub API → Access Token → QuickVis
The proxy server never stores your token - it only facilitates the secure exchange between GitHub and the extension.
- Install from Chrome Web Store (Coming Soon!)
- Navigate to your GitHub repositories page
- Click the QuickVis toggle to authorize
- Start managing your repository visibility!
- Node.js 16+
- Chrome browser
- GitHub account
- Clone the repository
git clone https://github.com/ogutdgn/quickvis.git
cd quickvis- Set up the OAuth Proxy Server
cd server
npm installCreate a .env file:
GITHUB_CLIENT_ID=your_github_client_id
GITHUB_CLIENT_SECRET=your_github_client_secret
ALLOWED_EXTENSION_ID=your_extension_id
RATE_LIMIT_WINDOW_MS=60000
RATE_LIMIT_MAX=60Deploy to Vercel:
vercel deploy --prod- Configure the Extension
Update extension/config.js:
export const CONFIG = {
CLIENT_ID: 'your_github_client_id',
PROXY_SERVER_URL: 'https://your-project.vercel.app',
SCOPES: 'repo user',
AUTH_URL: 'https://github.com/login/oauth/authorize',
API_BASE: 'https://api.github.com'
};- Load the Extension
- Open Chrome →
chrome://extensions/ - Enable "Developer mode"
- Click "Load unpacked"
- Select the
extensionfolder
- Zero Data Collection: We don't collect any analytics or personal data
- Local-Only Storage: Tokens are stored only in your browser
- Minimal Permissions: Only runs on
github.comdomains - Automatic Expiration: Tokens expire after 7 days for security
- Open Source: Full transparency - audit the code yourself!
Read our complete Privacy Policy
- Gradient backgrounds with backdrop blur effects
- Smooth animations and transitions
- Responsive hover states
- Dark mode support
When not authorized, buttons remain visible but styled with:
- Pale purple colors (#ddd6fe background)
- Reduced opacity (0.75)
- Clear visual distinction from active state
- Clicking opens the authorization modal
- Grant Access Modal: Purple gradient with lock icon
- Revoke Access Modal: Warning gradient with alert icon
- Both feature smooth animations and backdrop blur
quickvis/
├── extension/ # Chrome extension files
│ ├── manifest.json # Extension manifest (v3)
│ ├── background.js # Background service worker
│ ├── content.js # Main content script
│ ├── content.css # Styles for injected UI
│ └── config.js # Configuration constants
├── server/ # OAuth proxy server
│ ├── server.js # Express server
│ ├── package.json # Dependencies
│ └── vercel.json # Vercel configuration
├── README.md # You are here!
└── PRIVACY.md # Privacy policy
production: Production-ready code, connected to Chrome Web Storedevelopment: Development code with local OAuth setup
Use the automated version bump script to update extension versions:
# Bump patch version (1.1.2 → 1.1.3) - Bug fixes
.\bump-version.ps1 patch
# Bump minor version (1.1.2 → 1.2.0) - New features
.\bump-version.ps1 minor
# Bump major version (1.1.2 → 2.0.0) - Breaking changes
.\bump-version.ps1 majorThe script will:
- Update
extension/manifest.jsonwith the new version - Create a git commit with the version change
- Provide instructions for pushing to development
- Make changes in
developmentbranch - Bump version:
.\bump-version.ps1 patch - Push to development:
git push origin development - Merge to production:
git checkout production git merge development --no-commit --no-ff # Restore production configs git checkout production -- extension/config.js extension/manifest.json git commit -m "merge: development into production" git push origin production
- GitHub Actions automatically:
- Creates extension zip file
- Adds to
versions/directory - Creates GitHub Release with download link
-
Clone and checkout development branch:
git clone https://github.com/ogutdgn/quickvis.git git checkout development
-
Setup OAuth App on GitHub:
- Authorization callback URL:
https://<EXTENSION_ID>.chromiumapp.org/
- Authorization callback URL:
-
Configure server (
server/.env):GITHUB_CLIENT_ID=your_dev_client_id GITHUB_CLIENT_SECRET=your_dev_secret ALLOWED_EXTENSION_ID=your_extension_id
-
Start local server:
cd server npm install npm start -
Load extension in Chrome:
- Go to
chrome://extensions/ - Enable "Developer mode"
- Click "Load unpacked"
- Select the
extension/directory
- Go to
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Found a bug or have a feature request? Please open an issue on GitHub Issues.
Managing repository visibility on GitHub requires multiple clicks through settings pages. QuickVis reduces this to a single click, saving time and improving workflow efficiency. Whether you're:
- 🎓 A student managing coursework repositories
- 👨💻 A developer organizing project visibility
- 🏢 A professional managing multiple repos
- 🔧 Anyone who frequently toggles repository visibility
QuickVis makes your life easier!
Built with ❤️ using:
Made by Dogan Ogut | Star ⭐ this repo if you find it useful!