Skip to main content
This guide walks you through the process of adding new protocol colors to the Color Palettes project. Follow these steps carefully to ensure your contribution meets all requirements.

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 zkEVM
string
required
The hex color code of the protocol’s primary brand color.Pattern: ^#[0-9A-Fa-f]{6}$Examples: #627EEA, #FF007A, #8247E5
array
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
Examples: ["ethereum", "eth", "weth"], ["uniswap", "uni"]

Step-by-Step Process

1

Research the Protocol

Before adding a new protocol, gather accurate information:
Check these sources in order of preference:
  1. Official Brand Kit: Many protocols provide downloadable brand assets
  2. Press/Media Pages: Often include brand guidelines
  3. Official Website: Use browser DevTools to inspect CSS for exact hex values
  4. Official Documentation: May specify brand colors
  5. GitHub Repository: Check for brand asset files
Never guess colors or use colors from unofficial sources. If you can’t find official brand colors, open an issue to discuss with maintainers.
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.
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:
  1. Open the file in your preferred editor
  2. Find the appropriate location (alphabetical order recommended but not required)
  3. Add your entry with proper JSON formatting
  4. Ensure proper commas between entries
Common JSON Mistakes:
  • Missing comma between entries
  • Extra comma after last entry
  • Missing quotes around strings
  • Incorrect bracket/brace nesting
4

Validate Your Changes

Before submitting, validate your JSON:
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

Scenario: Adding Optimism to the collectionResearch:
  • Official site: https://optimism.io
  • Brand color: #FF0420 (from brand kit)
  • Common names: “Optimism”, “OP Mainnet”, “OP”
Entry:
Result: ✅ Successfully added
Scenario: Adding Lido staking protocolResearch:
  • Official site: https://lido.fi
  • Brand color: #4DB0F2 (from CSS)
  • Common name: “Lido” (ticker: LDO, but we use protocol name)
Entry:
Result: ✅ Successfully added
Scenario: Adding 1inch DEX aggregatorResearch:
  • Official site: https://1inch.io
  • Brand color: #0077FF
  • Common names: “1inch”, “oneinch” (spelled out), “inch”
Entry:
Note: Numbers are allowed in protocol names and aliasesResult: ✅ Successfully added
Scenario: Adding Sei, but “sei” alias might conflictResearch:
  • Checking existing entries: Found “SEI (Cosmos)” with aliases ["sei cosmos", "sei network"]
  • This is a different Sei implementation
Entry:
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.

Common Mistakes to Avoid

Invalid Hex Codes❌ "hex": "627EEA" - Missing # prefix❌ "hex": "#627" - Too short (must be 6 digits)❌ "hex": "#627EEAFF" - Too long (no alpha channel)❌ "hex": "#627eea" - Lowercase is allowed but uppercase preferred✅ "hex": "#627EEA" - Correct format
Empty or Invalid Aliases❌ "aliases": [] - At least one required❌ "aliases": ["eth", "eth"] - No duplicates allowed❌ "aliases": ["eth/weth"] - Invalid character /✅ "aliases": ["eth", "weth"] - Correct format
JSON Formatting Errors❌ Missing comma between properties❌ Trailing comma after last entry❌ Unquoted property names✅ Properly formatted with all required syntax

Getting Help

If you encounter issues while adding colors:
  1. Review the Contribution Guidelines for general best practices
  2. Check CI Validation Checks if automated tests fail
  3. Read Understanding Alias Conflicts for conflict resolution
  4. 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.