Platform introduction

Part VI covers application platform capabilities: unified platform services, observability, data access, API boundaries, and the application host.

This portfolio extends the core Effect runtime and Part V functional patterns toward a full-stack Rust platform (compare .NET, Spring Boot, Rails, Django, Next.js capability trees).

id_effect_platform

The id_effect_platform crate is the Rust analogue of @effect/platform:

ModuleTraitPurpose
httpHttpClientBuffered and streaming HTTP (execute, execute_stream)
fsFileSystemRead/write/append/exists/metadata
processProcessRuntimeSpawn, wait, kill child processes
uriPortable URI parsing
authSessionStore, OAuthClientSession and OAuth capability traits

Capabilities are registered with provide_reqwest_http_client(), LiveFileSystemProvider, and TokioProcessRuntimeProvider.

#![allow(unused)]
fn main() {
use id_effect::{build_env, run_async};
use id_effect_platform::http::{HttpRequest, execute, provide_reqwest_http_client};

let env = build_env([provide_reqwest_http_client()]).expect("providers");
let resp = run_async(execute(HttpRequest::get("https://example.com")), env).await?;
}

Prefer platform HTTP over raw reqwest::Client in application R types. See Reqwest migration.

Portfolio map

ChapterMissionCrate
ch27Observabilityid_effect_opentelemetry
ch28Dataid_effect_sql
ch29API boundariesid_effect_rpc
ch30Application hostid_effect_axum + id_effect_platform::auth

Mission index: docs/platform/ROADMAP.md.

Prerequisites

  • Part II (capabilities and layers)
  • Part V functional patterns (recommended)