Skip to content

Kapil-Mulay-1421/DecentralizedDeliveries

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Contributors Forks Stargazers Issues MIT License LinkedIn


Decentralized Deliveries

An attempt to remove intermediataries from the last-mile delivery system.
Explore the docs »

View Demo · Report Bug · Request Feature

Table of Contents
  1. About The Project
  2. Getting Started
  3. Usage
  4. Roadmap
  5. Contributing
  6. License
  7. Contact
  8. Acknowledgments

About The Project

Product Name Screen Shot

In today's last mile delivery system, there's a huge amount of intermediataries between shopkeepers, customers and delivery-men. Whereas in reality, these are the only components we need for the system to function properly. What if all the money from the pockets of customers could actually go to the delivery-men, without intermediataries taking away 70-80% of it? Welcome to this Ethereum project, which plans on doing just that, by decentralizing this process of last-mile delivery. Think of this as Dunzo/UberEats, but fully decentralized and autonomous.

(back to top)

Built With

(back to top)

Getting Started

To get a local copy up and running follow these simple steps.

Prerequisites

Installation

  1. Clone the repo

    git clone https://github.com/Kapil-Mulay-1421/DecentralizedDeliveries.git
  2. Install NPM packages

    npm install dotenv
    npm install express
    npm install mongoose
    npm install web3
    npm install axios
  3. Add a .env file in the main directory, and inside it enter:

DB_URL=mongodb://localhost/deliveries
SERVER_URL=http://localhost:3000
  1. Navigate to DecentralizedDeliveries -> server, and enter
    node server.js
    Wait for server, Listener and Database to initialize. The project should be up and running on localhost:3000

(back to top)

Usage

Let us understand a use case:

Josh wants to have a product/package delivered at his home. He decides to put a request on the app, and in exchange of the service offers some reward. Mike, seeing the reward offered for making the delivery, decides on making it. He accepts the delivery, picks up the item from the local store and delivers it to Josh’s address. He ‘Proclaims’ that he has made the delivery on the proclaims page. Once a confirmation is received from Josh, the reward money is transferred to Mike’s account. Josh has his item delivered and Mike makes some money, without the need for any intermediatary in the process.

So how does it all work? Here's what the architecture of the system looks like:

Architecture

  • We have 2 different clients - customers(like Josh) and delivery men(like Mike). When a customer requests a delivery, it gets registered in the Ethereum smart contract(currently running on the Mumbai Test Network), which emits an event. This event is caught by the event listener on the server, which immediately relays the information to the database.
  • For accepting deliveries, one can head over to the Accept Delivery page, which queries the delivery requests directly form the database.
  • Once the delivery is made, or 'proclaimed' to have been made, the smart contract waits for the confirmation from the customer before transferring the reward money into the deliver-man's account.

(back to top)

Roadmap

  • Visualizing the web architecture.
  • Implementing the architecture and design.
  • Making the app economically feasible to use.
    • Reducing gas fees.
  • Features for authenticity verification and improving transparency.
    • Bar code scanners to verify if a product has been procured from the right store.

See the open issues for a full list of proposed features (and known issues).

(back to top)

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

(back to top)

License

Distributed under the MIT License. See LICENSE for more information.

(back to top)

Contact

Kapil Mulay - krmulay@gmail.com

Project Link: https://github.com/Kapil-Mulay-1421/DecentralizedDeliveries

(back to top)

Acknowledgments

(back to top)