{"id":46680848,"url":"https://github.com/bitloops/local-dashboard","last_synced_at":"2026-04-24T17:04:16.934Z","repository":{"id":342310354,"uuid":"1167949086","full_name":"bitloops/local-dashboard","owner":"bitloops","description":"Local Dashboard for Bitloops CLI","archived":false,"fork":false,"pushed_at":"2026-04-19T18:41:42.000Z","size":1390,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-19T20:36:23.130Z","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":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bitloops.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","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-02-26T21:24:15.000Z","updated_at":"2026-04-19T18:35:09.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/bitloops/local-dashboard","commit_stats":null,"previous_names":["bitloops/local-dashboard"],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/bitloops/local-dashboard","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bitloops%2Flocal-dashboard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bitloops%2Flocal-dashboard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bitloops%2Flocal-dashboard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bitloops%2Flocal-dashboard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bitloops","download_url":"https://codeload.github.com/bitloops/local-dashboard/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bitloops%2Flocal-dashboard/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32232641,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-24T13:21:15.438Z","status":"ssl_error","status_checked_at":"2026-04-24T13:21:15.005Z","response_time":64,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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-03-09T00:04:10.032Z","updated_at":"2026-04-24T17:04:16.901Z","avatar_url":"https://github.com/bitloops.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Bitloops Local Dashboard\n\nA local-first web UI for the [Bitloops](https://bitloops.com) CLI. Use it to see activity across commits, branches, and agents, and to run ad hoc queries in a GraphQL explorer backed by your local Bitloops backend.\n\n## Prerequisites\n\n- **Node.js** `\u003e= 20.19` or `\u003e= 22.12` (required by Vite 8)\n- **pnpm** (this repo uses pnpm; CI uses pnpm 9)\n- A reachable Bitloops CLI HTTP API. By default the dev server proxies `/devql/dashboard` and `/devql/global` to `http://127.0.0.1:5667` (see [Environment](#environment)).\n\n## Setup\n\n```bash\npnpm install\n```\n\nCopy optional env defaults if you want to customize behavior:\n\n```bash\ncp .env.example .env\n```\n\n## Running the app\n\n```bash\npnpm dev\n```\n\nOpen the URL shown in the terminal (typically [http://localhost:5173](http://localhost:5173)). Dashboard requests from the browser go to `/devql/dashboard/...` and Query Explorer requests go to `/devql/global/...` on the same origin; Vite forwards both to the backend you configure with `VITE_API_PROXY_TARGET`.\n\n## Production build and preview\n\n```bash\npnpm build    # TypeScript check + Vite production build → dist/\npnpm preview  # Serve the production build locally\n```\n\n## Install into the CLI bundle path\n\nTo replace the dashboard files the CLI reads from `~/.bitloops/dashboard/bundle`:\n\n```bash\npnpm bundle\n```\n\nThis runs a production build and moves `dist` to `~/.bitloops/dashboard/bundle`.\n\n## Scripts\n\n| Command                | Description                                                   |\n| ---------------------- | ------------------------------------------------------------- |\n| `pnpm dev`             | Start the Vite dev server                                     |\n| `pnpm build`           | TypeScript project build + production bundle to `dist/`       |\n| `pnpm preview`         | Preview the production build                                  |\n| `pnpm bundle`          | Build and install output under `~/.bitloops/dashboard/bundle` |\n| `pnpm lint`            | Run ESLint                                                    |\n| `pnpm format`          | Format with Prettier                                          |\n| `pnpm format:check`    | Check formatting without writing files                        |\n| `pnpm test`            | Run all Vitest unit and integration tests once                |\n| `pnpm test:coverage`   | Run Vitest with coverage and enforce configured thresholds    |\n| `pnpm test:watch`      | Run Vitest in watch mode                                      |\n| `pnpm test:e2e`        | Playwright end-to-end tests (headless)                        |\n| `pnpm test:e2e:headed` | E2E tests in a visible browser                                |\n| `pnpm test:e2e:ui`     | E2E tests with Playwright's interactive UI                    |\n\n## Environment\n\nYou do not need a `.env` file for typical local use if your API is already at the default proxy target.\n\n| Variable                    | Purpose                                                                                                                                                      |\n| --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `VITE_API_PROXY_TARGET`     | Origin for the dev-server `/devql/dashboard` and `/devql/global` proxies (default `http://127.0.0.1:5667`). Use `https://...` if your API is TLS-terminated. |\n| `VITE_QUERY_HISTORY_TTL_MS` | Max age (ms) for persisted query-explorer run history in the browser (default 30 days).                                                                      |\n\nSee [.env.example](.env.example) for commented templates.\n\n## Query explorer\n\nThe query explorer is a **read-only DevQL workspace** for exploring your Bitloops code-intelligence data. The editor speaks **GraphQL syntax**: you write operations with `query`, fields, arguments and variables and the UI uses your live schema (`GET /devql/global/sdl`) for autocomplete and validation of that syntax.\n\n**What it is not:** this is not a full GraphQL client. **Only queries are supported** for execution against `POST /devql/global`. **Mutations and subscriptions are not supported**—the backend and explorer are built for ad hoc reads, not for changing server state or streaming updates. If you paste a mutation or subscription document, it may parse as valid GraphQL text, but it is outside what the explorer and API are meant to run.\n\nResults render in a JSON viewer. Recent runs are stored in the browser (subject to `VITE_QUERY_HISTORY_TTL_MS`).\n\n## License\n\nLicensed under the Apache License, Version 2.0. See [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbitloops%2Flocal-dashboard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbitloops%2Flocal-dashboard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbitloops%2Flocal-dashboard/lists"}