Skip to main content

Crate reinhardt_conf

Crate reinhardt_conf 

Source
Expand description

§Reinhardt Configuration Framework

Django-inspired settings management for Rust with secrets, encryption, and audit logging.

This crate provides a comprehensive configuration management framework for Reinhardt applications, inspired by Django’s settings system with additional security features.

§Features

  • Multiple configuration sources: Files, environment variables, command-line arguments
  • Type-safe settings: Strong type validation with custom validators
  • Secrets management: Integration with HashiCorp Vault, AWS Secrets Manager, Azure Key Vault
  • Encryption: Built-in encryption for sensitive settings
  • Dynamic backends: Redis and database-backed dynamic settings
  • Secret rotation: Automatic secret rotation support
  • Audit logging: Track all setting changes

§Quick Start

use reinhardt_conf::Settings;

// Create settings with defaults and override specific fields
#[allow(deprecated)]
let mut settings = Settings::default();
settings.core.secret_key = "my-secret-key".to_string();
settings.core.debug = false;
settings.core.allowed_hosts = vec!["example.com".to_string()];

assert!(!settings.core.debug);
assert_eq!(settings.core.allowed_hosts[0], "example.com");

§Architecture

Key modules in this crate:

  • settings: Core settings management with layered configuration and builder pattern
    • builder: SettingsBuilder for composing config from multiple sources
    • sources: Configuration source adapters (files, env vars, .env files)
    • profile: Environment profiles (Development, Staging, Production)
    • dynamic: Redis and database-backed dynamic settings
    • secrets: Secrets management integration (Vault, AWS, Azure)
    • encryption: AES-GCM encryption for sensitive settings values
    • audit: Change tracking and audit log for setting modifications
    • hot_reload: File system watcher for live settings reload

§Feature Flags

FeatureDefaultDescription
settingsenabledCore settings management and builder
asyncdisabledAsync/await support via Tokio
dynamic-redisdisabledRedis-backed dynamic settings
dynamic-databasedisabledDatabase-backed dynamic settings
vaultdisabledHashiCorp Vault secrets integration
aws-secretsdisabledAWS Secrets Manager integration
azure-keyvaultdisabledAzure Key Vault integration
secret-rotationdisabledAutomatic secret rotation support
encryptiondisabledAES-GCM encryption for sensitive values
hot-reloaddisabledLive settings reload on file change
cachingdisabledIn-memory settings caching with TTL

Re-exports§

pub use settings::DatabaseConfig;
pub use settings::MiddlewareConfig;
pub use settings::Settings;Deprecated
pub use settings::TemplateConfig;
pub use settings::cache::CacheSettings;
pub use settings::cache::HasCacheSettings;
pub use settings::contacts::ContactSettings;
pub use settings::contacts::HasContactSettings;
pub use settings::core_settings::CoreSettings;
pub use settings::core_settings::HasCoreSettings;
pub use settings::cors::CorsSettings;
pub use settings::cors::HasCorsSettings;
pub use settings::email::EmailSettings;
pub use settings::email::HasEmailSettings;
pub use settings::fragment::HasSettings;
pub use settings::fragment::SettingsFragment;
pub use settings::i18n::HasI18nSettings;
pub use settings::i18n::I18nSettings;
pub use settings::logging::HasLoggingSettings;
pub use settings::logging::LoggingSettings;
pub use settings::media::HasMediaSettings;
pub use settings::media::MediaSettings;
pub use settings::security::HasSecuritySettings;
pub use settings::security::SecuritySettings;
pub use settings::session::HasSessionSettings;
pub use settings::session::SessionSettings;
pub use settings::static_files::HasStaticSettings;
pub use settings::static_files::StaticSettings;
pub use settings::template_settings::HasTemplateSettings;
pub use settings::template_settings::TemplateSettings;

Modules§

settings
Settings Module

Macros§

assert_env
Assert that an environment variable has a specific value
assert_env_exists
Assert that an environment variable exists
assert_env_not_exists
Assert that an environment variable does not exist