{"_id":"@dustinvk/wherefore-dashboard","_rev":"5-108480edcdf99353dc306f9d8b63479d","name":"@dustinvk/wherefore-dashboard","dist-tags":{"latest":"0.3.0"},"versions":{"0.1.0":{"name":"@dustinvk/wherefore-dashboard","version":"0.1.0","keywords":["wherefore","decision-log","adr","architecture","static-site","astro","dashboard"],"author":{"name":"Dustin VanKrimpen"},"license":"MIT","_id":"@dustinvk/wherefore-dashboard@0.1.0","maintainers":[{"name":"dustinvk","email":"me@dustinvk.com"}],"homepage":"https://github.com/DustinVK/wherefore/tree/main/packages/wherefore-dashboard#readme","bugs":{"url":"https://github.com/DustinVK/wherefore/issues"},"bin":{"wherefore-dashboard":"bin/wherefore-dashboard.js"},"dist":{"shasum":"0f9799d40f49f9ff31593b5a4070251b76923b36","tarball":"https://registry.npmjs.org/@dustinvk/wherefore-dashboard/-/wherefore-dashboard-0.1.0.tgz","fileCount":21,"integrity":"sha512-el4p+RXVyiSM4bYhN9I1nrGLYtwp9SaR+bevR5KD674i4HJuXc9DdYFlsH6gyAThtY8ejFaQY24tUb0EKRliCA==","signatures":[{"sig":"MEUCIBZOmRxESApfUSndsW7mfA/p+GSsP15+Wi/LpnMl1wUNAiEA4PsPu2o4BivJmS3sEsbq9KFcDl3Mu1U0NSRlTwjOz7o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":81462},"type":"module","engines":{"node":">=18"},"gitHead":"e566efd80fe05f6016d1792dbbc9cb3f108bfa01","scripts":{"dev":"node bin/wherefore-dashboard.js dev","test":"node --test tests/fixture-check.mjs tests/cli.test.js","build":"node bin/wherefore-dashboard.js build --src tests/fixtures/wherefore --out .test-dist"},"_npmUser":{"name":"dustinvk","email":"me@dustinvk.com"},"repository":{"url":"git+https://github.com/DustinVK/wherefore.git","type":"git","directory":"packages/wherefore-dashboard"},"_npmVersion":"11.11.0","description":"Build tool that reads a wherefore/ directory and emits a static dashboard.","directories":{},"_nodeVersion":"25.8.1","dependencies":{"astro":"^5.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/wherefore-dashboard_0.1.0_1782412854001_0.7588290443947516","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@dustinvk/wherefore-dashboard","version":"0.1.1","keywords":["wherefore","decision-log","adr","architecture","static-site","astro","dashboard"],"author":{"name":"Dustin VanKrimpen"},"license":"MIT","_id":"@dustinvk/wherefore-dashboard@0.1.1","maintainers":[{"name":"dustinvk","email":"me@dustinvk.com"}],"homepage":"https://github.com/DustinVK/wherefore/tree/main/packages/wherefore-dashboard#readme","bugs":{"url":"https://github.com/DustinVK/wherefore/issues"},"bin":{"wherefore-dashboard":"bin/wherefore-dashboard.js"},"dist":{"shasum":"538ba4ce6302f487f0e438281dfde95bd1e564b9","tarball":"https://registry.npmjs.org/@dustinvk/wherefore-dashboard/-/wherefore-dashboard-0.1.1.tgz","fileCount":21,"integrity":"sha512-cO6ENFcKAh7clXl1OAnE5k4cnYxC+hlHJM5sz0+qUJat5zNizFDG65yFHFJRtXFxsTfny6He562RfMy//zZbxg==","signatures":[{"sig":"MEUCIQDpz0OAD301amW7BM4jc+E3eFCDr+akrxAvOpdYIe51fgIgcBjiAGnDG9k7dNsSarYvw5WbrNswwvcNQifAnIllDzg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83130},"type":"module","engines":{"node":">=18"},"gitHead":"120eec6e68d21d766ce4af94dd62acddc353f27d","scripts":{"dev":"node bin/wherefore-dashboard.js dev","test":"node --test tests/fixture-check.mjs tests/cli.test.js","build":"node bin/wherefore-dashboard.js build --src tests/fixtures/wherefore --out .test-dist"},"_npmUser":{"name":"dustinvk","email":"me@dustinvk.com"},"repository":{"url":"git+https://github.com/DustinVK/wherefore.git","type":"git","directory":"packages/wherefore-dashboard"},"_npmVersion":"11.11.0","description":"Build tool that reads a wherefore/ directory and emits a static dashboard.","directories":{},"_nodeVersion":"25.8.1","dependencies":{"astro":"^5.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^26.0.1"},"_npmOperationalInternal":{"tmp":"tmp/wherefore-dashboard_0.1.1_1782425279436_0.1637055616001557","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@dustinvk/wherefore-dashboard","version":"0.1.2","keywords":["wherefore","decision-log","adr","architecture","static-site","astro","dashboard"],"author":{"name":"Dustin VanKrimpen"},"license":"MIT","_id":"@dustinvk/wherefore-dashboard@0.1.2","maintainers":[{"name":"dustinvk","email":"me@dustinvk.com"}],"homepage":"https://github.com/DustinVK/wherefore/tree/main/packages/wherefore-dashboard#readme","bugs":{"url":"https://github.com/DustinVK/wherefore/issues"},"bin":{"wherefore-dashboard":"bin/wherefore-dashboard.js"},"dist":{"shasum":"ee4818558459beb36da0350ddf2ffc7d506b1739","tarball":"https://registry.npmjs.org/@dustinvk/wherefore-dashboard/-/wherefore-dashboard-0.1.2.tgz","fileCount":22,"integrity":"sha512-ssYhznCe8dBf4/bEFO360klyhTXJBxDqSXJNeYEw9jtTkY8YY3fiB5kNvQvv1dQz/nsSK02kPqEh4YVCrFO0wA==","signatures":[{"sig":"MEUCIFU5yZiyxCYHxG4Vc8zCtUN/xVkWZsHl6nD5pvw6Qrm9AiEAv0E0y5DXKP25Gn1CfCiPDTPmi4DP+5s+Lm4T+WoufIk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":102598},"type":"module","engines":{"node":">=18"},"gitHead":"f8d2a9fce43b4245212ecd7ab6e8fcc434121811","scripts":{"dev":"node bin/wherefore-dashboard.js dev","test":"node --test tests/fixture-check.mjs tests/cli.test.js","build":"node bin/wherefore-dashboard.js build --src tests/fixtures/wherefore --out .test-dist"},"_npmUser":{"name":"dustinvk","email":"me@dustinvk.com"},"repository":{"url":"git+https://github.com/DustinVK/wherefore.git","type":"git","directory":"packages/wherefore-dashboard"},"_npmVersion":"11.11.0","description":"Build tool that reads a wherefore/ directory and emits a static dashboard.","directories":{},"_nodeVersion":"25.8.1","dependencies":{"astro":"^5.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^26.0.1"},"_npmOperationalInternal":{"tmp":"tmp/wherefore-dashboard_0.1.2_1783101783617_0.4837475926803234","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@dustinvk/wherefore-dashboard","version":"0.2.0","keywords":["wherefore","decision-log","adr","architecture","static-site","astro","dashboard"],"author":{"name":"Dustin VanKrimpen"},"license":"MIT","_id":"@dustinvk/wherefore-dashboard@0.2.0","maintainers":[{"name":"dustinvk","email":"me@dustinvk.com"}],"homepage":"https://github.com/DustinVK/wherefore/tree/main/packages/wherefore-dashboard#readme","bugs":{"url":"https://github.com/DustinVK/wherefore/issues"},"bin":{"wherefore-dashboard":"bin/wherefore-dashboard.js"},"dist":{"shasum":"77bb75393c04e68b61fd442535714b9ed62602ce","tarball":"https://registry.npmjs.org/@dustinvk/wherefore-dashboard/-/wherefore-dashboard-0.2.0.tgz","fileCount":22,"integrity":"sha512-JWJY3/j++zglyCjWK7dR4fWgxy2DaLHVFM5H5MJ5HuXw0LZrRXeaSozttj+OC3ZGxztHe3R9MNH6RyfyzWye8w==","signatures":[{"sig":"MEQCIHrybJzEOQfmEIkq6O5PrXDaCpQ7WSneLbpf0zgQeHAkAiBN/5awtsZylyih4o9bznK35aHTGzZvVYmUc0bHfk2XxQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":102766},"type":"module","engines":{"node":"^22.18.0 || >=24.0.0"},"scripts":{"dev":"node bin/wherefore-dashboard.js dev","test":"node --test --test-concurrency=1","build":"node bin/wherefore-dashboard.js build --src tests/fixtures/wherefore --out .test-dist"},"_npmUser":{"name":"dustinvk","email":"me@dustinvk.com"},"repository":{"url":"git+https://github.com/DustinVK/wherefore.git","type":"git","directory":"packages/wherefore-dashboard"},"_npmVersion":"11.17.0","description":"Build tool that reads a wherefore/ directory and emits a static dashboard.","directories":{},"_nodeVersion":"26.4.0","dependencies":{"astro":"^7.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^29.1.1","@types/node":"^26.0.1"},"_npmOperationalInternal":{"tmp":"tmp/wherefore-dashboard_0.2.0_1784361460990_0.0354901672632304","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@dustinvk/wherefore-dashboard","version":"0.3.0","description":"Build tool that reads a wherefore/ directory and emits a static dashboard.","author":{"name":"Dustin VanKrimpen"},"license":"MIT","keywords":["wherefore","decision-log","adr","architecture","static-site","astro","dashboard"],"homepage":"https://github.com/DustinVK/wherefore/tree/main/packages/wherefore-dashboard#readme","bugs":{"url":"https://github.com/DustinVK/wherefore/issues"},"repository":{"type":"git","url":"git+https://github.com/DustinVK/wherefore.git","directory":"packages/wherefore-dashboard"},"type":"module","engines":{"node":"^22.18.0 || >=24.0.0"},"bin":{"wherefore-dashboard":"bin/wherefore-dashboard.js"},"scripts":{"dev":"node bin/wherefore-dashboard.js dev","build":"node bin/wherefore-dashboard.js build --src tests/fixtures/wherefore --out .test-dist","test":"node --test --test-concurrency=1"},"dependencies":{"@astrojs/markdown-remark":"^7.2.1","astro":"^7.0.0"},"publishConfig":{"access":"public"},"devDependencies":{"@types/node":"^26.0.1","jsdom":"^29.1.1"},"gitHead":"e472a43d1bd5b1074cc70726ce3f1c02abb955f0","_id":"@dustinvk/wherefore-dashboard@0.3.0","_nodeVersion":"26.4.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-YtpvDdobX6ibUEGAHHB4Q35BZqm717u6LezWzCGREwg27pYJV1Iq+JYVqeafQVq+iXdoIoAwXoenAYbvHwanPA==","shasum":"b1d03c877b87b0db03bc19987bb07ff18f69ddfb","tarball":"https://registry.npmjs.org/@dustinvk/wherefore-dashboard/-/wherefore-dashboard-0.3.0.tgz","fileCount":28,"unpackedSize":140043,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCev6tG+dEutxghniTcHcvWdqowS0MV5NWH/MM/nJiyxwIhAMCc2RmliubChKRgEfBGLkryq5+oXe+hHzztrvfCY0yF"}]},"_npmUser":{"name":"dustinvk","email":"me@dustinvk.com"},"directories":{},"maintainers":[{"name":"dustinvk","email":"me@dustinvk.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/wherefore-dashboard_0.3.0_1784591028441_0.9523422937497061"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-25T18:40:53.832Z","modified":"2026-07-20T23:43:48.749Z","0.1.0":"2026-06-25T18:40:54.137Z","0.1.1":"2026-06-25T22:07:59.637Z","0.1.2":"2026-07-03T18:03:03.776Z","0.2.0":"2026-07-18T07:57:41.162Z","0.3.0":"2026-07-20T23:43:48.571Z"},"bugs":{"url":"https://github.com/DustinVK/wherefore/issues"},"author":{"name":"Dustin VanKrimpen"},"license":"MIT","homepage":"https://github.com/DustinVK/wherefore/tree/main/packages/wherefore-dashboard#readme","keywords":["wherefore","decision-log","adr","architecture","static-site","astro","dashboard"],"repository":{"type":"git","url":"git+https://github.com/DustinVK/wherefore.git","directory":"packages/wherefore-dashboard"},"description":"Build tool that reads a wherefore/ directory and emits a static dashboard.","maintainers":[{"name":"dustinvk","email":"me@dustinvk.com"}],"readme":"<picture>\n  <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/DustinVK/wherefore/main/.github/assets/lockup-dark.svg\">\n  <source media=\"(prefers-color-scheme: light)\" srcset=\"https://raw.githubusercontent.com/DustinVK/wherefore/main/.github/assets/lockup-light.svg\">\n  <img alt=\"wherefore\" src=\"https://raw.githubusercontent.com/DustinVK/wherefore/main/.github/assets/lockup-light.svg\" width=\"280\">\n</picture>\n\n# @dustinvk/wherefore-dashboard\n\nThe static dashboard for [wherefore](https://github.com/DustinVK/wherefore), the why behind your code.\n\nWherefore captures the reasoning behind your engineering decisions, what you chose, why, and what you ruled out, as plain markdown in your repo. This package reads that `wherefore/` directory and builds a browsable static site from it. No Astro source lives in your repo; no cloud, no lock-in.\n\n[![npm](https://img.shields.io/npm/v/@dustinvk/wherefore-dashboard)](https://www.npmjs.com/package/@dustinvk/wherefore-dashboard)\n[![license](https://img.shields.io/npm/l/@dustinvk/wherefore-dashboard)](https://github.com/DustinVK/wherefore/blob/main/LICENSE)\n\n> This package only builds and serves the dashboard. To scaffold a `wherefore/` log or\n> install skills for your agent, use the `wherefore` CLI: `npx wherefore init`. You can\n> also launch this dashboard through it with `npx wherefore dashboard`.\n\n## Quick start\n\nFrom any directory that contains a `wherefore/` folder, no install and no flags:\n\n```bash\n# live dashboard with hot reload\nnpx @dustinvk/wherefore-dashboard dev\n\n# build a static site to ./dist\nnpx @dustinvk/wherefore-dashboard build\n```\n\n`dev` and `build` default to `./wherefore` for the source and `./dist` for build output. Override either when your layout differs:\n\n```bash\nnpx @dustinvk/wherefore-dashboard build \\\n  --src ./path/to/wherefore \\\n  --out ./site \\\n  --title \"My Project Wherefore\"\n```\n\n## Running from a local clone (without npx)\n\nIf you have this repo checked out, you can run the CLI directly with `node`, skipping `npx` entirely. Install dependencies once, then call the bin script:\n\n```bash\ncd packages/wherefore-dashboard\nnpm install\n\n# live dashboard with hot reload\nnode bin/wherefore-dashboard.js dev --src /path/to/your/wherefore\n\n# build a static site\nnode bin/wherefore-dashboard.js build --src /path/to/your/wherefore --out ./dist\n```\n\nThe same `--src`, `--out`, and `--title` flags apply. `--src` defaults to `./wherefore` relative to your current directory, so point it at the project whose log you want to render. The `npm run dev` script in this package wraps the same command.\n\n## Viewing a build locally\n\nA built site uses absolute asset paths, so it must be served over HTTP. Opening `dist/index.html` directly in the browser (a `file://` URL) loads the page but not the styles. To preview a build, serve the folder:\n\n```bash\nnpx serve ./dist\n```\n\nFor routine local viewing, just use `dev`, it runs a live server with hot reload. The `build` output is meant to be deployed to a host (see below), where it serves correctly from the site root.\n\n## Pinning for reproducible builds\n\nFor CI or team use, pin the version as a devDependency so everyone builds with the same dashboard:\n\n```bash\nnpm install --save-dev @dustinvk/wherefore-dashboard\n```\n\nBumping the dashboard later is a one-line change in your `package.json`.\n\n## Running several projects at once\n\nThe dashboard caches per install, not per project. That has one consequence worth knowing:\n\n- **Multiple `dev` servers at once is fine.** Browsing two or more projects side by side works --\n  each `dev` server renders its own project. You may see harmless `Duplicate id \"Q-...\"` warnings\n  in the logs; they do not affect what is served.\n- **Avoid running multiple `build`s at once against the same `npx` install.** Parallel builds of\n  different projects (e.g. a multi-repo CI job or script) share one on-disk cache and can\n  cross-contaminate each other's output. Either serialize the builds, or install the dashboard as a\n  per-project devDependency (see above) and build via an npm script so each project uses its own\n  isolated copy.\n\n## Deploy to Cloudflare Pages\n\n- Build command: `npx @dustinvk/wherefore-dashboard build`\n- Output directory: `dist`\n- Root directory: the folder containing your `package.json`\n\nSee the [hosting guide](https://github.com/DustinVK/wherefore/blob/main/packages/wherefore-dashboard/docs/HOSTING.md) for private-dashboard options (Cloudflare Access, basic auth).\n\n## How it works\n\nThe CLI reads your `wherefore/` directory in place and emits a static [Astro](https://astro.build) site. Your decision log stays as plain markdown in your repo; the dashboard is just a renderer you point at it.\n\nIt renders these views:\n\n- **Now** (home) -- where the project stands: plan items in flight, anything blocked on an open question, what is queued up next, plus open questions and recent decisions.\n- **Log** -- the decision log (`wherefore/log/`), filterable by area, topic, and status, with a reading view per entry.\n- **Plan** -- forward-looking work items (`wherefore/plan/P-*.md`) grouped by status (doing / blocked / todo / done, with dropped items kept behind a toggle). `blocked` is derived: an item is blocked while it points at a still-open question. Each item has a detail page with its checklist progress and links to the decisions and questions it references.\n- **Questions** -- open and resolved questions (`wherefore/questions/`).\n- **Tags** -- the area and topic vocabulary with per-tag decision counts.\n\nThe `wherefore/` directory is produced by the [wherefore plugin](https://github.com/DustinVK/wherefore) for Claude Code.\n\n## License\n\nMIT. Source at [github.com/DustinVK/wherefore](https://github.com/DustinVK/wherefore).","readmeFilename":"README.md"}