Skip to content

Latest commit

 

History

History
123 lines (93 loc) · 4.35 KB

File metadata and controls

123 lines (93 loc) · 4.35 KB

Dependencies Overview

Pangolin is built with the following key Rust crates:

Core Frameworks

  • Axum: Ergonomic and modular web application framework.
  • Tokio: Asynchronous runtime for Rust.
  • Tower: Modular and reusable components for building robust networking clients and servers.

Data & Serialization

  • Serde: Framework for serializing and deserializing Rust data structures.
  • Serde JSON: JSON support for Serde.
  • Bytes: Utilities for working with bytes (used in federated proxy).

Storage

  • Object Store: Unified interface for object storage (S3, GCS, Azure, Local).
  • DashMap: Concurrent associative array for high-performance in-memory storage.
  • SQLx: Async SQL toolkit for PostgreSQL, MongoDB, and SQLite.
    • Features: postgres, mongodb, sqlite, uuid, chrono, json
  • MongoDB: Official MongoDB driver for Rust.

Security & Authentication

  • JSON Web Token: JWT creation and validation.
  • bcrypt: Password hashing for users and API key hashing for service users.
  • AWS SDK for S3: Official AWS SDK for S3 operations and STS credential vending.
  • AWS Config: AWS configuration loading.

HTTP Client (Federated Catalogs)

  • reqwest: HTTP client for forwarding requests to external catalogs.

Utilities

  • Uuid: UUID generation for entities.
  • Chrono: Date and time handling.
  • Tracing: Application-level tracing for async Rust.
  • Anyhow: Flexible error handling.

Development Dependencies

  • tokio-test: Testing utilities for async code.
  • mockall: Mocking framework for tests.

Feature-Specific Dependencies

Service Users

  • bcrypt - API key hashing
  • uuid - Service user ID generation
  • chrono - Expiration tracking

Merge Conflict Resolution

  • uuid - Merge operation and conflict ID generation
  • chrono - Timestamp tracking
  • serde - Conflict serialization

Federated Catalogs

  • reqwest - HTTP client for proxying requests
  • bytes - Request/response body handling
  • axum::http - HTTP types for forwarding

Cloud Provider SDKs (Optional)

For credential vending with AWS STS, Azure OAuth2, or GCP service accounts:

  • AWS SDK: aws-config, aws-sdk-sts, aws-credential-types, aws-smithy-types
  • Azure Identity: azure_identity, azure_core
  • GCP Auth: gcp_auth

Build with cloud features:

# All cloud providers
cargo build --features cloud-credentials

# Individual providers
cargo build --features aws-sts
cargo build --features azure-oauth
cargo build --features gcp-oauth

Default build (without features) uses placeholder implementations for development.

System Requirements

Minimum

  • Rust 1.75+
  • 2GB RAM (for development)
  • Linux, macOS, or Windows

Recommended (Production)

  • Rust 1.82+
  • 4GB+ RAM
  • Linux (Ubuntu 20.04+ or similar)
  • Backend Storage (choose one):
    • PostgreSQL 12+ (recommended for production)
    • MongoDB 5+ (recommended for cloud-native)
    • SQLite 3.35+ (recommended for development/embedded)
  • Warehouse Storage: S3, Azure Blob, or GCS

Building from Source

# Clone repository
git clone https://github.com/your-org/pangolin.git
cd pangolin

# Build all crates
cargo build --release

# Run tests
cargo test

# Run API server
cargo run --bin pangolin_api --release

Docker Dependencies

If using Docker deployment:

  • Docker 20.10+
  • Docker Compose 1.29+ (optional)

Related Documentation