π About This Repository
This is the INATrace meta repository β the central hub for project-wide documentation, governance, technical specifications, and cross-repo coordination.
Source code lives in the four dedicated component repositories (listed below). This repo is the canonical home for everything that spans the full project:
| What lives here | Purpose |
|---|---|
| π Project charter & governance | Decision-making processes, roles, contribution policies |
| π Technical specs & proposals | Architecture decisions, integration designs, enhancement proposals |
| π Integration documentation | Cross-system specs (e.g., Asset Registry, EUDR/Whisp, AgStack ecosystem) |
| πΊοΈ Roadmap & planning | Project-wide priorities, phased roadmaps, task breakdowns |
| π Landing page & overview | This README β the single entry point for understanding INATrace |
| π€ Contributing guide | How to get involved across all INATrace repos |
Repository Structure
agstack/inatrace/ β You are here
β
βββ README.md β Project landing page (this file)
βββ ASSET_REGISTRY_INTEGRATION.md β AgStack Asset Registry integration spec & roadmap
βββ CONTRIBUTING.md β (planned) Cross-repo contribution guide
βββ CHARTER.md β (planned) Project charter
βββ GOVERNANCE.md β (planned) Decision-making & roles
β
βββ specs/ β (planned) Technical specs & enhancement proposals
β βββ 001-asset-registry-v2.md
β βββ 002-eudr-compliance.md
β βββ ...
β
βββ decisions/ β (planned) Architecture Decision Records (ADRs)
β βββ 001-meta-repo-structure.md
β βββ ...
β
βββ .github/ β Issue/PR templates for cross-repo concerns
Design intent: Any document that applies to INATrace as a whole β not just one component β belongs here. Code changes go in the component repos. Project-level decisions, specs, governance, and roadmaps go here.
π What is INATrace?
INATrace is an end-to-end digital traceability platform for agricultural commodities (coffee, cocoa, and beyond). It provides:
- π Full supply chain transparency β trace every step from smallholder farm to final buyer
- βοΈ Blockchain-backed trust β immutable records on Hyperledger Fabric
- π’ Multi-tenant, multi-value-chain β one system for multiple organizations and commodity types
- π± Mobile-first field data β GPS polygon mapping, offline-capable farmer registration
- π Quality & compliance β assure quality standards and support EU Deforestation Regulation (EUDR) compliance
- π° Fair pricing β transparent pricing and payment tracking for smallholder farmers
INATrace enhances the economic conditions of smallholder farmers by improving traceability of global supply chains.
ποΈ Architecture
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β INATrace Platform β
ββββββββββββββββ¬βββββββββββββββ¬ββββββββββββββββββ¬βββββββββββββββββββββ€
β β β β β
β π± Mobile β π₯οΈ Frontend β βοΈ Backend β βοΈ Blockchain β
β App β (Angular) β (Java/Spring) β (Hyperledger) β
β β β β β
β React Native β TypeScript β Java 17 β Fabric Network β
β Expo β Angular 10+ β Spring Boot β Chaincode (Go) β
β MapBox β β MySQL 8.4 β CouchDB β
β β β REST API β β
ββββββββββββββββ΄βββββββββββββββ΄ββββββββββββββββββ΄βββββββββββββββββββββ€
β β
β ποΈ MySQL Database π§ Email (SMTP) πΊοΈ MapBox π± Exchange API β
β β
β π AgStack Asset Registry (GeoID) π°οΈ Whisp/EUDR (Compliance) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π¦ Component Repositories
Source code lives in four dedicated repositories. Each has its own README with setup instructions, development guide, and component-specific docs.
βοΈ inatrace-backend β Java API Server
The core API server powering INATrace. Handles user management, product configuration, supply chain operations, processing actions, payments, and integrations.
| Stack | Java 17, Spring Boot, Maven, MySQL 8.4 |
| License | MPL-2.0 |
| Last Updated | 2025-12-24 |
| Top Maintainers | @pece-a (495 commits), @RebernikNejc (126), @MusicDin (96) |
Quick Start:
git clone https://github.com/agstack/inatrace-backend.git # Set up MySQL via Docker: docker run --name inatrace-mysql -e MYSQL_ROOT_PASSWORD=root \ -e MYSQL_DATABASE=inatrace -e MYSQL_USER=inatrace \ -e MYSQL_PASSWORD=inatrace -p 3306:3306 -d mysql:8.4.6 # Configure application.properties, then run INATraceBackendApplication.java
π₯οΈ inatrace-frontend β Angular Web Application
The web-based user interface for managing products, companies, value chains, stakeholders, processing, orders, and payments.
| Stack | Angular 10+, TypeScript, Node 14 |
| License | MPL-2.0 |
| Last Updated | 2025-12-24 |
| Top Maintainers | @pece-a (987 commits), @RebernikNejc (175), @borce-paspalovski (145) |
Quick Start:
git clone https://github.com/agstack/inatrace-frontend.git cd inatrace-frontend npm install # Configure environment, then: ng serve
π± inatrace-mobile β React Native Mobile App
The field-level mobile app for cooperatives and farmers β GPS polygon mapping, farmer registration, offline data collection, and synchronization.
| Stack | React Native, Expo, TypeScript, MapBox |
| Platforms | Android (Google Play) Β· iOS (App Store) |
| License | MPL-2.0 |
| Last Updated | 2025-12-24 |
| Top Maintainers | @pinokokol (120 commits), @pece-a (9) |
Key Features:
- π Polygon Mapping β GPS-based field boundary capture
- π¨βπΎ Farmer Profiles β Detailed cooperative member records
- π΄ Offline Mode β Full functionality without connectivity, auto-sync when online
Quick Start:
git clone https://github.com/agstack/inatrace-mobile.git cd inatrace-mobile npm install # Configure .env (API URIs, MapBox tokens) npx expo run:android # or run:ios
βοΈ inatrace-coffee-network β Hyperledger Fabric Blockchain
The blockchain layer β a Hyperledger Fabric network with smart contracts (chaincode) that provide immutable, auditable records for supply chain transactions.
| Stack | Hyperledger Fabric, Docker, CouchDB, Go chaincode |
| Based On | BasicNetwork-2.0, Fabric Samples |
| License | MPL-2.0 |
| Last Updated | 2025-11-20 |
| Documentation | Hyperledger Fabric Docs |
π Specifications & Enhancement Docs
Cross-repo technical specifications, integration designs, and enhancement proposals live in this meta repository. These documents describe work that spans multiple INATrace components or connects INATrace to external systems.
| Document | Status | Summary |
|---|---|---|
| Asset Registry Integration | π Draft | Full spec for INATrace β AgStack Asset Registry. Includes current state analysis, gap analysis, proposed architecture (async queue, ListIDs, EUDR pipeline), 5-phase roadmap, and task breakdown. |
| EUDR Compliance Pipeline | π Planned | Automated deforestation risk assessment via Whisp API, feeding compliance scores back into INATrace for batch reporting. |
| Asset Registry v2.0 Migration | π Planned | Hub+Node federation, WKT masking, ListIDs, shared identity β adapting INATrace for the next-gen registry. |
π‘ Want to propose an enhancement? Open an issue in this repo with the
enhancementlabel, or submit a spec document as a PR.
π AgStack Asset Registry Integration
β οΈ Partial Integration β Spec & Roadmap Available
INATrace has an existing but limited integration with the AgStack Asset Registry. When farmer plots are created with polygon coordinates, INATrace calls the Asset Registry's /register-field-boundary API to obtain a GeoID β a deterministic 64-character identifier for each geospatial boundary.
Current State
| Feature | Status | Details |
|---|---|---|
| Plot β GeoID registration | β Implemented | AgStackClientService.java calls Asset Registry on plot create/update |
| GeoID stored in database | β Implemented | Plot.geoId column persists the identifier |
| GeoID displayed in UI | β Implemented | Web (Angular) + Mobile (React Native) show GeoID with copy button |
| "Open in Whisp" (EUDR analysis) | β Implemented | Opens whisp.earthmap.org with GeoID |
| Manual GeoID refresh | β Implemented | POST /userCustomers/{id}/plots/{plotId}/updateGeoID |
| GeoID in Excel export | β Implemented | Included in farmer data exports |
Known Gaps
| Gap | Severity |
|---|---|
| π΄ Silent failure β registration errors return null with no user notification | Critical |
| π΄ No batch registration β Excel farmer import skips GeoID generation | Critical |
| π΄ Integration disabled by default β config values are empty in template | Critical |
| π‘ No reverse lookup (GeoID β boundary from registry) | Medium |
| π‘ No GeoID history/versioning when boundaries change | Medium |
| π‘ No overlap intelligence surfaced to users | Medium |
| π‘ No automated EUDR compliance pipeline (Whisp is view-only) | Medium |
| π‘ No preparation for Asset Registry v2.0 (federated Hub+Node, ListIDs) | Medium |
π Full technical specification: ASSET_REGISTRY_INTEGRATION.md
π Project Stats
| Metric | Backend | Frontend | Mobile | Blockchain | Total |
|---|---|---|---|---|---|
| β Stars | 8 | 1 | 0 | 1 | 10 |
| π΄ Forks | 6 | 5 | 2 | 3 | 16 |
| π Open Issues | 4 | 0 | 0 | 0 | 4 |
| π Created | 2020-11 | 2020-11 | 2024-12 | 2020-11 | β |
| π Last Push | 2025-12-24 | 2025-12-24 | 2025-12-24 | 2025-11-20 | β |
π₯ Core Maintainers
![]() @pece-a 1,492 commits Β· Backend & Frontend lead |
![]() @RebernikNejc 301 commits Β· Backend & Frontend |
![]() @borce-paspalovski 223 commits Β· Frontend |
![]() @pinokokol 120 commits Β· Mobile lead |
![]() @MusicDin 148 commits Β· Backend |
![]() @MHA10 186 commits Β· Backend |
![]() @dockerymick 163 commits |
![]() @genovoxx 108 commits Β· Frontend |
![]() @sumerjohal AgStack core team |
![]() @MBJuric Mobile & Blockchain |
β¨ Key Features (INATrace 2.x)
INATrace 2 is a major release that significantly expanded the platform:
Value Chain Management
- β Generic value chain support β configure different commodity chains with specific settings
- β Multi-tenant architecture β multiple organizations in one deployment
- β Company profiles β facilities, processing actions, farmers, and collectors per company
- β Product admin companies β delegated product management within value chains
Supply Chain Operations
- β Processing actions β multiple types including bulk purchases for semi-products
- β Final products β output of final processing, configurable by product admins
- β Customer orders β linked to final products
- β Purchases, processing & payments β comprehensive workflow management
Data & Compliance
- β Farmer import β bulk import from Excel files
- β Processing evidence fields β configurable in system settings
- β Multi-language support β translations for facilities, actions, semi-products, and evidence types
- β Multi-currency β configurable currencies with daily exchange rate sync via exchangeratesapi.io
- β EUDR compliance β EU Deforestation Regulation support through polygon mapping and traceability
Mobile & Field
- β GPS polygon mapping β field boundary capture on mobile devices
- β Offline-first β full data collection without connectivity
- β Auto-sync β seamless data synchronization when online
- β Available on Google Play and App Store
π Getting Started
Full Platform Deployment
To deploy the complete INATrace platform, you'll need to set up:
- Database β MySQL 8.4+ (can use Docker)
- Backend β Java 17 + Spring Boot API server
- Frontend β Angular web application
- Mobile (optional) β React Native app via Expo
- Blockchain (optional) β Hyperledger Fabric network
# 1. Clone all repositories git clone https://github.com/agstack/inatrace-backend.git git clone https://github.com/agstack/inatrace-frontend.git git clone https://github.com/agstack/inatrace-mobile.git git clone https://github.com/agstack/inatrace-coffee-network.git # 2. Start MySQL docker run --name inatrace-mysql \ -e MYSQL_ROOT_PASSWORD=root \ -e MYSQL_DATABASE=inatrace \ -e MYSQL_USER=inatrace \ -e MYSQL_PASSWORD=inatrace \ -p 3306:3306 -d mysql:8.4.6 # 3. Start Backend (see inatrace-backend README for full config) cd inatrace-backend # Configure application.properties mvn spring-boot:run # 4. Start Frontend cd ../inatrace-frontend npm install && ng serve # 5. (Optional) Start Mobile cd ../inatrace-mobile npm install && npx expo run:android
For detailed setup instructions, see each repository's README.
π Related Projects
INATrace is part of the broader AgStack Foundation ecosystem of open digital infrastructure for agriculture:
| Project | Description |
|---|---|
| TraceFoodChain | Flutter app for tracing goods along food production chains |
| TerraTrac | EUDR compliance mobile app by TechnoServe Labs |
| Asset Registry | Geospatial asset registration for agricultural land |
| OpenAgri Platform | Modular digital agriculture microservices |
π See all AgStack projects: github.com/agstack
ποΈ Governance & Charter
Governance documents are being established for the INATrace project.
This meta repository is the canonical location for:
- Project Charter β Mission, scope, and guiding principles
- Governance Model β Decision-making process, maintainer roles, voting procedures
- Code of Conduct β Community standards and enforcement
- Release Process β How releases are coordinated across the four component repos
These documents will be added as the governance framework is formalized. For now, INATrace operates under the broader AgStack Foundation governance.
| Document | Status |
|---|---|
CHARTER.md |
π Planned |
GOVERNANCE.md |
π Planned |
CODE_OF_CONDUCT.md |
π Planned |
RELEASE_PROCESS.md |
π Planned |
π License
All INATrace repositories are licensed under the Mozilla Public License 2.0 (MPL-2.0).
π€ Contributing
We welcome contributions of all kinds β code, documentation, specs, and ideas!
Where to contribute
| Type of contribution | Where |
|---|---|
| Bug fix or feature in backend, frontend, mobile, or blockchain | The relevant component repository |
| Cross-repo enhancement proposal or technical spec | This meta repo β open an issue or submit a spec PR |
| Governance, charter, or process proposal | This meta repo |
| Integration design (Asset Registry, EUDR, etc.) | This meta repo β see specs section |
| General question or discussion | This meta repo β open a discussion or issue |
How to contribute
- Browse open issues across INATrace repos
- Fork the relevant repository
- Create a feature branch and submit a pull request
- See individual repo READMEs for development setup details









