diff --git a/README.md b/README.md index c8472b5..346965a 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# GitPulse +[![GitPulse: GitHub traffic, kept past the 14-day window.](https://raw.githubusercontent.com/fullstackspectrum/gitpulse/main/docs/brand/readme-banner.png)](https://github.com/fullstackspectrum/gitpulse) [![CI](https://img.shields.io/github/actions/workflow/status/fullstackspectrum/gitpulse/ci.yml?branch=main&style=for-the-badge&logo=githubactions&logoColor=white&label=CI&color=4f8cff&labelColor=10151d)](https://github.com/fullstackspectrum/gitpulse/actions/workflows/ci.yml) [![PyPI](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fpypi.org%2Fpypi%2Fgitpulse-analytics%2Fjson&query=%24.info.version&prefix=v&label=pypi&style=for-the-badge&logo=pypi&logoColor=white&color=8fb4ff&labelColor=10151d)](https://pypi.org/project/gitpulse-analytics/) diff --git a/docs/brand/README.md b/docs/brand/README.md new file mode 100644 index 0000000..c53f14b --- /dev/null +++ b/docs/brand/README.md @@ -0,0 +1,10 @@ +# GitPulse brand assets + +GitPulse follows the [Full-Stack-Spectrum](https://fullstackspectrum.com) design system. + +- `gitpulse-icon.svg`: the mark on a 64×64 `#0a0d12` tile (radius 14), for avatars and app icons. The dashboard inlines it as its tab icon (`ICON` in `src/gitpulse/report.py`); keep the two in sync. +- `gitpulse-mark.svg`: the mark alone, for dark grounds only (its layers are filled `#0a0d12`). +- `readme-banner.png`: 2560×640, shown at 1280×320 at the top of the README. +- `github-social-preview.png`: 1280×640, uploaded under the repository's Settings → Social preview. + +The mark is Layered Core with the red core replaced by a pulse line: blue and yellow layers behind a `#eef1f6` outline, cool at the back, hot at the front. diff --git a/docs/brand/github-social-preview.png b/docs/brand/github-social-preview.png new file mode 100644 index 0000000..6f3a052 Binary files /dev/null and b/docs/brand/github-social-preview.png differ diff --git a/docs/brand/gitpulse-icon.svg b/docs/brand/gitpulse-icon.svg new file mode 100644 index 0000000..0eeff4e --- /dev/null +++ b/docs/brand/gitpulse-icon.svg @@ -0,0 +1 @@ + diff --git a/docs/brand/gitpulse-mark.svg b/docs/brand/gitpulse-mark.svg new file mode 100644 index 0000000..e069da6 --- /dev/null +++ b/docs/brand/gitpulse-mark.svg @@ -0,0 +1 @@ + diff --git a/docs/brand/readme-banner.png b/docs/brand/readme-banner.png new file mode 100644 index 0000000..1558ea9 Binary files /dev/null and b/docs/brand/readme-banner.png differ diff --git a/src/gitpulse/report.py b/src/gitpulse/report.py index 029374a..b34520d 100644 --- a/src/gitpulse/report.py +++ b/src/gitpulse/report.py @@ -9,9 +9,20 @@ import math from html import escape from typing import Any +from urllib.parse import quote from gitpulse.org import OrgReport, RepoStats +# The GitPulse mark (docs/brand/gitpulse-icon.svg), inlined as the tab icon. +ICON = ( + '' + '' + '' + '' + '' +) + # Categorical slots follow the five-colour spectrum, cool to hot; a sixth slot is "Other". SERIES = 6 @@ -283,6 +294,7 @@ def repo_bars(attr: str, unit: str) -> list[tuple[str, int, str, str]]: downloads=_bar_list(repo_bars("downloads", "downloads"), "No release asset downloads."), rows=rows, missing=missing_html, + icon=_attr("data:image/svg+xml," + quote(ICON)), css=CSS, js=JS, ) @@ -536,6 +548,7 @@ def repo_bars(attr: str, unit: str) -> list[tuple[str, int, str, str]]: {title} +