{"id":51151059,"url":"https://github.com/simba77/gh-dashboard","last_synced_at":"2026-06-26T06:02:48.211Z","repository":{"id":360681835,"uuid":"1251235953","full_name":"simba77/gh-dashboard","owner":"simba77","description":null,"archived":false,"fork":false,"pushed_at":"2026-05-27T12:09:49.000Z","size":298,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-27T13:22:09.799Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/simba77.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-27T11:29:23.000Z","updated_at":"2026-05-27T11:35:14.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/simba77/gh-dashboard","commit_stats":null,"previous_names":["simba77/gh-dashboard"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/simba77/gh-dashboard","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simba77%2Fgh-dashboard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simba77%2Fgh-dashboard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simba77%2Fgh-dashboard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simba77%2Fgh-dashboard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/simba77","download_url":"https://codeload.github.com/simba77/gh-dashboard/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simba77%2Fgh-dashboard/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34805073,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-26T02:00:06.560Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-26T06:02:42.976Z","updated_at":"2026-06-26T06:02:48.182Z","avatar_url":"https://github.com/simba77.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DevPulse\n\nA small desktop app that puts your team's GitHub Projects work on one screen:\nPRs awaiting your review, tasks on your plate, items in Testing that you\nposted, things you handed off to others, the full kanban per project, and a\nTeam view showing who is doing what right now.\n\nBuilt with Tauri 2 + React 19 + TypeScript. Runs as a native app on macOS,\nWindows and Linux.\n\n## Install\n\nGrab the latest build for your platform from the\n[Releases](../../releases) page.\n\nThe app is **unsigned**, so OS warnings on first launch are expected:\n\n- **macOS:** double-click → \"cannot be opened\" → System Settings → Privacy \u0026\n  Security → \"Open Anyway\". Or `xattr -dr com.apple.quarantine /Applications/DevPulse.app`.\n- **Windows:** SmartScreen → \"More info\" → \"Run anyway\".\n- **Linux:** download `.deb` (Debian/Ubuntu) or `.AppImage` (anywhere).\n  `.AppImage` may need `chmod +x` before running.\n\n## First-time setup\n\n1. **Sign in.** The login screen opens GitHub's device-flow page. Enter the\n   shown code; DevPulse stores the token in the OS keyring.\n2. **Settings → Add organization.** Enter the org slug. DevPulse fetches its\n   project list automatically.\n3. **Tick projects to track on the dashboard.** Ticked projects feed the four\n   dashboard widgets (Testing queue, My open tasks, Assigned by me, Kanban).\n4. **Team → Manage people.** Pick the colleagues to show on the Team screen.\n5. **Team → Manage projects.** Optionally hide dead/irrelevant projects from\n   the Team view (independent of the dashboard tracking list).\n\n## How it stays cheap on the API\n\nGitHub's GraphQL budget is 5000 points/hour. DevPulse stays well under that:\n\n- Dashboard widgets poll every **60 s**; Team polls every **10 min**.\n- Project lists are fetched **only when you click Refresh** in Settings.\n- Members are fetched **only when you open \"Manage people\"**.\n- When `x-ratelimit-remaining` drops below 100, polling **pauses\n  automatically** until the GitHub reset; a banner shows the resume time.\n- Boots from a localStorage cache, so widgets render instantly before the\n  first refresh comes back.\n\n## Development\n\n```bash\ngit clone \u003cthis repo\u003e\ncd devpulse\nnpm install\nnpm run tauri dev\n```\n\nRequires Node 20+ and a Rust toolchain (`rustup` stable). On Linux you also\nneed the Tauri system deps — see [`./.github/workflows/release.yml`](./.github/workflows/release.yml)\nfor the exact `apt` list.\n\nUseful scripts:\n\n| script                | what it does                                  |\n| --------------------- | --------------------------------------------- |\n| `npm run tauri dev`   | run the app locally with hot reload           |\n| `npm run check`       | ESLint + `tsc --noEmit` + Prettier check      |\n| `npm run lint`        | ESLint + `tsc --noEmit`                       |\n| `npm run tauri build` | produce a release bundle for the current host |\n\n## Releasing\n\nTag a commit on `main`:\n\n```bash\ngit tag v0.x.y\ngit push origin v0.x.y\n```\n\nThe `Release` workflow builds for macOS (arm + x64), Windows and Linux, then\nattaches the bundles to a **draft** GitHub release. Publish it manually when\nthe artefacts look right.\n\n## Layout\n\n```\nsrc/\n  api/queries/   GraphQL queries + hand-written response types\n  auth/          device-flow + keyring wrappers\n  features/      one folder per dashboard widget / screen\n  hooks/         generic hooks (useFanout, cache, rateLimit)\n  settings/      settings store + Settings screen\n  ui/            small shared primitives\nsrc-tauri/       Rust side (auth, GraphQL bridge, rate-limit emit)\ndocs/            PLAN, ARCHITECTURE, DECISIONS\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimba77%2Fgh-dashboard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsimba77%2Fgh-dashboard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimba77%2Fgh-dashboard/lists"}