The Operating System for Material Truth. The engine for Digital Product Passports (DPP), material lineage tracking, and circular supply chain transparency.
NovaMaterial is the Horizontal Enabler responsible for the Identity of Atoms. While NovaIdentity tracks people, NovaMaterial tracks matter.
It generates and hosts Digital Product Passports (DPP)βsecure, immutable records that travel with a product from extraction to manufacturing (NovaMake), through usage (NovaRetail), and finally to recovery (NovaRecycle). It creates the "Digital Twin" required by the EU Ecodesign for Sustainable Products Regulation (ESPR).
In a linear economy, products are "black boxes"βwe don't know what chemicals are inside or where the metal came from. NovaMaterial turns on the lights:
- Regulatory Compliance: Automatically generating compliant JSON-LD passports for batteries, textiles, and construction products (ESPR ready).
- Trustless Sourcing: Proving that a batch of recycled plastic in
NovaTradeis actually "Food Grade" via cryptographic lineage, not just a paper certificate. - Value Retention: A building with a detailed Material Passport (
NovaBuild) is a "Material Bank"; one without is just a future demolition cost.
NovaMaterial acts as a graph database, linking raw materials to components, and components to finished goods (Bill of Materials - BOM).
graph TD
User((Designer)) -->|1. Create Spec| UI[NovaMaterial Dashboard]
UI -->|REST| API[NovaMaterial API]
subgraph "The Input (Creation)"
API -->|Register Batch| Make[NovaMake / NovaTextile]
Make -->|Send Composition| API
end
subgraph "The Enrichment Layer"
API -->|Request Impact| Worker["Worker-LCA (NovaBalance)"]
Worker -->|Verified CO2| API
API -->|Check Hazards| Policy[NovaPolicy]
end
subgraph "The Lifecycle (Updates)"
Retail[NovaRetail] -->|Update: In Use| API
Recycle[NovaRecycle] -->|Update: Recovered| API
Trade[NovaTrade] -->|Read: Value| API
end
- NovaBalance: The auditor. NovaMaterial sends the BOM (Bill of Materials) to the
LCACalcworker. It receives back a verified Carbon Footprint to stamp onto the passport. - NovaPolicy: The screener. Checks the chemical list against REACH databases. If a "Forever Chemical" (PFAS) is found, the Passport is flagged with a warning.
- NovaRecycle: The closer. When a product is shredded, NovaRecycle terminates the old Passport and spawns new Passports for the recovered raw materials.
Generates a public-facing URL and QR code for every item.
- Standards: Outputs data in GS1 Digital Link and W3C JSON-LD format.
- Transparency: Consumers scan the QR to see "Who made this?", "Is it recyclable?", and "How do I fix it?"
Handles the complexity of nested assemblies.
- Example: A Car (
NovaMake) contains a Battery (NovaTronix). The Battery contains Cobalt (NovaRecycle). - NovaMaterial maintains the graph links so that an update to the Cobalt's provenance automatically updates the Car's sustainability score.
Tracks ownership transfer via NovaTrade.
- Mass Balance: Ensures that if you buy 1 ton of "Certified Organic Cotton," you cannot sell 2 tons of products made from it.
- Prevents "Greenwashing" by strictly linking output volume to input volume.
Calculates the Material Circularity Indicator (MCI).
- Formula: Input from Recycled Sources vs. Virgin Feedstock.
- Output: A score (0.0 - 1.0) stamped on the passport, determining the product's tax rating in
NovaPolicy.
We use DevContainers to provide a consistent development environment.
- Docker Desktop
- VS Code (with Remote Containers extension)
- Clone the repo:
git clone https://github.com/novaeco-tech/novamaterial.git cd novamaterial - Open in VS Code:
- Run
code . - Click "Reopen in Container" when prompted.
- Run
- Start the Enabler:
make dev
- Passport Viewer: http://localhost:3000
- API: http://localhost:8000/docs
# DPP Standards
STANDARD_VERSION=ESPR_2026_DRAFT
URI_PREFIX=https://id.novaeco.tech/
# Integrations
NOVABALANCE_WORKER_URL=http://novabalance-worker-lca-calculator:8080
NOVAPOLICY_URL=http://novapolicy-api:8000This is a Monorepo containing the enabler's specific logic.
novamaterial/
βββ api/ # Python/FastAPI (Domain Logic)
β βββ src/
β β βββ passport/ # JSON-LD generators and QR code logic
β β βββ graph/ # NetworkX logic for BOM traversal
β β βββ coc/ # Chain of Custody ledger logic
βββ app/ # React/Next.js Frontend (Passport Manager)
β βββ src/
β β βββ viewer/ # Public-facing Passport UI
β β βββ builder/ # Admin UI for defining BOMs
βββ website/ # Documentation (Docusaurus)
βββ tests/ # Integration tests
We use Graph Validation for testing.
- Schema Test:
make test-dpp- Generates a sample Passport and validates it against the official EU JSON schema.
- Traceability Test:
make test-trace- Simulates a supply chain of 3 tiers. Updates a raw material at Tier 3 and asserts that the Tier 1 product reflects the change (e.g., "Contains Conflict Minerals").
We need contributors with backgrounds in Supply Chain, Linked Data (Semantic Web), and Materials Science. See CONTRIBUTING.md for details.
Maintainers: @novaeco-tech/maintainers-enabler-novamaterial