All projects

Supply Chain Tracker

University · 2025
Period
2025
Technologies
Node.js · Express · Solidity · ERC-1155 · MongoDB · IPFS
Supply Chain Tracker — Concept illustration · no real shipment or ledger
Concept illustration · no real shipment or ledger

Where it started

For my master’s thesis I built a prototype to follow the history of a batch. After a split, transfer or merge, I wanted to be able to trace it back to its origins and supporting documents.

Problems and decisions

From batches to tokens

I represented batches with ERC-1155 and APIs for transfer, split and merge.

Separating and comparing data

Public metadata is on IPFS. MongoDB stores aggregated data for queries. I included consistency checks across blockchain, IPFS and MongoDB to identify discrepancies between the different representations of a batch.

Keys and accountability

In the prototype the backend signs with test keys. Key management and dual signatures between participants remain areas for further work before real-world use.

How it works

  1. A Node.js and Express backend exposes REST APIs for creating, transferring, splitting, merging and transforming batches.
  2. Solidity ERC-1155 contracts represent batches and ownership on Ethereum. Ethers.js connects application operations to the blockchain.
  3. IPFS holds public metadata and attachments. MongoDB supports aggregated queries across batch history and relationships.
  4. Contamination propagation traverses the graph with BFS. Contamination status remains separate from the batch's lifecycle.

Download the master’s thesis on traceability (PDF) IT · 3.0 MB

What I learned

Modelling batch splits and transformations taught me to define relationships before choosing how to store them. Distinguishing original records from the data used to query them also helps me integrate systems.

Current status

Master’s thesis prototype, tested on a local Ethereum network using Ganache and test keys.

Source

An interesting problem?

Tell me what you want to build or improve, who will use it and what constraints you have. I’ll get back to you so we can work out where to start.