Understanding the Schema
The color palettes are maintained in JSON format with a specific structure:Schema Properties
string
required
The official name of the protocol or chain. This should match the brand’s official name exactly.Pattern:
^[A-Za-z0-9\\s\\-_().₮]+$Examples: Ethereum, Uniswap, Polygon zkEVMstring
required
The hex color code of the protocol’s primary brand color.Pattern:
^#[0-9A-Fa-f]{6}$Examples: #627EEA, #FF007A, #8247E5array
required
Common variations of the protocol name used in queries. Must contain at least one alias.Item Pattern:
^[a-zA-Z0-9_\\s.₮-]+$Requirements:- Minimum 1 alias
- All aliases must be unique (no duplicates within the array)
- Lowercase recommended for consistency
["ethereum", "eth", "weth"], ["uniswap", "uni"]Step-by-Step Process
1
Research the Protocol
Before adding a new protocol, gather accurate information:
Find Official Brand Colors
Find Official Brand Colors
Check these sources in order of preference:
- Official Brand Kit: Many protocols provide downloadable brand assets
- Press/Media Pages: Often include brand guidelines
- Official Website: Use browser DevTools to inspect CSS for exact hex values
- Official Documentation: May specify brand colors
- GitHub Repository: Check for brand asset files
Identify Common Aliases
Identify Common Aliases
Consider how the protocol appears in Dune Analytics:
- Full protocol name (lowercase)
- Official ticker/symbol
- Common abbreviations
- Chain identifiers used in Dune
- Version-specific names (e.g.,
uniswap_v2,uniswap_v3)
Run sample queries in Dune to see how the protocol name appears in actual data.
Check for Existing Entries
Check for Existing Entries
Before proceeding, verify the protocol isn’t already in the collection:
2
Prepare Your Entry
Create your protocol entry following the schema:
Checklist before proceeding:
- Protocol name matches official branding exactly
- Hex code is 6 digits with # prefix
- All hex digits are valid (0-9, A-F)
- At least one alias provided
- All aliases are lowercase
- No duplicate aliases within the entry
3
Edit the Color Palettes File
Add your entry to
color-palettes.json:- Open the file in your preferred editor
- Find the appropriate location (alphabetical order recommended but not required)
- Add your entry with proper JSON formatting
- Ensure proper commas between entries
4
Validate Your Changes
Before submitting, validate your JSON:
- Using jq
- Using Python
- Using Node.js
- Online Validator
Pre-submission validation:
- JSON syntax is valid
- File is properly formatted
- New entry follows schema exactly
- Hex code format is correct
- No obvious alias conflicts
5
Submit Your Pull Request
Create a pull request with your changes:PR Description Template:
6
Monitor CI Checks
Once submitted, automated CI checks will run:
JSON Schema Validation
Validates your entry against the schema
Duplicate Alias Detection
Checks for conflicts with existing aliases
If CI checks fail, see CI Validation Checks for troubleshooting guidance.
Real-World Examples
Example 1: Adding a New Layer 2
Example 1: Adding a New Layer 2
Scenario: Adding Optimism to the collectionResearch:Result: ✅ Successfully added
- Official site: https://optimism.io
- Brand color:
#FF0420(from brand kit) - Common names: “Optimism”, “OP Mainnet”, “OP”
Example 2: Adding a DeFi Protocol
Example 2: Adding a DeFi Protocol
Scenario: Adding Lido staking protocolResearch:Result: ✅ Successfully added
- Official site: https://lido.fi
- Brand color:
#4DB0F2(from CSS) - Common name: “Lido” (ticker: LDO, but we use protocol name)
Example 3: Adding a Protocol with Special Characters
Example 3: Adding a Protocol with Special Characters
Scenario: Adding 1inch DEX aggregatorResearch:Note: Numbers are allowed in protocol names and aliasesResult: ✅ Successfully added
- Official site: https://1inch.io
- Brand color:
#0077FF - Common names: “1inch”, “oneinch” (spelled out), “inch”
Example 4: Handling Alias Conflicts
Example 4: Handling Alias Conflicts
Scenario: Adding Sei, but “sei” alias might conflictResearch:CI Check: ❌ Would fail - “sei” conflicts with context in “SEI (Cosmos)”Resolution: Use more specific aliases or discuss in PRSee Understanding Alias Conflicts for resolution strategies.
- Checking existing entries: Found “SEI (Cosmos)” with aliases
["sei cosmos", "sei network"] - This is a different Sei implementation
Common Mistakes to Avoid
Getting Help
If you encounter issues while adding colors:- Review the Contribution Guidelines for general best practices
- Check CI Validation Checks if automated tests fail
- Read Understanding Alias Conflicts for conflict resolution
- Open a discussion issue if you’re unsure about anything
The community is here to help! Don’t hesitate to ask questions in your pull request.