Skip to content

feat(portfolio): a page and a badge for each organization - #347

Merged
shenxianpeng merged 1 commit into
mainfrom
feature/organization-pages
Oct 23, 2026
Merged

shenxianpeng merged 1 commit into
mainfrom
feature/organization-pages

Conversation

@shenxianpeng

@shenxianpeng shenxianpeng commented Oct 23, 2026 •

Copy link
Copy Markdown
Owner

Each organization gets a page of its own and a badge to show it, the way committers.top gives every ranked user and organization a badge: something an organization's open source program or developer relations team can put on its own pages, and a reason for it to link back.

What changes

  1. orgs/<domain>.html for the 200 organizations with the most commits in the last 12 months (the order of organizations.json): a one-line rule of how commits are counted, tiles (commits in the last 12 months, repositories, all commits since the first), a table of its commits to each repository linking to that repository's Authors page, and its badge with the Markdown to copy.
  2. orgs/<domain>.svg, a badge in the report's style: <portfolio title> | 1.2k commits to 12 projects in 12 months (all of them when it has none in the last 12 months), and orgs/<domain>.json, a shields.io endpoint for other styles. Made again with every build, so it stays current.
  3. Links: organization names on the Organizations page link to their pages, in both tables.
  4. Data: each organization in organizations.json gets by_repository (commits, last 12 months, addresses, first and last commit per repository).
  5. Gallery: the organizations' pages are in sitemap.xml.
  6. Only a name that is a domain ([a-z0-9-] labels with dots) gets files, and _open_portfolio_file accepts only orgs/<domain>.(html|svg|json), so a name can't write outside orgs/.

Only organizations get pages: domains one person commits from were already counted apart in #345, so no page is about a person.

Before / After (改动前 / 改动后)

A portfolio of four real repositories (FastAPI, Django, git, pytorch/vision), title "GitStats Gallery", with the Gallery's address.

Organizations page: names now link to their pages

Before After
before after

The new organization page, orgs/google.com.html (there was none before)

Desktop Phone (390 px)
after

Neither page scrolls sideways on a phone: 390 px wide at 390 px.

The badge

badge

Output files

Before After
Organization pages none orgs/<domain>.html, 144 for these four repositories (up to 200)
Badges none orgs/<domain>.svg and orgs/<domain>.json for each
organizations.json per organization totals and repository names + by_repository

Tests

Before After
Tests 1,133 1,145, all passing on Python 3.13
Coverage 100% 100% line and branch

📚 Documentation preview 📚: https://gitstats--347.org.readthedocs.build/

The 200 organizations with the most commits in the last 12 months get
orgs/<domain>.html, with their commits to each repository of the
portfolio and the markup of their badge, orgs/<domain>.svg, with a
shields.io endpoint next to it. The Organizations page links to them,
and the Gallery's sitemap lists them.
@netlify

netlify Bot commented Oct 23, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for shenxianpeng-gitstats ready!

Name Link
🔨 Latest commit 4177054
🔍 Latest deploy log https://app.netlify.com/projects/shenxianpeng-gitstats/deploys/6adb2f78f3d555d8ca8a0878
😎 Deploy Preview https://deploy-preview-347--shenxianpeng-gitstats.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@sonarqubecloud

Copy link
Copy Markdown

@shenxianpeng
shenxianpeng merged commit 486d70a into main Oct 23, 2026
30 checks passed
@shenxianpeng
shenxianpeng deleted the feature/organization-pages branch October 23, 2026 10:26
@shenxianpeng shenxianpeng added the enhancement New feature or request label Oct 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant