An attempt to remove intermediataries from the last-mile delivery system.
Explore the docs »
View Demo
·
Report Bug
·
Request Feature
Table of Contents
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.
To get a local copy up and running follow these simple steps.
-
Clone the repo
git clone https://github.com/Kapil-Mulay-1421/DecentralizedDeliveries.git
-
Install NPM packages
npm install dotenv
npm install express
npm install mongoose
npm install web3
npm install axios
-
Add a .env file in the main directory, and inside it enter:
DB_URL=mongodb://localhost/deliveries
SERVER_URL=http://localhost:3000
- Navigate to DecentralizedDeliveries -> server, and enter
Wait for server, Listener and Database to initialize. The project should be up and running on localhost:3000
node server.js
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:
- 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.
- 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).
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!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Distributed under the MIT License. See LICENSE
for more information.
Kapil Mulay - krmulay@gmail.com
Project Link: https://github.com/Kapil-Mulay-1421/DecentralizedDeliveries