[PR #3106] [MERGED] Static category pages and path-based filter URLs #18383

Closed
opened 2026-05-11 15:00:13 -05:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/vinta/awesome-python/pull/3106
Author: @vinta
Created: 5/3/2026
Status: Merged
Merged: 5/3/2026
Merged by: @vinta

Base: masterHead: feature/better-seo-2


📝 Commits (10+)

  • e11afd1 feat(website): generate static category pages
  • c98cbe2 style(website): clarify category section heading
  • b00395a add missing links of category descriptions
  • 7fadbaf feat(website): add homepage category directory
  • 4005c2e feat(website): add slug and url to subcategory entries
  • 39d4b3d feat(website): add subcategory_path and subcategory_public_url helpers
  • a46b57e fix(readme): rename group "Miscellaneous" to "Other"
  • 583d5e7 feat(website): assert unique slugs across categories and groups
  • cee1e65 test(website): hoist pytest import to module level
  • 532d93d feat(website): generate static pages for groups under /categories/

📊 Changes

18 files changed (+1811 additions, -295 deletions)

View changed files

📝 DESIGN.md (+0 -0)
📝 Makefile (+9 -0)
📝 README.md (+2 -2)
📝 SPONSORSHIP.md (+1 -1)
📝 pyproject.toml (+22 -8)
📝 uv.lock (+32 -2)
📝 website/build.py (+228 -36)
📝 website/fetch_github_stars.py (+1 -5)
📝 website/readme_parser.py (+35 -26)
📝 website/static/main.js (+70 -10)
📝 website/static/style.css (+432 -1)
📝 website/templates/base.html (+6 -3)
website/templates/category.html (+283 -0)
📝 website/templates/index.html (+35 -12)
website/templates/sponsorship.html (+250 -0)
📝 website/tests/test_build.py (+396 -115)
📝 website/tests/test_fetch_github_stars.py (+2 -31)
📝 website/tests/test_readme_parser.py (+7 -43)

📄 Description

Summary

Follow-up to #3103. Expands the SEO/AEO discovery surface and reworks how filtering works on awesome-python.com.

  • Static category pages under /categories/ for every group, category, and subcategory, with breadcrumbs and inclusion in the sitemap. Category pages mirror the index layout (expand rows, descriptions, results note) so any landing surface feels consistent.
  • Path-based filter URLs replace the old querystring scheme. The index embeds a filter-to-url map (with </script> escaped) so tag clicks route client-side without losing crawlable URLs.
  • Homepage category directory with slugs/URLs, plus a "Browse by category" nav on group pages.
  • /sponsorship/ landing page describing tiers and editorial-independence policy.
  • Tooling: make lint, make format, make typecheck targets, ty added for type checking, ruff format applied, build template entries typed.
  • Misc: rename group MiscellaneousOther; remove duplicate tag rendering on group/category pages.

Test plan

  • make test (117 passed)
  • make build (14 groups, 71 categories, 537 entries)
  • Spot-check /categories/<group>/, /categories/<group>/<category>/, and /categories/built-in/ render and link correctly
  • Confirm tag clicks on the index update the URL via the path-based map and Back button works
  • Verify /sponsorship/ renders and nav works

🤖 Generated with Claude Code


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/vinta/awesome-python/pull/3106 **Author:** [@vinta](https://github.com/vinta) **Created:** 5/3/2026 **Status:** ✅ Merged **Merged:** 5/3/2026 **Merged by:** [@vinta](https://github.com/vinta) **Base:** `master` ← **Head:** `feature/better-seo-2` --- ### 📝 Commits (10+) - [`e11afd1`](https://github.com/vinta/awesome-python/commit/e11afd1730cb8fe275ada1a02fef047de947ccff) feat(website): generate static category pages - [`c98cbe2`](https://github.com/vinta/awesome-python/commit/c98cbe2cb1d1ef8db30a9989bd77be790cd8bda6) style(website): clarify category section heading - [`b00395a`](https://github.com/vinta/awesome-python/commit/b00395a301b761cb70d578e9b09def9957c6bfbd) add missing links of category descriptions - [`7fadbaf`](https://github.com/vinta/awesome-python/commit/7fadbaf6feedf629188949692cf2dade6a7e0b6f) feat(website): add homepage category directory - [`4005c2e`](https://github.com/vinta/awesome-python/commit/4005c2ea8206fa306222ca9fda9f90c12956f047) feat(website): add slug and url to subcategory entries - [`39d4b3d`](https://github.com/vinta/awesome-python/commit/39d4b3db4b7c66f2d95a984571a912c84fe0df02) feat(website): add subcategory_path and subcategory_public_url helpers - [`a46b57e`](https://github.com/vinta/awesome-python/commit/a46b57e428fb69ee35fd5031571a7ba7d6574ecc) fix(readme): rename group "Miscellaneous" to "Other" - [`583d5e7`](https://github.com/vinta/awesome-python/commit/583d5e7c514bdeabeadcb5aa9b6b4c6edb2bb996) feat(website): assert unique slugs across categories and groups - [`cee1e65`](https://github.com/vinta/awesome-python/commit/cee1e65fb3730a23ac6df3fe1ebc1835d862db3f) test(website): hoist pytest import to module level - [`532d93d`](https://github.com/vinta/awesome-python/commit/532d93d4364ed69068cf9e15b113e9191067a7ee) feat(website): generate static pages for groups under /categories/ ### 📊 Changes **18 files changed** (+1811 additions, -295 deletions) <details> <summary>View changed files</summary> 📝 `DESIGN.md` (+0 -0) 📝 `Makefile` (+9 -0) 📝 `README.md` (+2 -2) 📝 `SPONSORSHIP.md` (+1 -1) 📝 `pyproject.toml` (+22 -8) 📝 `uv.lock` (+32 -2) 📝 `website/build.py` (+228 -36) 📝 `website/fetch_github_stars.py` (+1 -5) 📝 `website/readme_parser.py` (+35 -26) 📝 `website/static/main.js` (+70 -10) 📝 `website/static/style.css` (+432 -1) 📝 `website/templates/base.html` (+6 -3) ➕ `website/templates/category.html` (+283 -0) 📝 `website/templates/index.html` (+35 -12) ➕ `website/templates/sponsorship.html` (+250 -0) 📝 `website/tests/test_build.py` (+396 -115) 📝 `website/tests/test_fetch_github_stars.py` (+2 -31) 📝 `website/tests/test_readme_parser.py` (+7 -43) </details> ### 📄 Description ## Summary Follow-up to #3103. Expands the SEO/AEO discovery surface and reworks how filtering works on awesome-python.com. - **Static category pages** under `/categories/` for every group, category, and subcategory, with breadcrumbs and inclusion in the sitemap. Category pages mirror the index layout (expand rows, descriptions, results note) so any landing surface feels consistent. - **Path-based filter URLs** replace the old querystring scheme. The index embeds a filter-to-url map (with `</script>` escaped) so tag clicks route client-side without losing crawlable URLs. - **Homepage category directory** with slugs/URLs, plus a "Browse by category" nav on group pages. - **`/sponsorship/` landing page** describing tiers and editorial-independence policy. - **Tooling**: `make lint`, `make format`, `make typecheck` targets, `ty` added for type checking, ruff format applied, build template entries typed. - **Misc**: rename group `Miscellaneous` → `Other`; remove duplicate tag rendering on group/category pages. ## Test plan - [x] `make test` (117 passed) - [x] `make build` (14 groups, 71 categories, 537 entries) - [ ] Spot-check `/categories/<group>/`, `/categories/<group>/<category>/`, and `/categories/built-in/` render and link correctly - [ ] Confirm tag clicks on the index update the URL via the path-based map and Back button works - [ ] Verify `/sponsorship/` renders and nav works 🤖 Generated with [Claude Code](https://claude.com/claude-code) --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
GiteaMirror added the pull-request label 2026-05-11 15:00:13 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/awesome-python#18383