A minimal, auto-updating Electron widget for Windows and macOS that displays your GitHub contribution graph and language stats. Built with React, TypeScript, and Electron, GitWidget is designed for seamless desktop integration and quick GitHub insights.
- GitHub OAuth authentication (secure, via deep link and backend exchange)
- Contribution graph and top languages bar
- Auto-update via GitHub Releases (no manual downloads)
- Tiny, always-on-top widget (frameless, resizable)
- Cross-platform: Windows & macOS (macOS: experimental)
-
Clone the repo:
git clone https://github.com/Fahad-Dezloper/GitWidget.git cd GitWidget
-
Install dependencies (use Yarn):
yarn
-
Set up environment variables:
- Copy
.env.example
to.env
and fill in any required values (see below).
- Copy
-
Run in development:
yarn dev
-
Build for production:
# For Windows yarn build:win # For macOS (experimental) yarn build:mac
Create a .env
file in the root directory. See example.env
for required variables. Most users do not need to set any variables unless customizing the build or using a custom backend.
- Sign in with GitHub: Click the button in the widget. A browser window will open for OAuth. On success, the widget will display your stats.
- Auto-update: The app checks for updates automatically and notifies you in-app.
- Logout: Use the logout button in the widget to disconnect your GitHub account.
- Website (Web version): GitWidget-Web
- Backend Auth Server: GitWidget-Auth
We welcome contributions, issues, and feature requests!
-
Make your changes on a new branch based on
staging
.
Please do not usemain
as your base branch. Always branch off fromstaging
and open your pull requests againststaging
. -
Issue naming convention:
When opening issues, please use a prefix to indicate the type, for example:fix:[issue title]
for bug fixesfeat:[feature title]
for new featureschore:[chore title]
for maintenance tasks
-
Pull Requests:
- Clearly describe your changes and reference any related issues.
- Make sure your code is linted and tested before submitting.
-
General:
- If you are unsure or want to discuss a feature/bug, feel free to open an issue first.