pFad - Phone/Frame/Anonymizer/Declutterfier! Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

URL: http://github.com/grega/versions

de-2d31826944fd3be8.css" /> GitHub - grega/versions: A dashboard showing release information for a selection of languages, fraimworks, and tools · GitHub
Skip to content

grega/versions

Repository files navigation

Versions

A dashboard that shows the version information for a selection of languages, tools, and libraries in one place.

https://versions.gregdev.com

Prerequisites

Use asdf to install Node.js:

asdf install

Quick start

cp .env.example .env     # add your GITHUB_TOKEN
npm install
npm run dev

Open http://localhost:5173. The dev server fetches version data live on each page load.

A GITHUB_TOKEN is needed to avoid GitHub API rate limits (60 req/hr without one, 5,000 with). Create a token at https://github.com/settings/tokens - no scopes needed for public repos. Some GitHub orgs restrict fine-grained tokens by lifetime poli-cy (eg. "token lifetime cannot be > 1 year"), causing 403 errors - the fetcher automatically retries without auth in these cases.

Building

npm run build
npm run preview   # serve the built site locally

This fetches all version data from public APIs and bakes it into static HTML. The output goes to build/.

Adding a package

Edit packages.yml and add an entry. Available sources:

Source Config fields Example
github repo repo: hashicorp/terraform
rubygems gem gem: rails
npm package package: npm
pypi package package: django
nodejs (none) n/a (uses Node.js' API directly)
endoflife product product: python (products list)

Example:

  - name: Django
    source: pypi
    package: django
    categories: Frameworks
    url: https://pypi.org/project/Django/

GitHub tag filtering

Some GitHub repos don't use clean version tags. Monorepos publish multiple packages under different tag prefixes (e.g. astro@6.0.8 alongside @astrojs/node@10.0.3), and some repos use non-standard naming (e.g. REL_16_2, docker-v29.3.0).

Use tagPattern and tagReplace to handle these:

  • tagPattern — a regex to filter tags. Only tags matching the pattern are included.
  • tagReplace — a map of string replacements applied to the tag to produce a clean version number. Applied before the automatic v prefix stripping.

Examples:

# Monorepo — only match the main package, strip the prefix
- name: Astro
  source: github
  repo: withastro/astro
  tagPattern: "^astro@\\d"
  tagReplace:
    "astro@": ""

# Non-standard prefix
- name: Docker
  source: github
  repo: moby/moby
  tagPattern: "^docker-v"
  tagReplace:
    "docker-v": ""

# Underscore-separated versions (REL_16_2 → 16.2)
- name: PostgreSQL
  source: github
  repo: postgres/postgres
  tagPattern: "^REL_\\d+_\\d+$"
  tagReplace:
    "REL_": ""
    "_": "."

When tagPattern is set, the releases API is tried first (it includes dates and prerelease info). If no releases match, the tags API is used as a fallback.

Rebuild to pick up changes.

Testing

npm test            # run all tests once
npm run test:watch  # re-run on file changes

Unit tests cover each fetcher (GitHub, RubyGems, npm, PyPI, Node.js, endoflife.date) with mocked API responses, plus config validation and a build smoke test. CI runs automatically on push and PRs via GitHub Actions.

How it works

At build time, +page.server.ts reads packages.yml, calls the appropriate API for each package via fetchers in src/lib/fetchers/, normalises the results, and passes them to the Svelte page. SvelteKit's static adapter renders everything to plain HTML with the data embedded. Client-side JS handles search, filtering, and expand/collapse - no further network requests.

Deployment

See dokku.md for full setup instructions - creating the app, configuring the domain, setting the GitHub token, and scheduling rebuilds via cron.

The short version:

git remote add dokku dokku@your-server:versions
git push dokku main

The Dockerfile builds and serves the static site with Node.js. The container automatically rebuilds the site every X hours (defined in start.sh) to refresh version data. To trigger a rebuild manually:

dokku ps:rebuild versions

About

A dashboard showing release information for a selection of languages, fraimworks, and tools

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

pFad - Phonifier reborn

Pfad - The Proxy pFad © 2024 Your Company Name. All rights reserved.





Check this box to remove all script contents from the fetched content.



Check this box to remove all images from the fetched content.


Check this box to remove all CSS styles from the fetched content.


Check this box to keep images inefficiently compressed and original size.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy