AgroDex fights food fraud in Indonesia by pairing Hedera’s immutable ledger with Gemini AI for real-time food auditing.
We are excited to announce that this project has been officially selected for Social Summer Of Code (SSOC) 2026.
This project proudly participates in the following open-source programs:
| Program | Program Name | Status |
|---|---|---|
| ♨️ | Social Summer of Code (SSOC) 2026 | 🟢 Active |
Important
💡 We warmly welcome contributors from all the above programs. Please check open issues and follow the contribution guidelines before submitting a PR.
Food fraud and missing traceability drain billions from the Indonesian agricultural sector. Farmers cannot prove premium quality (e.g., organic), and buyers cannot verify authenticity, severely hurting industry trust and revenue.
AgroDex creates a digital twin (NFT) for every crop batch. Every milestone is audited by AI and securely anchored to Hedera to create an immutable, lifelong trail of evidence.
| Category | Technology | Badge |
|---|---|---|
| Frontend | React (Vite) | |
| Language | TypeScript | |
| Styling | Tailwind CSS | |
| Backend | Node.js & Express | |
| Database | Supabase | |
| Blockchain | Hedera Hashgraph | |
| Artificial Intelligence | Google Gemini |
We chose Hedera because predictable, low fees are the only sustainable option for low-margin Indonesian logistics.
- Hedera Consensus Service (HCS): Every “proof” event (planting, harvest, etc.) is submitted via
TopicMessageSubmitTransactionto our topic ID, producing a low-cost (~$0.0001) immutable audit log. - Hedera Token Service (HTS): We mint the final certificate as a unique NFT using
TokenCreateTransaction. HCS transaction IDs are embedded directly into the NFT metadata, structurally binding the asset to its evidence trail. - Mirror Nodes: The Verify page queries Mirror Nodes (via the SDK) to replay the HCS history and seamlessly demonstrate authenticity to buyers and judges.
Widespread adoption in Indonesia demands sub-$1 fees per transaction. Hedera’s fixed, negligible HCS pricing lets us log thousands of logistical events for just a few dollars, keeping the business model completely viable.
- HCS Logging: Capture every step of the crop lifecycle transparently.
- HTS Tokenization: Mint NFT certificates referencing immutable HCS history.
- Verification Engine: Buyers validate authenticity instantly by fetching real-time Mirror Node history.
- QR-Based Verification: Instantly generate, share, and scan secure QR codes containing JSON batch verification payloads for mobile-friendly buyer auditing.
- Audit & Trust Score: AI parses the HCS timeline to yield an objective 0–100 trust rating.
- Bilingual Summaries: Automatically generates intuitive provenance summaries in English and Indonesian.
- Buyer Q&A Chatbot: Buyers can interact directly with a batch's history; the AI replies with cited HCS transaction IDs.
- Dashboard Insights: Real-time business intelligence metrics surfacing on the main admin layout.
[Farmer]
|
v
[Frontend (React)] ---- API ----> [Backend (Node.js/Express)]
| | |
| | v
| | [Gemini AI] (Audits & Q&A)
| |
| +---- HCS Submit / HTS Mint ----> [Hedera Network]
|
|
[Buyer]
|
v
[Frontend (React)] ---- API ----> [Backend (Node.js/Express)]
| |
| +---- Reads ----> [Hedera Mirror Node]
|
+---- Displays proofs <------------+
This is the instruction about how to get work with this project:
1. Clone the Repository
git clone https://github.com/daviddprtma/AgroDex
cd AgroDex2. Install Dependencies
# Install root and frontend dependencies
npm install
npm install html5-qrcode
# Install backend dependencies
cd backend
npm install
npm install qrcode
cd ..3. Configure Environment Variables
cp backend/.env.example backend/.env
// edit backend/.env and fill:
// OPERATOR_ID, OPERATOR_KEY, GEMINI_API_KEY, SUPABASE_URL, SUPABASE_SERVICE_KEY4. Seed the demo data
cd backend
node scripts/seedDemo.js5. Run the application
# Terminal 1 (Backend)
cd backend
npm run dev
# Terminal 2 (Frontend)
cd ..
npm run dev-
Star ⭐ and Fork 🍴 this repository.
-
Code Contributions:
- Create a new branch based on the type of change (see Branch & Commit Conventions)
git checkout -b feature/new-section
- Make your code adjustments.
- Commit changes following the convention (see Branch & Commit Conventions).
- Open a Pull Request (PR).
- Create a new branch based on the type of change (see Branch & Commit Conventions)
-
Maintenance Contributions:
- Address issues like:
- Extracting embedded images or assets and adding them to
/assets/. - Moving CSS/JS into separate files.
- Updating README or file structure consistency.
- Extracting embedded images or assets and adding them to
- Submit your PR under the “maintenance” label.
- Address issues like:
| Type | Branch Prefix | Commit Prefix | Description |
|---|---|---|---|
| New Feature | feature/ |
feat: |
Adding new functionality or pages |
| Bug Fix | fix/ |
fix: |
Resolving issues or broken behavior |
| Maintenance | chore/ |
chore: |
Config updates, repo organization |
| Documentation | docs/ |
docs: |
Updating docs, README, or guides |
| UI/UX & Design | uiux/ |
design: |
Design mockups, page revamps, visual tweaks |
| Resources | resources/ |
resource: |
Adding educational content/resources |
| Refactor | refactor/ |
refactor: |
Code improvement without feature change |
| Style | style/ |
style: |
CSS fixes, spacing, or formatting changes |
Example:
# Branch
uiux/community-redesign
# Commit
design: revamp Community page layout for better clarityAgroDex includes a Indonesia-tuned, production-ready QR-Based Batch Verification system allowing buyers to instantly verify agricultural batches by scanning a QR code with their mobile devices.
Farmer
│
▼
[Batch Created]
│
▼
[QR Generated] (Node qrcode library payload: batchId + verificationUrl)
│
▼
[Stored in Supabase] (Cached as Base64 Data URL)
│
▼
[Buyer Scans QR] (React html5-qrcode scanner)
│
▼
[Verification Page] (/verify/:batchId)
│
▼
[Hedera + Gemini Audit Results] (Trust Score, NFT Metadata, HCS Timeline)
We added qr_code_url and deleted_at fields to the batches table to track the cached QR code data URL and support soft deletion:
ALTER TABLE batches
ADD COLUMN qr_code_url TEXT,
ADD COLUMN deleted_at TIMESTAMPTZ;
CREATE INDEX idx_batches_deleted_at ON batches(deleted_at);-
GET /api/batches/:batchId(Public)- Fetches the batch details (name, harvest date, location, photo) and its complete Hedera/verification status.
- Automatically generates the JSON QR code payload and caches it in Supabase if not already present.
- Mimics the verification response structure so the UI displays trust scores, NFT metadata, and provenance timelines.
-
POST /api/tokenize-batch(Extended)- Supports linking an existing batch by
batchId(or resolves it via HCS transaction trail lookup) and updates it with the minted token ID and serial number, returningbatchIdon success.
- Supports linking an existing batch by
- /verify/:batchId
- Displays the full Indonesia agricultural provenance timeline, trust score, and NFT metadata for the given batch ID.
- Handles invalid, soft-deleted, and pending-tokenization batches gracefully with appropriate loading, error, and info cards.
- Dynamic QR Canvas & Download
- Success cards on the Registration and Tokenization pages display the generated QR code and feature a local client-side PNG download button.
- [v] Q4 2025 - Testnet Prototype
- [] Q1 2026 - Pilot with Co-ops
- [] Q2 2026 - HashConnect Wallet Integration
- [] Q3 2026- Mainnet Launch & Scaling
Here's the demo video for this project:
For the pitch deck, see it in 👉AgroDex.
