Skip to content

OpenPrintTag/openprinttag-database

Repository files navigation

OpenPrintTag Material Database

An open-source, community-driven database of 3D printing materials, brands, and packaging specifications. Part of the OpenPrintTag initiative.

Quick Start · Data Structure · Contributing · Detailed Guides


What is this?

This repository is a publicly editable database of 3D printing materials stored in human-readable YAML files. Think of it as a community wiki for filament specifications, but in a format that machines can also understand.

What's inside:

  • 107 brands — Material manufacturers from Prusament to Hatchbox
  • 11,365 materials — PLA, PETG, ASA, TPU and many more with detailed properties
  • 750 packages — Physical products with GTINs/barcodes
  • 66 containers — Spool specifications and dimensions

Note: These values are generated by the scripts/update_stats.py script.

All data follows the OpenPrintTag Architecture schema and can be imported into any database or application.


Quick Start

Option A: Edit directly on GitHub (easiest)

  1. Browse to the data/ folder
  2. Find the file you want to edit (e.g., data/brands/prusament.yaml)
  3. Click the pencil icon ✏️ to edit
  4. Make your changes and submit a Pull Request

→ See CONTRIBUTING.md for detailed step-by-step guides.

Option B: Use the UI Editor (recommended for larger changes)

# Clone the repository
git clone https://github.com/OpenPrintTag/openprinttag-database.git
cd openprinttag-database

# Start the editor (auto-installs dependencies)
make editor

The command checks for Node.js 18+, installs pnpm if needed, and opens the editor at http://localhost:3000.

→ See ui-editor/README.md for more details.

Option C: Edit YAML files directly

# Clone and setup
git clone https://github.com/OpenPrintTag/openprinttag-database.git
cd openprinttag-database
make setup

# Validate your changes
make validate

Data Structure

data/
├── brands/                   # Material manufacturers and suppliers
│   └── {brand-slug}.yaml
├── materials/                # Material definitions with properties
│   └── {brand-slug}/
│       └── {material-slug}.yaml
├── material-packages/        # Physical products (spools, bottles)
│   └── {brand-slug}/
│       └── {package-slug}.yaml
├── material-containers/      # Container specs (spool dimensions)
│   └── {container-slug}.yaml
└── tmp/
    └── assets/               # Locally uploaded images (temporary)

Brands

Manufacturers and suppliers of materials.

See example: data/brands/prusament.yaml

Materials

Individual materials with detailed properties.

See example: data/materials/prusament/prusament-asa-jet-black.yaml

Material Packages

Physical products you can buy — spools with barcodes.

See example: data/material-packages/prusament/prusament-pla-prusa-orange-1000-spool.yaml

Material Containers

Spool and container specifications.

See example: data/material-containers/1000g.yaml


File Naming Convention

All files use slugified names:

  • Lowercase letters
  • Words separated by hyphens
  • No special characters

Example: prusament-pla-galaxy-black.yaml


Workflow Overview

For Contributors

  1. Fork this repository
  2. Make changes using the UI editor or directly in YAML
  3. Validate your changes with make validate
  4. Submit a Pull Request
  5. Wait for automated validation and review

For Developers

# Initial setup
make setup              # Create Python venv and install dependencies
make fetch-schemas      # Download OpenPrintTag schemas

# Working with data
make validate           # Validate all data against schemas
make test               # Run unit tests
make help               # Show all available commands

Contributing

We welcome contributions! Whether you want to:

  • Add a new brand — Know a manufacturer not in the database?
  • Add materials — Have specifications for materials we're missing?
  • Fix errors — Spotted a typo or wrong value?
  • Add photos — Have product images? You can upload them directly in the UI editor

→ Check out CONTRIBUTING.md for detailed step-by-step guides on:

  • How to add a new brand
  • How to add a new material
  • How to edit existing data
  • How to submit your changes as a Pull Request

Schema & Validation

This database follows the OpenPrintTag Architecture schema. The specific version is configured in schema_version.conf.

Schema ensures:

  • Field types are correct
  • Required fields are present
  • UUIDs are properly formatted and derived according to the UUID specification
  • References (brand_slug, material_slug) are valid
  • Enum values match allowed options
  • GTINs and URLs follow correct patterns

UUID Derivation

UUIDs in this database are derived using UUIDv5 (SHA1 hash) according to the OpenPrintTag Architecture UUID specification:

  • Brand UUID: Derived from brand name
  • Material UUID: Derived from brand UUID + material name
  • Package UUID: Derived from brand UUID + GTIN

When creating new entries, you can leave the uuid field empty or omit it entirely - it will be automatically derived during validation.


Resources

Resource URL
OpenPrintTag Website openprinttag.org
Architecture Docs arch.openprinttag.org
Schema Repository github.com/OpenPrintTag/openprinttag-architecture

License

MIT License — see LICENSE for details.

About

No description, website, or topics provided.

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors