Live: chaintrack-opal.vercel.app
ChainTrack.ai is a blockchain-powered supply chain tracking platform built on Ethereum. Every product registration, status update, and delivery is recorded on-chain, making the entire history publicly verifiable and permanent.
Supply chain fraud and counterfeiting are massive problems. ChainTrack solves this by putting product history on the blockchain so any stakeholder can verify it independently, without relying on a central authority.
Products move through three stages: Created → In Transit → Delivered. Each transition is timestamped and recorded permanently. Anyone with the product ID or QR code can look up the full history.
- Register products with name and origin
- Track status changes with on-chain timestamps
- Scan QR codes to pull up product history instantly
- Generate and download QR codes for any tracked product
- AI analytics dashboard with demand forecasting and route insights
- MetaMask wallet integration for transaction signing
- Works as a Progressive Web App on desktop and mobile
| Layer | Technology |
|---|---|
| Blockchain | Ethereum (Sepolia testnet) |
| Frontend | React 19, Vite 6, React Router 7 |
| Styling | Tailwind CSS |
| Animations | GSAP |
| Data Viz | Chart.js |
| QR Scanning | html5-qrcode |
| Wallet | ethers.js v6, MetaMask |
| Hosting | Vercel |
You need Foundry, Node.js 18+, and the MetaMask extension.
Install Foundry first if you don't have it:
curl -L https://foundry.paradigm.xyz | bash
foundryupThen clone and run:
git clone https://github.com/shrxyeh/ChainTrack.git
cd ChainTrack
forge install
cd frontend && npm install && cd ..
npm run devOpen http://localhost:5173, connect MetaMask to Sepolia, and you're good to go. You can get free Sepolia ETH at sepoliafaucet.com.
Create a .env file in the project root:
RPC_URL_SEPOLIA=https://eth-sepolia.g.alchemy.com/v2/YOUR_KEY
PRIVATE_KEY=your_deployment_wallet_private_key
ETHERSCAN_API_KEY=your_etherscan_api_keyUse a dedicated wallet with just enough ETH for gas. This file is gitignored and never committed. For production, use a hardware wallet with the --ledger flag instead.
Build and deploy:
forge build
forge script script/Deploy.s.sol:DeploySupplyChain \
--rpc-url $RPC_URL_SEPOLIA \
--private-key $PRIVATE_KEY \
--broadcastVerify on Etherscan:
forge verify-contract <DEPLOYED_ADDRESS> \
contracts/SupplyChain.sol:SupplyChain \
--chain sepolia \
--etherscan-api-key $ETHERSCAN_API_KEY \
--watchAfter deploying, update CONTRACT_ADDRESS in frontend/src/pages/Dashboard.jsx with the new address.
chaintrack/
├── contracts/
│ └── SupplyChain.sol
├── script/
│ └── Deploy.s.sol
├── scripts/
│ └── seed.js
├── lib/
├── frontend/
│ ├── public/
│ └── src/
│ ├── components/
│ ├── pages/
│ ├── utils/
│ ├── App.jsx
│ └── SupplyChain.json
├── foundry.toml
├── .env.example
└── frontend/vercel.json
MIT