Skip to content

Developer Guide

This section covers the internals of winterbaume for contributors who want to implement new services, extend the code generator, write tests, or add pluggable backends.

Contents

  • Architecture — component model, request flow, core traits
  • Adding a Service — step-by-step guide for new service crates
  • Smithy Codegen — generating model.rs and wire.rs from Smithy models
  • Testing — integration tests, moto parity ports, Terraform E2E suites
  • Backends — implementing pluggable storage and query-execution backends

Quick orientation

winterbaume/
  crates/
    winterbaume-core/     # shared traits, BackendState, MockAws builder, Vfs/BlobStore
    winterbaume-{svc}/    # one crate per AWS service
    winterbaume-server/   # standalone HTTP server (hyper)
    winterbaume-stubs/    # 501 fallback for unmapped services
    winterbaume-*-redis/  # optional Redis persistence crates
    winterbaume-sqlengine-duckdb/  # optional DuckDB query backend
    winterbaume-partiql/  # DynamoDB PartiQL parser
    winterbaume-terraform/ # Terraform provider compatibility
  tools/
    smithy-codegen/       # generates model.rs + wire.rs per service
  vendor/
    moto/                 # reference Python moto (git submodule)
  tests/
    e2e/terraform/        # Terraform E2E test suites

Where to start

GoalStart here
Understand the overall designArchitecture
Add a new AWS serviceAdding a Service
Fix a generated serialiserSmithy Codegen
Add tests for a serviceTesting
Add a Redis or DuckDB backendBackends

Released under the Apache-2.0 License.