# coil-framework/coil architecture

> Architecture diagram of the GitHub repository coil-framework/coil, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/coil-framework/coil
- Repository: https://github.com/coil-framework/coil

## Overview

Coil is a Rust web platform for HTML-first, multi-site applications, with Shoppr as its ecommerce reference app and Gitly demonstrating non-commerce use. A typical user request enters the runtime’s HTTP/routing layer; product capabilities include content rendering, catalog and checkout workflows, and customer-specific extensions. The repository also provides reusable domain modules and platform services. The README documents these product boundaries, but sampled source is limited, so the graph omits uncertain internal call wiring and treats the Stripe integration as optional.

Main entry points: [`apps/shoppr/crates/shoppr-app/src/lib.rs`](https://github.com/coil-framework/coil/blob/main/apps/shoppr/crates/shoppr-app/src/lib.rs) (Shoppr App), [`crates/coil-runtime/src/http/execution.rs`](https://github.com/coil-framework/coil/blob/main/crates/coil-runtime/src/http/execution.rs) (HTTP Execution), [`crates/coil-commerce/src/checkout.rs`](https://github.com/coil-framework/coil/blob/main/crates/coil-commerce/src/checkout.rs) (Checkout), [`crates/coil-app/src/composition.rs`](https://github.com/coil-framework/coil/blob/main/crates/coil-app/src/composition.rs) (App Composition)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Request Runtime"]
  node_http["HTTP Execution<br/>[execution.rs]"]
  node_routing["Route Matching<br/>[mod.rs]"]
  node_render["HTML Rendering<br/>[mod.rs]"]
end

subgraph group_commerce["Commerce"]
  node_catalog["Product Catalog<br/>[catalog.rs]"]
  node_pricing["Pricing<br/>[pricing.rs]"]
  node_checkout["Checkout<br/>[checkout.rs]"]
  node_orders["Orders<br/>[orders.rs]"]
  node_stripe["Stripe Integration<br/>[stripe.rs]"]
end

subgraph group_content["Content And Media"]
  node_cms["CMS Pages<br/>[page.rs]"]
  node_media["Media Library<br/>[library.rs]"]
  node_memberships["Memberships<br/>[subscription.rs]"]
  node_events["Events<br/>[booking.rs]"]
end

subgraph group_platform["Platform Services"]
  node_auth["Authorization<br/>[service.rs]"]
  node_data["Data Access<br/>[repository.rs]"]
  node_storage["Managed Storage<br/>[mod.rs]"]
  node_cache["Cache<br/>[runtime.rs]"]
  node_jobs["Jobs<br/>[runtime.rs]"]
end

subgraph group_custom["Customer Apps And Extensions"]
  node_shoppr["Shoppr App<br/>[lib.rs]"]
  node_rust_extensions["Rust Extensions<br/>[lib.rs]"]
  node_wasm["WASM Extensions<br/>[engine.rs]"]
  node_app_composition["App Composition<br/>[composition.rs]"]
end

node_visitor(("Site Visitor"))

node_visitor -->|"sends request"| node_http
node_http -->|"routes request"| node_routing
node_shoppr -->|"configures app"| node_app_composition
node_app_composition -->|"builds runtime"| node_http
node_shoppr -->|"offers commerce"| node_catalog
node_shoppr -->|"supports checkout"| node_checkout
node_checkout -.->|"optional payments"| node_stripe
node_shoppr -->|"uses content"| node_cms
node_shoppr -->|"adds customer logic"| node_rust_extensions
node_shoppr -.->|"may install extensions"| node_wasm

click node_http "https://github.com/coil-framework/coil/blob/main/crates/coil-runtime/src/http/execution.rs"
click node_routing "https://github.com/coil-framework/coil/blob/main/crates/coil-runtime/src/http/routing/mod.rs"
click node_render "https://github.com/coil-framework/coil/blob/main/crates/coil-runtime/src/render/mod.rs"
click node_shoppr "https://github.com/coil-framework/coil/blob/main/apps/shoppr/crates/shoppr-app/src/lib.rs"
click node_catalog "https://github.com/coil-framework/coil/blob/main/crates/coil-commerce/src/catalog.rs"
click node_pricing "https://github.com/coil-framework/coil/blob/main/crates/coil-commerce/src/pricing.rs"
click node_checkout "https://github.com/coil-framework/coil/blob/main/crates/coil-commerce/src/checkout.rs"
click node_orders "https://github.com/coil-framework/coil/blob/main/crates/coil-commerce/src/orders.rs"
click node_stripe "https://github.com/coil-framework/coil/blob/main/crates/coil-commerce/src/module/stripe.rs"
click node_cms "https://github.com/coil-framework/coil/blob/main/crates/coil-cms/src/model/page.rs"
click node_media "https://github.com/coil-framework/coil/blob/main/crates/coil-media/src/library.rs"
click node_memberships "https://github.com/coil-framework/coil/blob/main/crates/coil-memberships/src/subscription/subscription.rs"
click node_events "https://github.com/coil-framework/coil/blob/main/crates/coil-events/src/booking.rs"
click node_auth "https://github.com/coil-framework/coil/blob/main/crates/coil-auth/src/service.rs"
click node_data "https://github.com/coil-framework/coil/blob/main/crates/coil-data/src/repository.rs"
click node_storage "https://github.com/coil-framework/coil/blob/main/crates/coil-storage/src/execution/mod.rs"
click node_cache "https://github.com/coil-framework/coil/blob/main/crates/coil-cache/src/runtime.rs"
click node_jobs "https://github.com/coil-framework/coil/blob/main/crates/coil-jobs/src/runtime.rs"
click node_rust_extensions "https://github.com/coil-framework/coil/blob/main/crates/coil-customer-sdk/src/lib.rs"
click node_wasm "https://github.com/coil-framework/coil/blob/main/crates/coil-wasm/src/engine.rs"
click node_app_composition "https://github.com/coil-framework/coil/blob/main/crates/coil-app/src/composition.rs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_http,node_routing,node_render toneBlue
class node_catalog,node_pricing,node_checkout,node_orders,node_stripe toneAmber
class node_cms,node_media,node_memberships,node_events toneMint
class node_auth,node_data,node_storage,node_cache,node_jobs toneRose
class node_shoppr,node_rust_extensions,node_wasm,node_app_composition,node_visitor toneIndigo
```

## Components

### Request Runtime

- [HTTP Execution](https://github.com/coil-framework/coil/blob/main/crates/coil-runtime/src/http/execution.rs): `crates/coil-runtime/src/http/execution.rs`
- [Route Matching](https://github.com/coil-framework/coil/blob/main/crates/coil-runtime/src/http/routing/mod.rs): `crates/coil-runtime/src/http/routing/mod.rs`
- [HTML Rendering](https://github.com/coil-framework/coil/blob/main/crates/coil-runtime/src/render/mod.rs): `crates/coil-runtime/src/render/mod.rs`

### Commerce

- [Product Catalog](https://github.com/coil-framework/coil/blob/main/crates/coil-commerce/src/catalog.rs): `crates/coil-commerce/src/catalog.rs`
- [Pricing](https://github.com/coil-framework/coil/blob/main/crates/coil-commerce/src/pricing.rs): `crates/coil-commerce/src/pricing.rs`
- [Checkout](https://github.com/coil-framework/coil/blob/main/crates/coil-commerce/src/checkout.rs): `crates/coil-commerce/src/checkout.rs`
- [Orders](https://github.com/coil-framework/coil/blob/main/crates/coil-commerce/src/orders.rs): `crates/coil-commerce/src/orders.rs`
- [Stripe Integration](https://github.com/coil-framework/coil/blob/main/crates/coil-commerce/src/module/stripe.rs): `crates/coil-commerce/src/module/stripe.rs`

### Content And Media

- [CMS Pages](https://github.com/coil-framework/coil/blob/main/crates/coil-cms/src/model/page.rs): `crates/coil-cms/src/model/page.rs`
- [Media Library](https://github.com/coil-framework/coil/blob/main/crates/coil-media/src/library.rs): `crates/coil-media/src/library.rs`
- [Memberships](https://github.com/coil-framework/coil/blob/main/crates/coil-memberships/src/subscription/subscription.rs): `crates/coil-memberships/src/subscription/subscription.rs`
- [Events](https://github.com/coil-framework/coil/blob/main/crates/coil-events/src/booking.rs): `crates/coil-events/src/booking.rs`

### Platform Services

- [Authorization](https://github.com/coil-framework/coil/blob/main/crates/coil-auth/src/service.rs): `crates/coil-auth/src/service.rs`
- [Data Access](https://github.com/coil-framework/coil/blob/main/crates/coil-data/src/repository.rs): `crates/coil-data/src/repository.rs`
- [Managed Storage](https://github.com/coil-framework/coil/blob/main/crates/coil-storage/src/execution/mod.rs): `crates/coil-storage/src/execution/mod.rs`
- [Cache](https://github.com/coil-framework/coil/blob/main/crates/coil-cache/src/runtime.rs): `crates/coil-cache/src/runtime.rs`
- [Jobs](https://github.com/coil-framework/coil/blob/main/crates/coil-jobs/src/runtime.rs): `crates/coil-jobs/src/runtime.rs`

### Customer Apps And Extensions

- [Shoppr App](https://github.com/coil-framework/coil/blob/main/apps/shoppr/crates/shoppr-app/src/lib.rs): `apps/shoppr/crates/shoppr-app/src/lib.rs`
- [Rust Extensions](https://github.com/coil-framework/coil/blob/main/crates/coil-customer-sdk/src/lib.rs): `crates/coil-customer-sdk/src/lib.rs`
- [WASM Extensions](https://github.com/coil-framework/coil/blob/main/crates/coil-wasm/src/engine.rs): `crates/coil-wasm/src/engine.rs`
- [App Composition](https://github.com/coil-framework/coil/blob/main/crates/coil-app/src/composition.rs): `crates/coil-app/src/composition.rs`

### Other components

- **Site Visitor**

## Connections

- Site Visitor → HTTP Execution: sends request
- HTTP Execution → Route Matching: routes request
- Shoppr App → App Composition: configures app
- App Composition → HTTP Execution: builds runtime
- Shoppr App → Product Catalog: offers commerce
- Shoppr App → Checkout: supports checkout
- Checkout → Stripe Integration: optional payments
- Shoppr App → CMS Pages: uses content
- Shoppr App → Rust Extensions: adds customer logic
- Shoppr App → WASM Extensions: may install extensions
