The web scraping category page had no intro, leaving readers without guidance for picking among crawling frameworks, LLM-ready crawlers, AI browser agents, and content extractors.
Co-Authored-By: Claude <noreply@anthropic.com>
The page had no intro, so readers got no pick among the encoding detection, fuzzy matching, parser, slug, and ID libraries.
Co-Authored-By: Claude <noreply@anthropic.com>
The category page had no intro, giving readers no guidance for picking among the PDF, Office, Markdown, and config libraries listed.
Co-Authored-By: Claude <noreply@anthropic.com>
On section and subcategory pages, every row repeated its use case and current page as tags (and as the label under the name on phones), right under a heading that already said the same thing. They are now hidden in editorial order and shown again when a column sort flattens the groups.
Co-Authored-By: Claude <noreply@anthropic.com>
After sorting by a column, or while a search hid a group, category page group headings stayed hidden, so the header's jump links (and any use-case heading link) pointed at a hidden element and did nothing.
Co-Authored-By: Claude <noreply@anthropic.com>
With tags now pointing at section anchors instead of filtering in place, subcategory pages (74 clicks and 19.7K impressions in the last 3 months) had no other internal links pointing to them.
Co-Authored-By: Claude <noreply@anthropic.com>
Clicking a category or group tag filtered the homepage table in place while rewriting the address bar to the category URL, so one URL rendered two different pages and readers never reached category pages with their intros and guides; category pages also showed a redundant self-referential filter bar.
Co-Authored-By: Claude <noreply@anthropic.com>
Covers Pydantic for API input and config, Pandera for dataframes, and jsonschema for JSON Schema validation.
Co-Authored-By: Claude <noreply@anthropic.com>
Covers pytest as the default, a how-to-choose item per README subcategory, and a guide on Hypothesis, Playwright, tox/Nox, mocks, and coverage.
Co-Authored-By: Claude <noreply@anthropic.com>
Covers librosa for audio analysis, MoviePy for scripted video editing, VidGear for real-time video, Mutagen vs tinytag for tag read/write and licensing, and beets as a CLI tag/organization tool.
Co-Authored-By: Claude <noreply@anthropic.com>
Covers OpenCV as the default, Ultralytics YOLO for detection/segmentation/pose models and its AGPL-3.0/Enterprise License terms, Kornia for GPU-batch vision ops, FiftyOne for dataset curation, and pytesseract vs EasyOCR for OCR.
Co-Authored-By: Claude <noreply@anthropic.com>
Ruff for linting and formatting, a type checker alongside it, and pre-commit to run them, with per-tool guidance sourced from each project's own docs.
Co-Authored-By: Claude <noreply@anthropic.com>
Explains when to pick Wagtail (developer-defined page types) versus
django CMS (editors composing pages live), based on each project's
own documentation.
Co-Authored-By: Claude <noreply@anthropic.com>
Category pages sorted rows by downloads, which buried editorial leads (the Django ORM showed as row 7 of 7, tkinter as 14 of 14) against CONTRIBUTING.md's "position is the marker"; the full intro in the hero pushed the table 2.5 screens down on a phone; and every page repeated the same "Search every project in one place" H2.
Co-Authored-By: Claude <noreply@anthropic.com>
Every entry description row carried aria-hidden="true", hiding descriptions that sighted readers can see from screen readers.
Co-Authored-By: Claude <noreply@anthropic.com>
Category page titles read "ORM Python Libraries", but people search "python orm", so the title word order didn't match the query.
Co-Authored-By: Claude <noreply@anthropic.com>
Personal Claude Code preview config, now holding a local-worktree server with an absolute path, was tracked so local edits showed as repo changes; excluded via .git/info/exclude instead.
Co-Authored-By: Claude <noreply@anthropic.com>
7 of its 13 items carried links while the other intros' lists carry none, and the entry table already links every project.
Co-Authored-By: Claude <noreply@anthropic.com>
The list had 22 items, which in the upcoming layout sits above the entry table and would push it 4-5 phone screens down; it now has one item per README subcategory, in README order, reusing the intro's own wording.
Co-Authored-By: Claude <noreply@anthropic.com>
The old intro told every FastAPI app to use SQLModel, which SQLModel's own docs don't claim beyond simple cases, and leaned on API names from SQLAlchemy's 2.0 rename (Mapped, mapped_column).
Co-Authored-By: Claude <noreply@anthropic.com>
The old intro's lead used the same "For a Python X library, use …" template as other category pages, and it carried version-bound usage tips (Qt Widgets vs Qt Quick, pyside6-uic, per-toolkit threading helpers) instead of each project's recommended setup.
Co-Authored-By: Claude <noreply@anthropic.com>
The AI and Agents category page had no intro, so readers got a 35-project list with no guidance on which library to pick for building an agent, serving a model, or fine-tuning.
Co-Authored-By: Claude <noreply@anthropic.com>
Adds a "website" launch config that runs `make preview` (build, rebuild on file changes, serve website/output), so the desktop app's preview pane can start the site in one step.
Co-Authored-By: Claude <noreply@anthropic.com>
Audits that rename or dissolve a category never added a redirect, which is how the 404s appearing in Search Console traced back to renamed category pages.
Co-Authored-By: Claude <noreply@anthropic.com>
Category pages carried no text of their own beyond the README one-line description, and most meta descriptions fell back to a generic "Explore N curated Python projects" line, which correlated with weak search rankings for category queries. This adds optional per-category intro markdown files rendered under the H1, with the first paragraph used as the meta description and links opening in a new tab, starting with the ORM category.
Co-Authored-By: Claude <noreply@anthropic.com>
Renamed or dissolved category slugs (e.g. /categories/web-servers/rpc/, /categories/code-analysis/code-linters/) returned 404, Search Console lists 7 of them, and each audit re-home was dropping the old URL's ranking.
Co-Authored-By: Claude <noreply@anthropic.com>