pyGet

pyGet is a Decentralized python package manager for developers using IPFS.

Inspiration

To onboard more developers into the web3 space we need to provide tools that most developers are familiar with. Package managers are one of the fundamentals to the development lifecycle.

Although we currently make use of traditional package management like NPM, Nuget and PIP, none of these are decentralized. We would like to make it easier for developers to publish packages and grow the decentralized storage ecosystem.

Demo Video

DEMO

How it works

flowchart TD
    A[WEB APP] <-- Create/View Modules --> B[BACKEND API]
    E[CLI TOOL] <-- Request PACKAGE commands --> B
    C[APP] <-- Project Scaffold --> E
    F[IPFS Storage layer] <-- store/retrieve --> B

Developers would publish their work using the Web app and that would be stored on IPFS. Developers wanting to make use of said package would scaffold an app using the CLI and install the packages as request, upon install the package is retrieved from IPFS and added to the project dependencies.

Available CLI commands for the current iteration:

  • pyGet init (Scaffold new project)
  • pyGet install package-name (Add package to the dependencies)
  • pyGet list (Lists available packages)
  • pyGet uninstall (Remove from project dependencies)

Future developments

  • Improve WEB APP UI
  • Make pyGet open to the public
  • Improve file handling
  • Resolve dependencies required by installed package

Challenges faced

Getting the files from the GET endpoint was a bit challenging especially when it involves a CAR file.

Running the project

  • Requires Python 3.6+
  • API KEY from Tatum for IPFS data storage
  1. Clone the repo.
git clone https://github.com/IKalonji/pyGet.git
  1. Insert API KEY into ipfs_requests.py.

  2. In pyGet-API folder run app.py

  3. For the Web App Angular is required, navigate to pyGet-WEBAPP and run npm install.

  4. Run ng serve --open

  5. Finally for the CLI, navigate to pyGet-CLI, run the setup script and run pyget.py

Acknowledgements

  • IPFS/Filecoin
  • Devpost

Licenses

The project is open source under the MIT License, please see the license file.

Built With

Share this project:

Updates