Thank you for your interest in contributing! This guide will walk you through adding brands, materials, and submitting your changes.
- Before You Start
- How to Contribute
- How to Submit Your Changes (Pull Request)
- Validation
- Getting Help
Before contributing, we recommend familiarizing yourself with the OpenPrintTag Architecture. This will help you understand:
- The data structure and relationships between entities
- Required and optional fields for each entity type
- Allowed values for enums and fields
- UUID derivation rules
- Naming conventions and best practices
There are three ways to contribute:
| Method | Best For | Difficulty |
|---|---|---|
| GitHub Web Editor | Small edits, typo fixes | ⭐ Easiest |
| UI Editor (Local) | Adding multiple items, complex changes | ⭐⭐ Intermediate |
| Direct YAML Editing | Batch changes, scripting | ⭐⭐⭐ Advanced |
All data is stored in YAML files. Here's what you need to know:
# This is a comment
field_name: value
nested:
field: value
list:
- item1
- item2Slugs are URL-friendly identifiers. They must be:
- Lowercase letters only
- Hyphens to separate words (no spaces or underscores)
- Unique within their category
Examples:
- ✅
prusament-pla-galaxy-black - ✅
hatchbox - ❌
Prusament_PLA Galaxy Black(wrong: uppercase, underscore, spaces)
You can add or edit data (brands, materials, packages, containers) using any of the three methods below. Choose the one that works best for you!
Best for: Small edits, typo fixes, quick additions
-
Navigate to the relevant folder in the repository:
- Brands:
data/brands/ - Materials:
data/materials/{brand-slug}/ - Packages:
data/material-packages/{brand-slug}/ - Containers:
data/material-containers/
- Brands:
-
Click "Add file" → "Create new file" (or click ✏️ to edit existing files)
-
Name the file
{slug}.yamlfollowing the naming convention -
Add the required fields (see Schema Documentation for details)
-
Scroll down and click "Propose new file" or "Propose changes"
-
Follow the prompts to create a Pull Request
Note: UUIDs are derived using UUIDv5 (SHA1 hash) according to the OpenPrintTag Architecture UUID specification. You can leave UUID fields empty - they will be auto-generated during validation.
Best for: Adding multiple items, complex changes, visual editing
-
Clone the repository:
git clone https://github.com/OpenPrintTag/openprinttag-database.git cd openprinttag-database -
Start the editor:
make editor
This checks for Node.js 18+, installs dependencies, and opens the editor.
-
Open http://localhost:3000 in your browser
-
Use the editor to:
- Browse existing brands, materials, packages, and containers
- Add new materials, packages, and containers (via the "+ Add" buttons)
- Edit existing entries
- View allowed values in the Enum tab
Note: New brands must be created using YAML files (Method 1 or 3), as the UI editor doesn't support brand creation yet.
Best for: Batch changes, scripting, advanced users
-
Clone the repository and open files in your editor
-
Create or edit YAML files in the appropriate directories:
- Brands:
data/brands/{slug}.yaml - Materials:
data/materials/{brand-slug}/{material-slug}.yaml - Packages:
data/material-packages/{brand-slug}/{package-slug}.yaml - Containers:
data/material-containers/{slug}.yaml
- Brands:
-
Follow the OpenPrintTag Architecture schema for field requirements
-
Validate your changes:
make validate
-
Commit and push your changes (see How to Submit Your Changes)
The UI editor supports uploading local images directly. When you upload a photo in the Photos section of a material:
- The image is saved to
data/tmp/assets/in the repository - The YAML file references it as
/tmp/assets/{filename} - When you submit a Pull Request, the uploaded images are included in your changes
- After the PR is merged, a CI pipeline uploads the images to cloud storage and replaces the temporary paths with final URLs
Important:
- Only use the UI editor (Method 2) for image uploads — the GitHub Web Editor and direct YAML editing do not support this
- When you remove a photo in the editor, the file is automatically deleted from
data/tmp/assets/ - Commit the
data/tmp/files along with your YAML changes
- UUIDs: Leave UUID fields empty - they will be automatically derived according to the UUID specification
- Slugs: Must be lowercase, hyphen-separated, and unique within their category
- Schema: Always refer to the OpenPrintTag Architecture documentation for current field requirements and allowed values
- Validation: Always run
make validatebefore submitting changes
GitHub automatically guides you through creating a Pull Request after proposing changes. Just follow the prompts!
-
Create a fork (if you haven't already):
- Go to the repository on GitHub
- Click "Fork" button
-
Clone your fork:
git clone https://github.com/YOUR-USERNAME/openprinttag-database.git cd openprinttag-database -
Create a branch:
git checkout -b add-my-contribution
-
Make your changes using Method 2 (UI Editor) or Method 3 (Direct YAML)
-
Validate your changes:
make validate
-
Commit and push:
git add . git commit -m "Add/update: describe your changes" git push origin add-my-contribution
-
Create Pull Request:
- Go to your fork on GitHub
- Click "Compare & pull request"
- Fill in the description explaining what you added/changed
- Click "Create pull request"
-
Wait for review:
- Automated validation will run
- Maintainers will review your changes
- You may be asked to make adjustments
Before submitting, always validate your changes:
# Setup (first time only)
make setup
# Fetch schemas (first time or when schemas update)
make fetch-schemas
# Validate all data
make validate- Schema Documentation: arch.openprinttag.org
- Allowed Values: Run the UI editor and check the Enum tab
- Issues: Open an issue on GitHub
- Questions: Start a discussion on GitHub
Do:
- Use official product names and specifications
- Include GTIN/barcode numbers when available
- Add photos — upload them directly via the UI editor or provide URLs from official sources
- Test your changes with
make validate - Write clear commit messages
Don't:
- Guess specifications — only add what you know
- Include copyrighted content without permission
- Create duplicate entries — search first!
- Modify UUIDs of existing entities
Every contribution makes this database more valuable for the 3D printing community. Whether you're adding a single material or an entire brand catalog, we appreciate your help!