β οΈ Important: this app was 100% vibe-coded in a few hours using GitHub Copilot CLI and Claude Opus 4.5.
A client-only web application to view and manage GitHub Apps installed across your GitHub organizations. Get visibility into which apps have access to your repositories and organizations.
π Security First: This is a client-only application - your Personal Access Token never leaves your browser. All GitHub API calls are made directly from the browser to GitHub's API, and no token is ever stored or transmitted to any server.
- π View by Apps - See all GitHub Apps installed across your organizations, with expandable details showing installations, permissions, events, and repository access
- π’ View by Organizations - Browse organizations and see all apps installed in each one with pagination support
- π View by Repositories - Two-column layout showing repositories on the left and app access details on the right
- π― Powerful Filtering - Filter by organization, app owner, and specific apps
- π App Usage Detection - Identify inactive apps by analyzing audit logs to find apps with no recent activity
- π Repository Access - View all repositories an app has access to, with visibility indicators
- π Pagination - Handle large numbers of apps and installations efficiently
- π Dark Mode - Toggle between light and dark themes
- π¨ GitHub-Styled UI - Built with Primer React for a native GitHub look and feel
- Node.js 18+ - Download (for development only)
- npm or yarn - Comes with Node.js
- GitHub Personal Access Token with the following scopes:
read:org- To list organizations and their app installationsrepo- To access repository informationadmin:orgorread:audit_log- (Optional) To detect app usage via audit logs
git clone https://github.com/gateixeira/github-apps-dashboard.git
cd github-apps-dashboardnpm installnpm run devNavigate to http://localhost:5173
Since this is a client-only application, you can deploy it as static files to any web hosting service.
npm run buildThe built files will be in dist/. These can be deployed to:
- GitHub Pages
- Netlify
- Vercel
- AWS S3 + CloudFront
- Azure Static Web Apps
- Any static file server (nginx, Apache, etc.)
# Build the app
npm run build
# Deploy to gh-pages branch
npx gh-pages -d dist- Open the application in your browser
- Enter your GitHub Enterprise URL (leave empty for github.com)
- Enter your Personal Access Token with required scopes
- Select an organization (required)
- Click Connect to load your data
Shows all GitHub Apps grouped by app. Click on an app to expand and see:
- Description (rendered as Markdown) and owner information
- All organizations where the app is installed
- Repository access (all repos vs. selected repos)
- Permissions and subscribed events
- List of accessible repositories
Shows all organizations with their installed apps:
- Expand an organization to see all installed apps
- Pagination support for organizations with many apps
- Quick view of app access levels (All repos / Selected repos)
Two-column layout for repository-centric exploration:
- Left panel: Scrollable list of repositories with private/public indicators
- Right panel: Selected repository details with list of apps that have access
| Filter | Description |
|---|---|
| App Owner | Filter apps by their owner (organization or user) |
| App | Filter to show a specific app across all organizations |
| Activity | Show all apps, only active, or only inactive apps |
The dashboard can identify potentially unused apps by analyzing organization audit logs:
- Active (green) - App has activity in audit logs within the last 90 days
- Inactive (red) - No activity found in audit logs within the threshold period
- Unknown (gray) - Could not determine activity (e.g., no audit log access)
This feature requires the admin:org or read:audit_log scope on your Personal Access Token.
This is a client-only application - there is no backend server. All GitHub API calls are made directly from your browser using the Octokit library.
github-apps-dashboard/
βββ src/
β βββ components/ # React components
β βββ hooks/ # Custom React hooks
β βββ services/ # GitHub API client (Octokit wrapper)
β βββ types/ # TypeScript types
βββ public/ # Static assets
βββ index.html # Entry HTML file
βββ package.json
βββ README.md
| Layer | Technology |
|---|---|
| API Client | @octokit/rest |
| Frontend | React 19, TypeScript, Vite |
| UI Components | Primer React, styled-components |
| Styling | CSS Variables with GitHub Primer design tokens |
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Your Browser β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β React App (client-only) β
β βββββββββββββββββββ βββββββββββββββββββββββββββββββββββββββ β
β β Token stays βββββΆβ Direct HTTPS calls to GitHub API β β
β β in browser β β (api.github.com or enterprise) β β
β βββββββββββββββββββ βββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββ
β GitHub API (CORS enabled) β
β - Organizations β
β - Installations β
β - Apps β
β - Audit Logs β
βββββββββββββββββββββββββββββββββ
Key security properties:
- β Token never leaves the browser
- β No server to compromise
- β No token storage (session only)
- β Read-only operations only
- β All requests go directly to GitHub over HTTPS
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Run the linter and tests
- Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Use TypeScript for all new code
- Follow the existing code style
- Add comments for complex logic
- Update documentation as needed
Found a bug or have a feature request? Please open an issue with:
- A clear description of the issue
- Steps to reproduce (for bugs)
- Expected vs actual behavior
- Screenshots if applicable
- Personal Access Tokens are never stored - they exist only in browser memory during your session
- Tokens are never transmitted to any server - all API calls go directly from browser to GitHub
- Closing your browser tab clears the token from memory
The client-only architecture provides maximum security:
- No server to compromise - There's no backend that could be hacked to steal tokens
- No token transmission - Your token goes directly to GitHub, never to a third party
- No storage - Tokens exist only in memory and are cleared when you close the tab
- Open source - You can inspect exactly what the code does with your token
If you discover a security vulnerability, please send an email to the repository owner instead of opening a public issue.
This project is licensed under the MIT License - see the LICENSE file for details.
- GitHub for the amazing API and platform
- Primer for the design system
- Octokit for the excellent GitHub API client
Made with β€οΈ by @gateixeira
