mirror of
https://github.com/nubenetes/awesome-kubernetes.git
synced 2026-08-25 07:57:25 +00:00
feat(v2): promote Awesome Lists to a flagship page with hero + category grid
The V2 "Awesome Lists" page (other-awesome-lists.md, derived from V1's /v1/other-awesome-lists/) already existed but was buried under the "Architectural Foundations" submenu. Promote it to a top-level, high-impact destination: - New src/awesome_page.py builds a hero banner + a category card grid derived from the page's own rendered H2 sections (stays in sync with AI re-clustering). - v2_optimizer injects the header for other-awesome-lists.md during rendering, so it survives pipeline regeneration. - Move it to a prominent top-level nav entry "⭐ Awesome Lists" (removed from the Architectural Foundations submenu). - Add hero/grid/card styles to the V2 stylesheet. - Apply the header to the current rendered page for immediate deploy. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
7e281ddc65
commit
07e64cbda0
Vendored
+105
@@ -1804,3 +1804,108 @@ input[type="text"] {
|
||||
|
||||
|
||||
|
||||
|
||||
/* ===================================================================
|
||||
The Awesome Lists page: high-impact hero + category card grid.
|
||||
Used by other-awesome-lists.md (header injected by src/awesome_page.py).
|
||||
=================================================================== */
|
||||
.awesome-hero {
|
||||
margin: 1.2rem 0 1.6rem;
|
||||
padding: 2.2rem 1.5rem;
|
||||
border-radius: 16px;
|
||||
text-align: center;
|
||||
color: #fff;
|
||||
background:
|
||||
radial-gradient(120% 140% at 50% 0%,
|
||||
color-mix(in srgb, var(--md-accent-fg-color) 70%, #6d28d9) 0%,
|
||||
color-mix(in srgb, var(--md-primary-fg-color) 80%, #111827) 75%);
|
||||
box-shadow: 0 10px 34px -12px color-mix(in srgb, var(--md-accent-fg-color) 60%, transparent);
|
||||
overflow: hidden;
|
||||
}
|
||||
.awesome-hero__badge {
|
||||
font-size: clamp(1.4rem, 3.2vw, 2.2rem);
|
||||
font-weight: 800;
|
||||
letter-spacing: 0.06em;
|
||||
line-height: 1.15;
|
||||
text-shadow: 0 2px 12px rgba(0, 0, 0, 0.28);
|
||||
}
|
||||
.awesome-hero__sub {
|
||||
margin-top: 0.5rem;
|
||||
font-size: 0.95rem;
|
||||
opacity: 0.92;
|
||||
}
|
||||
.awesome-hero__sub code {
|
||||
background: rgba(255, 255, 255, 0.18);
|
||||
color: #fff;
|
||||
padding: 0.05em 0.35em;
|
||||
border-radius: 5px;
|
||||
}
|
||||
.awesome-hero__stats {
|
||||
margin-top: 1.3rem;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: center;
|
||||
gap: 0.7rem 1.4rem;
|
||||
}
|
||||
.awesome-hero__stat {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
font-size: 0.72rem;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.08em;
|
||||
opacity: 0.9;
|
||||
}
|
||||
.awesome-hero__stat strong {
|
||||
font-size: 1.55rem;
|
||||
line-height: 1;
|
||||
font-weight: 800;
|
||||
}
|
||||
|
||||
.awesome-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(210px, 1fr));
|
||||
gap: 0.85rem;
|
||||
margin: 1.4rem 0 2rem;
|
||||
}
|
||||
.awesome-card {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
gap: 0.6rem;
|
||||
min-height: 84px;
|
||||
padding: 0.85rem 1rem;
|
||||
border-radius: 12px;
|
||||
border: 1px solid color-mix(in srgb, var(--md-accent-fg-color) 24%, transparent);
|
||||
background: var(--md-default-bg-color);
|
||||
color: var(--md-default-fg-color);
|
||||
text-decoration: none;
|
||||
transition: transform 0.14s ease, box-shadow 0.14s ease, border-color 0.14s ease;
|
||||
}
|
||||
.awesome-card:hover {
|
||||
transform: translateY(-3px);
|
||||
border-color: var(--md-accent-fg-color);
|
||||
box-shadow: 0 12px 26px -14px color-mix(in srgb, var(--md-accent-fg-color) 70%, transparent);
|
||||
}
|
||||
.awesome-card__name {
|
||||
font-weight: 700;
|
||||
font-size: 0.95rem;
|
||||
line-height: 1.25;
|
||||
}
|
||||
.awesome-card__meta {
|
||||
display: flex;
|
||||
align-items: baseline;
|
||||
gap: 0.4rem;
|
||||
}
|
||||
.awesome-card__count {
|
||||
font-size: 1.35rem;
|
||||
font-weight: 800;
|
||||
color: var(--md-accent-fg-color);
|
||||
line-height: 1;
|
||||
}
|
||||
.awesome-card__stars {
|
||||
font-size: 0.7rem;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.06em;
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
"""High-impact header for the V2 "Awesome Lists" page.
|
||||
|
||||
The Awesome Lists page (``other-awesome-lists.md``, derived from V1's
|
||||
``/v1/other-awesome-lists/``) is a curated, AI-classified directory of the best
|
||||
external ``awesome-*`` lists across the Cloud Native ecosystem. This module
|
||||
builds the flagship hero banner + a category grid (cards that jump to each
|
||||
in-page section), generated from the page's own rendered ``##`` headings so it
|
||||
stays in sync no matter how the AI re-clusters the categories.
|
||||
|
||||
Pure stdlib so it can run inside ``src.v2_optimizer`` and be tested standalone.
|
||||
"""
|
||||
|
||||
import re
|
||||
|
||||
_H2_RE = re.compile(r"^##\s+(.+?)\s*$", re.MULTILINE)
|
||||
_LINK_RE = re.compile(r"\]\(https?://")
|
||||
|
||||
|
||||
def _slug(text: str) -> str:
|
||||
"""Slug matching python-markdown/toc anchors (lowercase, no punctuation)."""
|
||||
s = text.lower().replace("&", " ")
|
||||
s = re.sub(r"[()]", "", s)
|
||||
s = re.sub(r"[^a-z0-9]+", "-", s).strip("-")
|
||||
return s
|
||||
|
||||
|
||||
def _sections(body_md: str):
|
||||
"""Return [(title, anchor, link_count), ...] for each H2 section in order."""
|
||||
matches = list(_H2_RE.finditer(body_md))
|
||||
out = []
|
||||
for i, m in enumerate(matches):
|
||||
title = m.group(1).strip()
|
||||
start = m.end()
|
||||
end = matches[i + 1].start() if i + 1 < len(matches) else len(body_md)
|
||||
count = len(_LINK_RE.findall(body_md[start:end]))
|
||||
out.append((title, _slug(title), count))
|
||||
return out
|
||||
|
||||
|
||||
def build_awesome_lists_header(body_md: str) -> str:
|
||||
"""Build the hero + category grid that precedes the Awesome Lists body."""
|
||||
sections = _sections(body_md)
|
||||
total_lists = sum(c for _, _, c in sections)
|
||||
n_cats = len(sections)
|
||||
|
||||
md = (
|
||||
"<div class=\"awesome-hero\">\n"
|
||||
" <div class=\"awesome-hero__badge\">⭐ AWESOME LISTS ⭐</div>\n"
|
||||
" <div class=\"awesome-hero__sub\">The best curated <code>awesome-*</code> lists · AI-classified · link-validated</div>\n"
|
||||
" <div class=\"awesome-hero__stats\">\n"
|
||||
f" <span class=\"awesome-hero__stat\"><strong>{total_lists}</strong>curated lists</span>\n"
|
||||
f" <span class=\"awesome-hero__stat\"><strong>{n_cats}</strong>categories</span>\n"
|
||||
" </div>\n"
|
||||
"</div>\n\n"
|
||||
"!!! tip \"The meta-directory of the Cloud Native ecosystem\"\n"
|
||||
" A hand-picked, AI-classified index of the most valuable community "
|
||||
"**awesome-* lists** — every one link-validated and filed by topic. Jump "
|
||||
"to a category below, or browse the full directory. For the original "
|
||||
"exhaustive archive, see the [**V1 Historical Archive**](/v1/other-awesome-lists/).\n\n"
|
||||
)
|
||||
|
||||
if sections:
|
||||
md += "<div class=\"awesome-grid\">\n"
|
||||
for title, anchor, count in sections:
|
||||
md += (
|
||||
f" <a class=\"awesome-card\" href=\"#{anchor}\">\n"
|
||||
f" <span class=\"awesome-card__name\">{title}</span>\n"
|
||||
f" <span class=\"awesome-card__meta\"><span class=\"awesome-card__count\">{count}</span>"
|
||||
f"<span class=\"awesome-card__stars\">lists</span></span>\n"
|
||||
f" </a>\n"
|
||||
)
|
||||
md += "</div>\n\n"
|
||||
|
||||
return md
|
||||
+11
-2
@@ -16,6 +16,7 @@ from src.config import GEMINI_API_KEYS, GH_TOKEN, TARGET_REPO, MADRID_TZ, INVENT
|
||||
from src.gemini_utils import call_gemini_with_retry, normalize_url, clean_toc_text, get_github_activity, fetch_youtube_metadata
|
||||
from src.logger import log_event
|
||||
from src.inventory_manager import update_inventory_entry
|
||||
from src.awesome_page import build_awesome_lists_header
|
||||
|
||||
|
||||
def nuclear_strip(text: str) -> str:
|
||||
@@ -1724,8 +1725,16 @@ class V2VisionEngine:
|
||||
)
|
||||
|
||||
|
||||
md += await render_node(info["content"], -1, f_name.replace(".md", ""), used_headers, is_intro=(f_name=="introduction.md" or f_name=="about.md"))
|
||||
|
||||
_body = await render_node(info["content"], -1, f_name.replace(".md", ""), used_headers, is_intro=(f_name=="introduction.md" or f_name=="about.md"))
|
||||
# The flagship "Awesome Lists" page gets a high-impact hero + a grid
|
||||
# of its categories (auto-derived from the rendered H2 sections).
|
||||
if f_name == "other-awesome-lists.md":
|
||||
try:
|
||||
md += build_awesome_lists_header(_body)
|
||||
except Exception as e:
|
||||
log_event(f"[WARN] awesome-lists header failed: {str(e)[:100]}")
|
||||
md += _body
|
||||
|
||||
# Add Semantic "See Also" — same dimension + cross-dimension by shared tags
|
||||
same_dim = [f for f in data if f != f_name and data[f]["dim"] == info["dim"]]
|
||||
cross_dim = []
|
||||
|
||||
@@ -9,6 +9,74 @@ description: "Top Other Awesome Lists resources for 2026, AI-ranked: Awesome Com
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for Awesome Lists in the context of Architectural Foundations.
|
||||
|
||||
|
||||
<div class="awesome-hero">
|
||||
<div class="awesome-hero__badge">⭐ AWESOME LISTS ⭐</div>
|
||||
<div class="awesome-hero__sub">The best curated <code>awesome-*</code> lists · AI-classified · link-validated</div>
|
||||
<div class="awesome-hero__stats">
|
||||
<span class="awesome-hero__stat"><strong>33</strong>curated lists</span>
|
||||
<span class="awesome-hero__stat"><strong>13</strong>categories</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
!!! tip "The meta-directory of the Cloud Native ecosystem"
|
||||
A hand-picked, AI-classified index of the most valuable community **awesome-* lists** — every one link-validated and filed by topic. Jump to a category below, or browse the full directory. For the original exhaustive archive, see the [**V1 Historical Archive**](/v1/other-awesome-lists/).
|
||||
|
||||
<div class="awesome-grid">
|
||||
<a class="awesome-card" href="#ai-and-machine-learning">
|
||||
<span class="awesome-card__name">AI and Machine Learning</span>
|
||||
<span class="awesome-card__meta"><span class="awesome-card__count">1</span><span class="awesome-card__stars">lists</span></span>
|
||||
</a>
|
||||
<a class="awesome-card" href="#api-development">
|
||||
<span class="awesome-card__name">API Development</span>
|
||||
<span class="awesome-card__meta"><span class="awesome-card__count">2</span><span class="awesome-card__stars">lists</span></span>
|
||||
</a>
|
||||
<a class="awesome-card" href="#artificial-intelligence">
|
||||
<span class="awesome-card__name">Artificial Intelligence</span>
|
||||
<span class="awesome-card__meta"><span class="awesome-card__count">1</span><span class="awesome-card__stars">lists</span></span>
|
||||
</a>
|
||||
<a class="awesome-card" href="#cloud-native">
|
||||
<span class="awesome-card__name">Cloud Native</span>
|
||||
<span class="awesome-card__meta"><span class="awesome-card__count">10</span><span class="awesome-card__stars">lists</span></span>
|
||||
</a>
|
||||
<a class="awesome-card" href="#continuous-delivery">
|
||||
<span class="awesome-card__name">Continuous Delivery</span>
|
||||
<span class="awesome-card__meta"><span class="awesome-card__count">1</span><span class="awesome-card__stars">lists</span></span>
|
||||
</a>
|
||||
<a class="awesome-card" href="#curation">
|
||||
<span class="awesome-card__name">Curation</span>
|
||||
<span class="awesome-card__meta"><span class="awesome-card__count">3</span><span class="awesome-card__stars">lists</span></span>
|
||||
</a>
|
||||
<a class="awesome-card" href="#deployment-and-delivery">
|
||||
<span class="awesome-card__name">Deployment and Delivery</span>
|
||||
<span class="awesome-card__meta"><span class="awesome-card__count">1</span><span class="awesome-card__stars">lists</span></span>
|
||||
</a>
|
||||
<a class="awesome-card" href="#devops-and-platform-engineering">
|
||||
<span class="awesome-card__name">DevOps and Platform Engineering</span>
|
||||
<span class="awesome-card__meta"><span class="awesome-card__count">1</span><span class="awesome-card__stars">lists</span></span>
|
||||
</a>
|
||||
<a class="awesome-card" href="#infrastructure">
|
||||
<span class="awesome-card__name">Infrastructure</span>
|
||||
<span class="awesome-card__meta"><span class="awesome-card__count">1</span><span class="awesome-card__stars">lists</span></span>
|
||||
</a>
|
||||
<a class="awesome-card" href="#infrastructure-and-operations">
|
||||
<span class="awesome-card__name">Infrastructure and Operations</span>
|
||||
<span class="awesome-card__meta"><span class="awesome-card__count">5</span><span class="awesome-card__stars">lists</span></span>
|
||||
</a>
|
||||
<a class="awesome-card" href="#observability-and-monitoring">
|
||||
<span class="awesome-card__name">Observability and Monitoring</span>
|
||||
<span class="awesome-card__meta"><span class="awesome-card__count">1</span><span class="awesome-card__stars">lists</span></span>
|
||||
</a>
|
||||
<a class="awesome-card" href="#programming-languages">
|
||||
<span class="awesome-card__name">Programming Languages</span>
|
||||
<span class="awesome-card__meta"><span class="awesome-card__count">3</span><span class="awesome-card__stars">lists</span></span>
|
||||
</a>
|
||||
<a class="awesome-card" href="#software-engineering">
|
||||
<span class="awesome-card__name">Software Engineering</span>
|
||||
<span class="awesome-card__meta"><span class="awesome-card__count">3</span><span class="awesome-card__stars">lists</span></span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
## AI and Machine Learning
|
||||
|
||||
### MLOps
|
||||
|
||||
+1
-1
@@ -162,6 +162,7 @@ markdown_extensions:
|
||||
nav:
|
||||
- "🔙 Back to V1 (Exhaustive)": https://nubenetes.com/v1/
|
||||
- "The 2026 Vision": index.md
|
||||
- "⭐ Awesome Lists": other-awesome-lists.md
|
||||
- "Portal Guide":
|
||||
- "Topic Map": topic-map.md
|
||||
- "Methodology": methodology.md
|
||||
@@ -200,7 +201,6 @@ nav:
|
||||
- "Matrix Table": matrix-table.md
|
||||
- "Mkdocs": mkdocs.md
|
||||
- "Monitoring": monitoring.md
|
||||
- "Other Awesome Lists": other-awesome-lists.md
|
||||
- "Prometheus": prometheus.md
|
||||
- "Platform & Site Reliability":
|
||||
- "Chaos Engineering": chaos-engineering.md
|
||||
|
||||
Reference in New Issue
Block a user