You are not reading the current version of this documentation. 0.1.0 is the current version.

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.