|
1 | 1 | # pkgdiff |
2 | 2 |
|
3 | | -> Compare and analyze package versions across NuGet, npm, PyPI and Pub registries. Track breaking changes, view detailed release notes, and understand version differences with our free online diff tool. |
| 3 | +> Shows every release note between two versions of a package across NuGet, npm, PyPI, Maven, pub.dev and Packagist in one categorized timeline, with a security picture of the upgrade. |
4 | 4 |
|
5 | | -## Overview |
| 5 | +pkgdiff helps developers decide whether a dependency upgrade is safe. It combines release notes from the registries and from GitHub, and adds vulnerability and project health data. It is free to use and needs no account. |
6 | 6 |
|
7 | | -pkgdiff is a web-based tool that helps developers compare package versions across different registries (NuGet, npm, PyPI and Pub). It aggregates release notes from multiple sources including registry pages and GitHub Releases, providing a consolidated view of changes between any two versions. Perfect for developers upgrading dependencies and managing package updates. |
| 7 | +## Main pages |
8 | 8 |
|
9 | | -## Core Features |
| 9 | +- [Home](https://pkgdiff.dev/): Search for a package in any supported registry |
| 10 | +- [Browse packages](https://pkgdiff.dev/packages): All packages pkgdiff has analyzed |
| 11 | +- [Dependency audit](https://pkgdiff.dev/audit): Check a manifest's dependencies for known problems |
| 12 | +- [About](https://pkgdiff.dev/about): Who runs pkgdiff, its data sources and their limits |
10 | 13 |
|
11 | | -- **Multi-Registry Support**: Search packages across NuGet, npm, and other registries |
12 | | -- **Release Notes Aggregation**: Combines release notes from registry pages and GitHub Releases |
13 | | -- **Version Diff**: Compare any two versions to see consolidated changelogs |
14 | | -- **Real-Time Updates**: Background jobs continuously fetch and update package data |
15 | | -- **Categorized Changes**: Release notes are automatically categorized by type (features, fixes, breaking changes, etc.) |
16 | | -- **Export Functionality**: Export release notes in multiple formats (Markdown, JSON, Text) |
| 14 | +## Packages by registry |
17 | 15 |
|
18 | | -## Main Pages |
| 16 | +- [NuGet packages](https://pkgdiff.dev/packages?registry=nuget) |
| 17 | +- [npm packages](https://pkgdiff.dev/packages?registry=npm) |
| 18 | +- [PyPI packages](https://pkgdiff.dev/packages?registry=pypi) |
| 19 | +- [Maven packages](https://pkgdiff.dev/packages?registry=maven) |
| 20 | +- [pub.dev packages](https://pkgdiff.dev/packages?registry=pub.dev) |
| 21 | +- [Packagist packages](https://pkgdiff.dev/packages?registry=packagist) |
19 | 22 |
|
20 | | -### Home (/) |
21 | | -The landing page features a search interface where users can: |
22 | | -- Select a package registry from the dropdown (NuGet, npm, etc.) |
23 | | -- Search for any package by name |
24 | | -- View live updates of recently analyzed packages |
25 | | -- Access example searches with popular packages |
| 23 | +## Package pages |
26 | 24 |
|
27 | | -### Package Page (/package/:registry/:packageId) |
28 | | -Displays detailed information about a specific package: |
29 | | -- Package metadata (description, authors, license, repository) |
30 | | -- Complete version history with release dates |
31 | | -- Tabbed interface for viewing releases and comparing versions |
32 | | -- Direct links to package registry and source repository |
33 | | -- Categorized release notes for each version |
| 25 | +Package pages follow the pattern `https://pkgdiff.dev/package/{registry}/{packageId}`, for example [react on npm](https://pkgdiff.dev/package/npm/react). Each one lists the package's versions with categorized release notes, and can compare two versions. |
34 | 26 |
|
35 | | -### Browse Packages (/packages) |
36 | | -List view of all packages in the system with: |
37 | | -- Filtering by registry |
38 | | -- Search functionality |
39 | | -- Sorting options |
40 | | -- Pagination |
| 27 | +## Data sources |
41 | 28 |
|
42 | | -## API Endpoints |
| 29 | +- Registries: NuGet, npm, PyPI, Maven Central, pub.dev and Packagist |
| 30 | +- Release notes: registry pages, GitHub releases and changelogs |
| 31 | +- Security: OSV.dev, deps.dev, OpenSSF Scorecard and Socket |
43 | 32 |
|
44 | | -The service exposes a REST API: |
| 33 | +Changes are categorized by rules that match release note headings and keywords, so a category can be wrong. The release digests under `/blog` are AI-generated and not reviewed by a person; do not treat them as a primary source. |
45 | 34 |
|
46 | | -- `GET /api/package/{registry}/{packageId}` - Get package metadata and versions |
47 | | -- `POST /api/package/analyze` - Trigger package analysis |
48 | | -- `GET /api/package/registries` - List supported registries |
49 | | -- `GET /api/package/recent` - Get recent package searches |
50 | | -- `GET /health` - Service health check |
| 35 | +## Optional |
51 | 36 |
|
52 | | -## Data Sources |
53 | | - |
54 | | -pkgdiff retrieves data from: |
55 | | -1. **NuGet.org**: For .NET packages |
56 | | -2. **npmjs.com**: For Node.js packages |
57 | | -3. **GitHub Releases**: Fallback for release notes when registry data is incomplete |
58 | | -4. **Package repositories**: Direct links to source code and issue trackers |
59 | | - |
60 | | -## Technical Stack |
61 | | - |
62 | | -- **Frontend**: Angular with TypeScript, Tailwind CSS |
63 | | -- **Backend**: ASP.NET Core Web API |
64 | | -- **Database**: PostgreSQL with Entity Framework Core |
65 | | -- **Real-time Communication**: SignalR for live analysis updates |
66 | | -- **Background Jobs**: Hangfire for scheduled scraping tasks |
67 | | -- **Caching**: 30-day cache for package data |
68 | | - |
69 | | -## Search Capabilities |
70 | | - |
71 | | -Users can search for: |
72 | | -- Package names (e.g., "Newtonsoft.Json", "react") |
73 | | -- View all versions with release dates |
74 | | -- Compare any two versions |
75 | | -- Filter by registry type |
76 | | -- Access recent and popular searches |
77 | | - |
78 | | -## Content Organization |
79 | | - |
80 | | -- Release notes are scraped from registry pages and GitHub |
81 | | -- Changes are categorized automatically (New Features, Bug Fixes, Breaking Changes, etc.) |
82 | | -- Version comparisons show consolidated changelogs |
83 | | -- All changes are timestamped and linked to sources |
84 | | - |
85 | | -## Privacy & Terms |
86 | | - |
87 | | -- Minimal data collection (search history, IP for rate limiting) |
88 | | -- No third-party tracking or advertising |
89 | | -- Open-source project |
90 | | -- Free to use |
91 | | -- See /privacy and /terms for detailed policies |
92 | | - |
93 | | -## Use Cases |
94 | | - |
95 | | -pkgdiff is designed for developers who need to: |
96 | | -- Understand what changed between package versions |
97 | | -- Review breaking changes before upgrading dependencies |
98 | | -- Analyze release notes from multiple sources in one place |
99 | | -- Export changelogs for documentation |
100 | | -- Track package evolution over time |
101 | | - |
102 | | -## Links |
103 | | - |
104 | | -- Home: https://pkgdiff.com |
105 | | -- GitHub: https://github.com/pkgdiff-dev |
106 | | -- Privacy Policy: https://pkgdiff.com/privacy |
107 | | -- Terms of Service: https://pkgdiff.com/terms |
| 37 | +- [Source code](https://github.com/pkgdiff-dev/pkgdiff) |
| 38 | +- [Privacy policy](https://pkgdiff.dev/privacy) |
| 39 | +- [Terms of service](https://pkgdiff.dev/terms) |
0 commit comments