Commit Graph

2162 Commits

Author SHA1 Message Date
Vinta Chen
800d698b46 style: fix expand-content font size and unify CTA copy
Set explicit font-size on .expand-content to prevent it inheriting
a smaller size from context. Standardize the two call-to-action labels
to "Submit a project" (lowercase, consistent phrasing).

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-22 14:31:16 +08:00
Vinta Chen
680de45c00 style(css): increase hero h1 font size on desktop and mobile
Grow the hero heading clamp range (4rem->4.5rem min, 7.5rem->8.5rem max on
desktop; 3.2rem->3.6rem min, 4.8rem->5.2rem max on mobile) for a bolder
visual impact in the redesigned homepage.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-22 14:27:51 +08:00
Vinta Chen
951d233a65 refactor(css): extract font-size magic numbers into CSS custom properties
Replace hardcoded font-size values (0.78rem, 0.76rem) with named tokens
--text-label and --text-tag so they are easy to find and change in one place.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-22 14:27:41 +08:00
Vinta Chen
dbc8415991 chore: add .playwright-cli and .agents to .gitignore
Ignores generated directories from Playwright CLI and Codex agent
tooling, keeping them out of version control.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-22 14:20:41 +08:00
Vinta Chen
3e7ff12614 Fix sticky top button behavior 2026-03-22 14:17:17 +08:00
Vinta Chen
39a2abbfcc style: polish website hero and table UI 2026-03-22 14:05:10 +08:00
Vinta Chen
06a5a701a0 style: refine website footer and heading 2026-03-22 08:05:25 +08:00
Vinta Chen
7d1d9e0af3 feat: redesign website homepage 2026-03-22 07:54:14 +08:00
Vinta Chen
15b0ff3b07 fix: promote flower and pyenv-win to standalone entries
flower was a sub-entry under celery, pyenv-win under pyenv. Both are
standalone projects that deserve their own rows on the website.

Moved flower from Task Queues to Admin Panels since it is a monitoring
and web admin tool, not a task queue itself. Placed pyenv-win as a
top-level entry in Environment Management.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 02:43:41 +08:00
Vinta Chen
49fafd3497 refactor(website): move back-to-top button into sticky table header
Replaces the fixed-position floating button with an inline button
inside the last column of the sticky table header. Removes the hidden
attribute toggle and float positioning in favour of opacity/pointer-
events toggling, keeping the visibility logic intact.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-22 02:28:16 +08:00
Vinta Chen
818950f442 fix(website): fix sticky header on mobile and add border shadow
Move overflow-x: auto from .table-wrap to the mobile breakpoint only,
so horizontal scrolling only applies on small screens. Add box-shadow
to sticky thead th for visual separation. Reset th position to static
on mobile to avoid stacking context issues.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-22 02:25:58 +08:00
Vinta Chen
1d05e98537 fix(website): make back-to-top scroll instant instead of smooth
The smooth scroll behavior felt sluggish on a 505-row page. Instant
jump is more responsive for a utility button.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 02:24:26 +08:00
Vinta Chen
bdc5c6c5d7 style(website): remove hero-in entrance animation
The animation added a slight stutter on page load without meaningful UX benefit.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-22 02:23:31 +08:00
Vinta Chen
b6bcb2c7e3 feat(website): add entrance animations and CSS-based filter bar visibility
Replace hidden attribute on filter-bar with opacity/transform transition
driven by a .visible class, allowing smooth fade-in/slide-down when a
filter is active. Add staggered hero-in keyframe animations to the page
title, subtitle, action buttons, and search box. Polish sortable table
headers with color transition on hover and active states.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-22 02:22:07 +08:00
Vinta Chen
7be5e77186 fix(website): reduce tooltip transition duration from 0.25s to 0.15s
Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-22 02:20:07 +08:00
Vinta Chen
49eae1aba3 fix(website): center back-to-top button using left/margin instead of right
Previously used right: max(1.5rem, calc(50vw - 700px + 0.5rem)) which
caused the button to overlap content at certain viewport widths. Switch
to left: 50% with margin-left: -2rem to keep it centered relative to
the viewport without interfering with sidebar or content layout.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-22 02:19:40 +08:00
Vinta Chen
7aeb8fbb65 feat(website): add back-to-top button
Adds a fixed-position button that fades in after scrolling 600px and
smoothly scrolls back to the top on click. Hidden by default via the
HTML hidden attribute so noscript users never see it.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-22 02:17:57 +08:00
Vinta Chen
4f297a5301 fix(website): sort starred stdlib entries after starred non-stdlib entries
Within the same star count, built-in (stdlib) entries were interleaved
with third-party entries. Add a builtin tier to the sort key so stdlib
entries always rank below non-stdlib entries at equal star counts.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-22 02:15:22 +08:00
Vinta Chen
d3317bf3c9 feat(website): add Built-in category tag for stdlib entries
Stdlib entries now show a "Built-in" tag alongside their regular
category tag. The tag is clickable and filters to all 17 stdlib
entries. Added to data-cats attribute so existing filter logic works.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 02:12:51 +08:00
Vinta Chen
37a9443bbb fix(website): map built-in entries to cpython for star data lookup
Entries with source_type 'Built-in' have no extractable GitHub repo key
from their URL, so they never received star/metadata enrichment. Fall
back to python/cpython for these entries so the star count and related
data are populated correctly.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-22 02:10:44 +08:00
Vinta Chen
8e7b881659 fix(website): key dedup by (url, name) to allow same-url different-name entries
Previously, two entries sharing the same URL but different names would be
collapsed into one. Using a composite (url, name) key preserves distinct
entries while still merging true duplicates.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-22 02:08:42 +08:00
Vinta Chen
bfaa207ef3 refactor(website): rename stdlib source type label to Built-in
Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-22 02:04:45 +08:00
Vinta Chen
666f6e52d0 feat(website): add source type badges for non-GitHub entries
Detect the hosting source (stdlib, GitLab, Bitbucket, External) from
the entry URL and surface it as a small badge in the stars column where
a star count would otherwise show an em dash.

Stdlib entries also get their own sort tier — between starred entries
and other no-star entries — so the standard library is not buried at
the bottom of each category.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-22 02:03:00 +08:00
Vinta Chen
f7b51a6207 fix: update entries to use GitHub URLs as primary links
spark.ml, django.db.models, and geodjango were pointing to
documentation pages as their primary link rather than the
GitHub repository. Move docs URLs inline as descriptive links
so the primary link follows the standard GitHub-first convention.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-22 01:48:36 +08:00
Vinta Chen
3417dce4c1 use github repo url for openstack 2026-03-22 01:40:51 +08:00
Vinta Chen
81074548b5 test: lower category count floor to 69 to match current README
Several sections were removed in recent cleanup commits, so the previous
floor of 76 was no longer accurate.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-22 01:32:32 +08:00
Vinta Chen
32acf942d9 ci: run tests before building and deploying website
Catches parser regressions before any deployment artifact is produced.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-22 01:32:28 +08:00
Vinta Chen
d78c2f785f refactor(website): hoist loop-invariant variables outside the fetch loop
now_iso and total_batches were recomputed on every iteration. Moving them
above the loop makes intent clearer and avoids redundant work. Also
simplifies cache dict construction with dict unpacking.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-22 01:32:26 +08:00
Vinta Chen
3d9c2ae507 perf(website): cache sort values and batch DOM appends in sortRows
Calling getSortValue inside the comparator ran DOM queries on every
comparison (O(n log n) reads). Hoisting into a forEach beforehand reduces
that to O(n). Batching row appends through a DocumentFragment also avoids
repeated reflows during table reorder.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-22 01:32:21 +08:00
Vinta Chen
d36f1ed8d1 refactor(website): remove unused Entry TypedDict, write llms.txt from parsed text
Entry was dead code with no callers. Switching from shutil.copy to
write_text uses the already-loaded readme_text variable directly instead
of re-reading the file from disk.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-22 01:32:17 +08:00
Vinta Chen
c87fdacd7b docs: remove Editor Plugins section and fold RPC into Web Servers
Remove the Editor Plugins and IDEs section — modern editors handle Python
via LSP natively, making a curated list of editor plugins less useful.

Consolidate the standalone RPC Servers section into a subsection under
Web Servers to reflect that grpcio and rpyc are network server libraries,
not a separate category.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-21 16:50:48 +08:00
Vinta Chen
ff9114784a docs: update Email section description and replace pymssql with mssql-python
Expand the Email section description to mention mail server management.
Replace the unmaintained pymssql entry with the official Microsoft
mssql-python driver, which is actively maintained and built on ODBC.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-21 16:47:11 +08:00
Vinta Chen
6b59080208 docs: remove more unmaintained/redundant entries, replace hashids with sqids
Dead/unmaintained:
- elpy (maintainer stepped down, superseded by Eglot)
- jedi-vim (superseded by native LSP clients)
- python-mode (no plugin development, only CI commits)
- fpp/PathPicker (abandoned by Facebook, last release 2022)
- mouse (last release 2020, pynput covers it)
- karateclub (last release Dec 2022)

Redundant/too niche:
- taskflow (OpenStack-internal, 372 stars)
- django-pipeline (overlaps django-compressor)
- hermescache (~1k downloads/week, solo maintainer)
- pylibmc (last release 2022, pymemcache has taken over)

Replaced:
- hashids -> sqids (hashids project rebranded, dead since 2020)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 16:38:43 +08:00
Vinta Chen
7f21136c94 docs: remove unmaintained and redundant entries
Dead/unmaintained:
- html5lib (no release since 2019)
- fsociety (no commits since 2022)
- optimus (no development since 2023)
- flanker (abandoned by Mailgun)
- imbox (last release Nov 2022)
- green (dormant, pytest dominates)

Redundant/superseded:
- eyed3 (subset of mutagen, GPL)
- odmantic (redundant with beanie)
- audioflux (not established, librosa dominates)
- treq (niche Twisted HTTP client, 606 stars)
- cliff (OpenStack-internal, 260 stars)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 15:54:04 +08:00
Vinta Chen
7512f63a18 docs: update repository URLs to reflect project org transfers
Update GitHub URLs for projects that have moved to new organizations or
official accounts: jax, keras, lightgbm, gensim, fastapi, uvicorn,
authlib, django-oauth-toolkit, flask-admin, cassandra-driver, akshare,
altair, bqplot, pymc, python-cqrs, ptpython, prospector, isort,
schemathesis, django-debug-toolbar, awesome-sphinxdoc, YouCompleteMe,
SpiffWorkflow, rpyc, typer, dearpygui, ftfy, textdistance, pendulum,
poetry, websockets. Also updates keras description to reflect multi-backend
support and pymc description to match current project scope. Removes PTVS
(archived) entry.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-21 15:48:12 +08:00
Vinta Chen
e8d3d2984d docs: remove unmaintained entries and add awscli
Remove entries that are unmaintained, low-quality, or superseded:
werkzeug (WSGI server section), feincms, ultrajson, schema, voluptuous,
bpython, splinter, s3cmd, kafka-python, streamparse, zerorpc,
bashplotlib, quads, dejavu, kapre, pyAudioAnalysis, harfang3d,
configobj.

Add awscli to Cloud Providers as a widely-used modern alternative.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-21 15:43:06 +08:00
Vinta Chen
f50bd8fc00 docs: remove unmaintained entries and replace youtube-dl with yt-dlp
Remove eve, cornice, python-jose, python-readability, yapf, py2app, and
py2exe as unmaintained or superseded. Replace youtube-dl with yt-dlp,
its actively maintained fork.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-21 15:34:50 +08:00
Vinta Chen
7ead57f654 clean up 2026-03-21 15:28:47 +08:00
Vinta Chen
5c05dabc0e add back ultrajson 2026-03-21 15:26:09 +08:00
Vinta Chen
77b27508ab docs: remove unmaintained entries and update PyPDF2 to pypdf
- Remove polyglot, pkuseg-python, snownlp (Chinese NLP), lightfm,
  genshi, flask-assets, webassets, django-cache-machine, ultrajson,
  bowler, doublex, httpretty, mixer, logbook, path.py, audioread,
  TimeSide, cocos, clpython, PeachPy, pyston, pluginbase
- Replace PyPDF2 with pypdf (the maintained successor)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-21 15:23:27 +08:00
Vinta Chen
1d09426061 docs: remove unmaintained entries and add modern alternatives
- Web APIs: add django-ninja and apiflask, remove django-tastypie, flask-restful, and sandman2
- Web Scraping: remove grab and newspaper (unmaintained)
- Data Validation: remove colander and schematics (low activity)
- Testing: remove nose2 (superseded by pytest)
- Profiler: replace vprof with scalene (actively maintained, more capable)
- Package Management: remove mamba (redundant with conda)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-21 15:20:01 +08:00
Vinta Chen
55e922e594 docs: remove unmaintained or low-quality entries across multiple categories
Removed entries that no longer meet quality or maintenance standards:
- NLP: langid.py (unmaintained)
- Web Scraping: requests-html, toapi (unmaintained)
- Search: elasticsearch-dsl-py (redundant alongside elasticsearch-py)
- DevOps: python-lambda, delegator.py (unmaintained)
- HTML/XML: untangle (unmaintained)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-21 15:13:32 +08:00
Vinta Chen
96d44fcf25 docs: remove low-quality entries and consolidate cytoolz into toolz
Remove makesite, pysimdjson, python-rapidjson, python-ds, buildout,
Levenshtein, and arrow as standalone entries due to low quality or
maintenance concerns. Fold cytoolz reference into the toolz entry to
reduce duplication while preserving discoverability.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-21 15:07:52 +08:00
Vinta Chen
f52c85a151 docs: remove unmaintained or superseded entries across multiple sections
Drops entries that are abandoned, redundant, or no longer meet quality bar:
- NLP: pattern (unmaintained since 2018)
- Computer Vision: tesserocr (superseded by pytesseract)
- Recommender Systems: spotlight (archived, no longer maintained)
- API: flask-api (deprecated in favour of flask-restful), hug (archived)
- Caching: beaker (unmaintained, WSGI-era legacy)
- File Formats: textract (unmaintained, fragile system deps)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-21 15:04:54 +08:00
Vinta Chen
61e6f442dc refactor: merge and reorganize sections for better discoverability
- Web Scraping: split into Frameworks and Content Extraction subcategories
- DevOps: rename SSH-style Deployment to Deployment (absorbs Serverless),
  merge Process Management into Monitoring as Monitoring and Processes,
  collapse Backup/Chaos Engineering/Git Hooks into Other
- Fold standalone Processes section into DevOps > Monitoring and Processes
- Merge Audio Processing and Video Processing into Audio & Video Processing
- Remove Processes from ToC; update Audio/Video ToC entry

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-21 14:58:05 +08:00
Vinta Chen
0c4d411ae8 refactor: consolidate thin subcategories and split Data Analysis by domain
- Merge URL Manipulation (single entry) into HTTP Clients
- Move python-slugify into General Text Processing, removing the one-entry Slugify subcategory
- Consolidate YAML, TOML, and CSV subcategories into a single Data Formats group
- Split Data Analysis into General and Financial Data subcategories to improve discoverability

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-21 14:52:23 +08:00
Vinta Chen
1fa8847631 docs: remove unmaintained or low-quality entries across multiple categories
Removes 14 entries from Asset Management, Web Content Extracting, URL
Parsing, Search, Testing, Task Queues, Subprocesses, Network
Virtualization, Text / Slugify, HTML & XML, File Format Processing,
Audio, and Video sections.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-21 14:46:22 +08:00
Vinta Chen
1bc421867c docs: add missing well-known libraries across multiple sections
Adds entries for bottle, robyn, starlette, connexion, strawberry,
flask-socketio, trafilatura, cachetools, ibis, modin, pandera,
chalice, grpcio, anyio, dateparser, python-dotenv, and mitmproxy.
Also removes zappa (deprecated/unmaintained) and graphene (replaced
by strawberry).

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-21 14:37:25 +08:00
Vinta Chen
d7ffd63fa7 docs: fix stale cross-reference link in Web Frameworks section
Update the 'Also see' link from the old absolute GitHub URL pointing
to #restful-api to the current relative anchor #web-apis, matching
the section rename in a previous refactor.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-20 21:10:55 +08:00
Vinta Chen
bec981806a refactor: reorganize thematic groups and reorder sections within groups
Restructures the top-level ToC groups for better logical cohesion:
- Split 'Web & API' into 'Web' (frameworks, servers, CMS) and
  'HTTP & Scraping' (clients, scraping, URL, email)
- Move 'Database & Storage' earlier in the ToC, before 'Data & Science'
- Merge 'Web Content Extraction' and 'Web Crawling' into a single
  'Web Scraping' section
- Rename 'Content & Media' to 'Text & Documents' and 'Media' (split)
- Rename 'System & Runtime' to 'Python Language' and 'Python Toolchain'
- Rename 'Security & Auth' to 'Security'; move Authentication to Web group
- Rename 'Development Tools' to 'Developer Tools', 'DevOps & Infrastructure' to 'DevOps'
- Reorder sections within groups to reflect learning progression
  (e.g., Deep Learning before Machine Learning in AI & ML)
- Move Hardware and Microsoft Windows to Miscellaneous group
- Add s3cmd to DevOps and youtube-dl to Command-line Tools
- Update CONTRIBUTING.md example group names to match new labels

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-20 21:06:08 +08:00