mirror of
https://github.com/tiennm99/awesome-ai-dev-tools.git
synced 2026-10-11 03:13:05 +00:00
feat: split data update from site build; publish via Cloudflare Pages
The updater fetched GitHub metadata and rendered the dashboard payload in a single step, so anything that published the site needed a GITHUB_TOKEN. Cloudflare Pages builds from a Git webhook and has no business holding one. Split the tool into three modes. The default update step still fetches GitHub and now records every API-sourced field in data/metadata.json, which is committed alongside README.md and data/history.jsonl. The new -build mode joins that snapshot with data/agents.yml and data/history.jsonl to render dist/ with no network access and no token; -check is unchanged. Supporting changes: - computeDeltaAt anchors the delta windows to when the data was fetched rather than the wall clock, so a redeploy days later reproduces the same Δ7d instead of sliding the window past its slack allowance. - writeSiteData takes updatedAt explicitly for the same reason: the timestamp labels data freshness, not build time. - sortStats is extracted from fetchStats so the build step re-ranks identically from committed metadata. - An agents.yml entry with no metadata yet is omitted with a warning instead of failing the build, which would otherwise block every deploy between merging a new entry and the next nightly run. - update.yml drops the GitHub Pages deploy steps and commits data/metadata.json; ci.yml runs `go run . -build` so a build that would break on deploy breaks in CI first. - site/_headers stops the edge serving a stale data.json after a refresh. - docs/DEPLOY.md covers the Cloudflare setup, including the one-time bootstrap of data/metadata.json that the build depends on. Also carries the in-progress curation work already in the tree: the module rename to awesome-ai-dev-tools, retagged entries, and removal of the archived Roo-Code, void, continue and suna entries.
This commit is contained in:
1 parent
3310ed36d4
commit
00c90c5be9
22 files changed
+728
-116
No files matched your search
@@ -1,9 +1,9 @@
|
||||
# AI Dev Tools
|
||||
# Awesome AI Dev Tools
|
||||
|
||||
> Curated ranking of AI-powered developer tools, sorted by GitHub stars.
|
||||
> Updated daily by GitHub Actions.
|
||||
|
||||
📊 **[Interactive dashboard with star-history charts →](https://tiennm99.github.io/ai-dev-tools/)**
|
||||
📊 **[Interactive dashboard with star-history charts →](https://awesome-ai-dev-tools.pages.dev/)**
|
||||
|
||||
**Last updated:** 2026-09-16 03:54 UTC · **Tracked:** 40 repos
|
||||
**Top 7-day mover:** [earendil-works/pi](https://github.com/earendil-works/pi) (+2642 stars)
|
||||
@@ -59,8 +59,8 @@
|
||||
2. A daily GitHub Actions workflow (`.github/workflows/update.yml`) runs the Go updater.
|
||||
3. The updater fetches live repo metadata via the GitHub GraphQL API in one batched query.
|
||||
4. Star counts are appended to `data/history.jsonl` for 7-day delta computation.
|
||||
5. This `README.md` is regenerated from `templates/readme.tmpl` and committed back to the repo.
|
||||
6. `site/data.json` is regenerated and the [dashboard](https://tiennm99.github.io/ai-dev-tools/) (`site/index.html`) is redeployed to GitHub Pages.
|
||||
5. This `README.md` and `data/metadata.json` are regenerated and committed back to the repo.
|
||||
6. That push triggers Cloudflare Pages, which runs `go run . -build` to render the [dashboard](https://awesome-ai-dev-tools.pages.dev/) from the committed data — no API token needed at build time. See [docs/DEPLOY.md](./docs/DEPLOY.md).
|
||||
|
||||
**Δ7d:** Change in stars over the past 7 days; `—` means fewer than 7 days of history.
|
||||
|
||||
@@ -83,7 +83,7 @@ agents:
|
||||
tags: [terminal, byo-model, interactive, community]
|
||||
```
|
||||
|
||||
**Tags** describe a tool across five facets — the [dashboard](https://tiennm99.github.io/ai-dev-tools/) filters on them, OR within a facet and AND across facets:
|
||||
**Tags** describe a tool across five facets — the [dashboard](https://awesome-ai-dev-tools.pages.dev/) filters on them, OR within a facet and AND across facets:
|
||||
|
||||
| Facet | Tags |
|
||||
|-------|------|
|
||||
|
||||
Reference in new issue
Block a user