Skip to content

Latest commit

 

History

26 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

app_logo_large

GitHubMonitor is a Windows Presentation Foundation (WPF) application developed in C#. It continuously monitors GitHub for newly created repositories and provides real-time notifications. Users can define custom criteria to filter and display only the repositories that match their specified criteria. Click a toast or double-click a row to open the repo in the browser.

image

Stack: .NET (Windows TFM), WPF, MVVM (CommunityToolkit.Mvvm), GitHub Search API, WinRT app notifications.

Table of Contents

  1. Features
  2. Requirements
  3. Build and Run
  4. How to Use
  5. View Menu
  6. Criteria Mapped to GitHub Search
  7. Toast Notifications
  8. Files
  9. Project Layout
  10. Limits
  11. License

Features

  • Criteria panel: keywords, language, topic, user/org, stars, age, extra GitHub qualifiers, PAT
  • Background polling with start/stop and a one-shot Poll once
  • Deduplicated results (seen repo IDs persisted)
  • Windows toast on each new match (ToastGeneric; click opens the repo URL)
  • View menu to show or hide Criteria, Results, and Log
  • Grid splitters to resize Criteria vs Results and Results vs Log
  • Hidden Criteria: results and log expand to full width
  • Hidden Log: New matches expands to fill the vertical space
  • Log panel with Clear log and auto-scroll (stays put if you scroll up)
  • Layout, visibility, and criteria saved under %LocalAppData%\GitHubNewRepoMonitor\

Requirements

  • Windows 10 version 2004+ or Windows 11
  • .NET SDK that can target net8.0-windows10.0.19041.0 or net10.0-windows10.0.19041.0
  • Network access to https://api.github.com
  • Optional: GitHub personal access token

Anonymous search is limited to 10 requests/minute. A token raises that to 30 requests/minute.

Build and Run

The project file must use a Windows 10 SDK TFM so toast APIs exist:

<TargetFramework>net10.0-windows10.0.19041.0</TargetFramework>
<UseWPF>true</UseWPF>
dotnet restore
dotnet build
dotnet run

NuGet packages:

  • CommunityToolkit.Mvvm
  • Microsoft.Extensions.DependencyInjection

Do not set StartupUri in App.xaml. The window is created in App.OnStartup and assigned a MainViewModel from DI.

How to Use

  1. Fill in Criteria. Watch the query preview; that string is what GitHub receives.
  2. Paste a personal access token if you have one.
  3. Click Start monitoring. The first poll seeds seen IDs (no toast flood) unless Toast on first poll too is checked.
  4. New repositories appear under New matches and as toasts.
  5. Double-click a row or click the toast to open the repository.
  6. Poll once runs a single search immediately.
  7. Clear seen history allows current matches to notify again.
  8. Close the window to save settings and stop the loop.

View Menu

Item Effect
Criteria Show or hide the left filter panel. When hidden, Results and Log use the full width.
Results Show or hide New matches (and the log host).
Log Show or hide the log. When hidden, New matches uses the remaining height.
Show All Turns every section back on.

Drag the vertical splitter to resize Criteria. Drag the horizontal splitter to resize the log. Sizes are written to settings when you drag or close the window.

Criteria Mapped to GitHub search

Field Becomes
Keywords Free text
Language language:
Topic topic:
User / Organization user: / org:
Min stars stars:>=N
Created within (hours) created:>ISO-8601
Extra qualifiers Raw, for example topic:mcp stars:10..50
Exclude forks / archived fork:false archived:false
  • Examples:New C# repos in the last day: Language C#, Created within 24
  • Agent repos with traction: Keywords agent, Min stars 20

Toast Notifications

Toasts use inbox WinRT APIs (Windows.UI.Notifications).

ToastNotificationManager
    .CreateToastNotifier("GitHubNewRepoMonitor")
    .Show(toast);

The payload is ToastGeneric with activationType="protocol" and launch="https://github.com/...".

If a toast does not appear:

  1. Confirm the TFM is net*-windows10.0.19041.0 (or another 10.0.17763+ SDK).
  2. Open Settings → System → Notifications and allow banners for this app. The first toast registers the AUMID GitHubNewRepoMonitor.
  3. Turn off Focus assist / Do not disturb while testing.
  4. Run the app as the logged-in user, not as LocalSystem.

Files

Path: %LocalAppData%\GitHubMonitor</mark>

File Contents
settings.json Criteria, token, poll interval, section visibility, splitter sizes
seen.json Repository IDs already processed

The token is stored in plain text. Use a revocable, minimally scoped PAT.

Project Layout

App.xaml / App.xaml.cs          DI, resources (BoolToVis, Label style)
Views/MainWindow.xaml           Layout, menu, splitters
Views/MainWindow.xaml.cs        Splitter persist, collapse columns/rows
ViewModels/MainViewModel.cs     Commands, polling, settings snapshot
Models/                         GitHubRepo, MonitorSettings, LayoutState
Services/                       Search, settings, seen IDs, toasts, URL open
Behaviors/ListBoxAutoScrollBehavior.cs
Converters/InverseBoolConverter.cs

Limits

  • GitHub search is eventually consistent.
  • Keep the poll interval at 5+ minutes to stay under rate limits.
  • Public repositories only unless the token can see more.
  • Query length is capped by GitHub.

GitHub API terms apply to any token and traffic you generate.

License

Copyright © Scott Cantwell

GitHubMonitor is provided as-is under the Apache 2.0 license. For more information see LICENSE.

About

GitHubMonitor is a Windows Presentation Foundation (WPF) application developed in C#. It continuously monitors GitHub for newly created repositories and provides real-time notifications. Users can define custom criteria to filter and display only the repositories that match their specified conditions.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages