Highlights
This release modernizes the project after a long maintenance gap and moves the API to a current Python/FastAPI/Docker workflow.
Added
- Added typed FastAPI response models for repositories, developers, health, and metadata.
- Added
/healthendpoint for application and Docker health checks. - Added
/metadataendpoint with API version, route links, cache TTL, and supported parameter metadata. - Added short in-memory caching for upstream GitHub Trending HTML responses.
- Added mocked endpoint tests for repository and developer routes.
- Added Docker healthcheck and non-root container runtime user.
- Added Docker Hub release publishing documentation.
Changed
- Upgraded the project to Python 3.13.
- Modernized runtime and development dependencies.
- Moved project metadata and tool configuration to
pyproject.toml. - Replaced requirements-based development workflow with
uvanduv.lock. - Replaced the lint/import hook stack with Ruff.
- Modernized GitHub Actions for Python 3.13, pre-commit, tests, coverage, Docker builds, Docker Hub publishing, and GitHub releases.
- Hardened GitHub Trending request handling with timeout, status checks, User-Agent, and controlled
502errors. - Updated scraper article extraction to use BeautifulSoup selectors instead of string slicing.
- Refactored duplicated route fetch/parse logic.
- Refreshed README documentation for the current local, Docker, and release workflows.
- Standardized project naming to
GitHub Trending API.
Fixed
- Fixed root route URL generation behind FastAPI
TestClientand configurable base URLs. - Fixed language enum URL rendering for language-specific repository and developer routes.
- Fixed scraper compatibility with updated GitHub Trending markup.
Removed
- Removed Heroku deployment configuration.
- Removed legacy requirements files.
- Removed obsolete lint hooks that were replaced by Ruff.
Docker
The release workflow publishes:
niklastiede/github-trending-api:latestniklastiede/github-trending-api:v2.0.0