22. NPM


Design an online repository for the publishing and downloading of open-source Node.js projects

Functional Requirements
  • Project admins should be able to publish Node.js projects
  • Users should be able to download projects
  • Each repository has a webpage with metadata(total download count, version, and package size)
  • Users should be able to download old versions of repositories
Nonfunctional Requirements
  • 99.999% Availability
  • Operates globally
  • All repositories and versions should be stored indefinitely
  • Assume the command line utility already exists
  • Repositories only contain text files
Estimated Usage
  • 1 million developers uploading repositories
  • 11 million developers downloading repositories
  • 1.3 billion downloads a day
  • 90k new versions uploaded each week

Seen this question in a real interview before?

Not all editor features are supported on mobile