|
| 1 | +# Bio-Babel.github.io |
| 2 | + |
| 3 | +Source of <https://bio-babel.github.io>. Pages serves `main` from the repo root, so a push |
| 4 | +is a deploy. |
| 5 | + |
| 6 | +`index.html` is the whole page — static markup, nothing rendered at runtime. `assets/js/main.js` |
| 7 | +only adds behaviour: sticky nav, scroll reveals, the stat counters, the stack tier picker, the |
| 8 | +library filter. Changing copy means editing `index.html`. |
| 9 | + |
| 10 | +```bash |
| 11 | +python3 -m http.server 8000 |
| 12 | +``` |
| 13 | + |
| 14 | +## Constraints |
| 15 | + |
| 16 | +Not preferences — each of these has already caused a bug. |
| 17 | + |
| 18 | +1. **No CDN, no web fonts, no runtime API calls.** Much of the audience is in mainland China, |
| 19 | + where Google Fonts and `api.github.com` are blocked or slow. Hence the system font stack and |
| 20 | + the hand-maintained catalog below. To guarantee Inter, self-host the woff2; do not add a |
| 21 | + `<link>`. |
| 22 | +2. **Paths stay relative**, so the site survives a move to a sub-path or a custom domain. |
| 23 | +3. **`.nojekyll` stays**, or Pages runs Jekyll over the files. |
| 24 | +4. **`og:image` stays a raster at an absolute URL.** Crawlers on X, Facebook, LinkedIn, Slack |
| 25 | + and Discord reject SVG and ignore relative URLs. Break this and every shared link renders |
| 26 | + without an image, silently. |
| 27 | +5. **Organization voice.** The libraries and the community lead; the contract layer and its |
| 28 | + benchmark share one section because they are two of the org's repositories, not the point |
| 29 | + of it. |
| 30 | +6. **R → Python is the demonstration, not the definition.** Copy may say the problem is |
| 31 | + particular to no pair of languages — that is a claim about the problem. Do not upgrade it |
| 32 | + into a claim that the tooling is already language-agnostic: `manifest_api.py` still carries |
| 33 | + an `r_package` field and the porting skill is still named `r2py-skills`. When that changes, |
| 34 | + the copy can. |
| 35 | + |
| 36 | +## Hard-coded facts |
| 37 | + |
| 38 | +The catalog is a snapshot (constraint 1), so some numbers are hand-maintained. Find all of them: |
| 39 | + |
| 40 | +```bash |
| 41 | +grep -niE 'seventeen|17 (r )?(librar|classic)|data-(count|filter)=|read-only tools' index.html |
| 42 | +``` |
| 43 | + |
| 44 | +That covers the meta and OpenGraph descriptions, the hero pill and paragraph, the stats strip, |
| 45 | +the catalog heading and the five filter counts. The cards themselves are one |
| 46 | +`<article class="lib">` each. Do not trust line numbers in this file — use the grep, and if you |
| 47 | +reword the copy, check the pattern still matches. |
| 48 | + |
| 49 | +| figure | where the truth is | |
| 50 | +|---|---| |
| 51 | +| library and repo counts | `curl -s 'https://api.github.com/orgs/Bio-Babel/repos?per_page=100'` — everything except `.github`, `Bio-Babel.github.io`, `bio-babel-MCP` and `bio-babel-MCPBench` is a library (`bio-babel-toolkit` and `bio-babel-annotator` are private and do not appear) | |
| 52 | +| `1,606` contracted symbols | sum of `symbols/` across each port's `_biobabel/` | |
| 53 | +| `12` read-only MCP tools | asserted by `tests/test_mcp_server.py::tool_count` in `bio-babel-MCP` | |
| 54 | +| per-card versions | PyPI | |
| 55 | +| the argument in the hero and the Why section | `manuscript/Draft_main_text_human.txt` — the copy is drawn from it, so keep the two consistent | |
| 56 | + |
| 57 | +## Logo |
| 58 | + |
| 59 | +```bash |
| 60 | +python3 tools/gen_logo.py # cairosvg is optional, previews only |
| 61 | +``` |
| 62 | + |
| 63 | +Regenerate rather than hand-editing the SVGs: the geometry is transcribed once in the script and |
| 64 | +every file derives from it. Two properties are easy to break — |
| 65 | + |
| 66 | +* **The arches are transparent cut-outs, not white fill.** Whatever sits behind shows through, so |
| 67 | + the mark must never go on a field near its own violet: the arcade disappears and the tower |
| 68 | + flattens into a triangle. On the tile the tower is cream for exactly this reason. |
| 69 | +* **The shipped files carry no `<mask>`.** The master artwork (`Bio-Babel/.github`, |
| 70 | + `profile/imgs/bio-babel-logo.svg`) uses one, and non-browser rasterisers silently drop it and |
| 71 | + paint a solid square. Everything here is a single nonzero-winding path instead. |
| 72 | + |
| 73 | +`<text>` in the banner is pinned with `textLength`; the viewer's fallback font is unknown and |
| 74 | +without it the tagline overflows the artboard. |
| 75 | + |
| 76 | +| file | use | |
| 77 | +|---|---| |
| 78 | +| `logo-mark.svg` | the mark, flat `#8477C8`. Nav, hero, footer | |
| 79 | +| `logo-mark-mono.svg` | `fill="currentColor"` — inline it to tint from CSS | |
| 80 | +| `logo-mark-ghost.svg` | white, for low-opacity watermarks | |
| 81 | +| `logo-mark-gradient.svg` | violet→gold; point the `logo-mark.svg` references at this for more lift | |
| 82 | +| `logo-tile.svg` | squircle tile — the org avatar and the touch icon | |
| 83 | +| `favicon.svg` | tile with a simplified arcade, so it still reads at 16 px | |
| 84 | +| `logo-wordmark.svg` | mark + `Bio-Babel` + tagline | |
| 85 | +| `logo-banner.svg` | 1080×240 banner, in use in the org profile README | |
| 86 | +| `og-card.png` | 1200×630 link preview, rendered from `tools/og-card.html` — command in its header | |
0 commit comments