Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -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/)
Expand Down
10 changes: 10 additions & 0 deletions docs/brand/README.md
Original file line number Diff line number Diff line change
@@ -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.
Binary file added docs/brand/github-social-preview.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions docs/brand/gitpulse-icon.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions docs/brand/gitpulse-mark.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/brand/readme-banner.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
13 changes: 13 additions & 0 deletions src/gitpulse/report.py
Original file line number Diff line number Diff line change
Expand Up @@ -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 = (
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64"><rect width="64" height="64" rx="14" fill="#0a0d12"/>'
'<rect x="25" y="11" width="28" height="28" rx="6" fill="#0a0d12" stroke="#4f8cff" stroke-width="3.5"/>'
'<rect x="18" y="18" width="28" height="28" rx="6" fill="#0a0d12" stroke="#f5c84c" stroke-width="3.5"/>'
'<rect x="11" y="25" width="28" height="28" rx="6" fill="#0a0d12" stroke="#eef1f6" stroke-width="3.5"/>'
'<path d="M16.5 40h4.5l2.75-6.5 4.5 12 2.75-5.5h3.5" fill="none" stroke="#ff4d5e" stroke-width="3" '
'stroke-linecap="round" stroke-linejoin="round"/></svg>'
)

# Categorical slots follow the five-colour spectrum, cool to hot; a sixth slot is "Other".
SERIES = 6

Expand Down Expand Up @@ -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,
)
Expand Down Expand Up @@ -536,6 +548,7 @@ def repo_bars(attr: str, unit: str) -> list[tuple[str, int, str, str]]:
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>{title}</title>
<meta name="theme-color" content="#0a0d12" />
<link rel="icon" type="image/svg+xml" href="{icon}" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600&family=Space+Grotesk:wght@400;500;600;700&display=swap" />
Expand Down
Loading