Implementing this project was fun since i got to know so much about the actors in the supply chain and roles !
Github link : Click here to see the GitHub repo
I have used the same tech as mentioned in my previous blockchain blog
We store the data of an item. So, what is an item here 🤔 ?
enum State 
  { 
    Harvested,  // 0
    Processed,  // 1
    Packed,     // 2
    ForSale,    // 3
    Sold,       // 4
    Shipped,    // 5
    Received,   // 6
    Purchased   // 7
    }
struct Item {
    uint    sku;  // Stock Keeping Unit (SKU)
    uint    upc; // Universal Product Code (UPC), generated by the Farmer, goes on the package, can be verified by the Consumer
    address ownerID;  // Metamask-Ethereum address of the current owner as the product moves through 8 stages
    address originFarmerID; // Metamask-Ethereum address of the Farmer
    string  originFarmName; // Farmer Name
    string  originFarmInformation;  // Farmer Information
    string  originFarmLatitude; // Farm Latitude
    string  originFarmLongitude;  // Farm Longitude
    uint    productID;  // Product ID potentially a combination of upc + sku
    string  productNotes; // Product Notes
    uint    productPrice; // Product Price
    State   itemState;  // Product State as represented in the enum above
    address distributorID;  // Metamask-Ethereum address of the Distributor
    address retailerID; // Metamask-Ethereum address of the Retailer
    address consumerID; // Metamask-Ethereum address of the Consumer
  }Let’s talk about the roles
🧑🏼🌾 Farmer’s Role : A farmer harvests the coffee beans, packs it and gives it a Universal Product Code (UPC). Farmer processes the item before packting it then sell it to distributers
🧑🏼 Distributor’s Role : It can buy item from the farmer and ship it to the retailer.
*🏬 Retailer’s Role : It can buy item from the Distributer and sell it to the consumer.
☕️👦🏻 Consumer’s Role : It can buy item from the Retailer.
Note 
The ownership of the item keeps changing in the supply chain until it reaches the consumer.