AnchorSupply

Concept:

Record GrowNYC supply chain transactions on the blockchain and have them visualized on a google map in real time. Use chainpoint proofs to prove that a particular item/product was at a location at a given point in time (challenges - GrowNYC, Chainpoint).

Biggest problems:

Traceability - being able to answer questions such as where did this case of strawberries come from. Manual work - a lot of manual effort is spent recording and piecing together history for particular items.


AnchorSupply is a web app is designed to 1. create a centralized system where both spreadsheets and manifests could be manually uploaded or pulled via the AnchorSupply API, and 2. Enable users to search/inspect the aggregated histories that have been uploaded for each item in a friendly map view.

Tierion sdk was a core component of this project. I used the Tierion API to perform delivery validation by recording each delivery with its metadata (such as location, time, receiver, etc.) on the Bitcoin blockchain. This enables end users of the platform to query on a particular item and get a linked list of that items history that is validated. The API would then be able to validate particular entries or histories if coworkers sent excel spreadsheets that disagreed with the master record automatically.

API

Record instance of item(s), equivalent to a packing slip or farmers label of an item.

POST /api/items/add
[
    {
        "name": "Swiss Chard/Green", // name of the item (not necessarily unique)
        "unit": "12 BU", // quantity or size of the item
        "metadata": "Product of USA", // additional comments or info on this item
        "uuid": XXXX, // uuid of the item (string)
        "origin": Satur Farms NY 11935"
        "packDate": "05-08-2018"
    },
    ...
]

Record deliveries of item(s)

POST /api/deliveries/add
[
    {
        "itemId": XXXX, // uuid of the received item. (id)
        "locationId": XXXXX, // uuid of the receiving location (id)
        "lat": XXXX, // latitude of the receiver (float)
        "lng": XXX // longitude of the receiver (float)
        "timeMs": XXXXX // time of delivery (time ms)
    },
    ...
]

Get the history of an item

GET /api/item/history
{
    "itemId": XXXX // uuid of the desired item (id)
}

Return all registered deliveries

GET /api/deliveries

Return all registered items

GET /api/items

Structure

  • /server: Server and api for submitting scheduling data.
  • /client: Client side reactjs website
  • /screenshots: Screenshots of app

TODO:

  • Create Logo. X
  • Create API documentation. Understand the api interfaces and json body formats. X
  • Create basic marketing website UI design / or use framework that allows plugging in an API doc page. X
  • Add tests to server code.
  • Check items table for duplicates.

Dev Notes

Check the README.md files in each subproject for how to start services.

Share this project:
×

Updates