Project Structure

This document provides detailed information about each directory in the OpenZeppelin Relayer project.

Source Code Organization

src/ Directory

The main source code directory contains the core implementation files organized into several modules:

  • api/: Route and controllers logic

    • Manages HTTP routing and delegates incoming requests to controllers

  • bootstrap/: Service initialization

    • Bootstraps and initializes application services

  • config/: Configuration management

    • Handles system configuration and environment settings

  • constants/: Global constants

    • Provides static values used across the application

  • domain/: Business domain logic

    • Encapsulates core business rules and domain-specific functionality

  • jobs/: Asynchronous job processing

    • Manages background task queueing and execution

  • logging/: Logging and file rotation

    • Implements logging functionalities and log file management

  • metrics/: Metrics collection

    • Collects and reports application performance and usage metrics

  • models/: Core data models and types

    • Defines data structures and type definitions for the system

  • repositories/: Configuration storage

    • Provides interfaces for storing and retrieving configuration data

  • services/: Business service logic

    • Implements core business functionalities and service operations

  • utils/: Utility functions

    • Offers helper functions and common utilities for the application

Documentation

docs/ Directory

Project documentation:

Configuration

config/ Directory

Houses system configuration file and keys:

  • config.json configuration file

  • keystore files referenced from config.json file

Tests

test/ Directory

Includes comprehensive testing suites to ensure system reliability:

  • End-to-end tests that simulate real-world user scenarios

Scripts

scripts/ Directory

Utility scripts.

Examples

examples/ Directory

Provides practical examples and sample configurations to help users get started:

  • Demonstrates typical service configurations for various environments

  • Acts as a quick-start guide for customizing and deploying the relayer

  • Serves as a reference for best practices in configuration and deployment

Development Tools

Pre-commit Hooks

Located in the project root:

  • Code formatting checks

  • Linting rules

  • Commit message validation

Build Configuration

Core build files:

  • Cargo.toml: Project dependencies and metadata

  • rustfmt.toml: Code formatting rules

  • rust-toolchain.toml: Rust version and components

Docker Support

The project includes Docker configurations for different environments:

  • Dockerfile.development: Development container setup

  • Dockerfile.production: Production-ready container

For detailed information about running the relayers in containers, see the Docker deployment section in the main documentation.