//! # Soot - DDD-first Web Framework for Rust
//!
//! Soot is a web framework built on [Axum](https://github.com/tokio-rs/axum) that
//! enforces Domain-Driven Design patterns. It provides:
//!
//! - **DDD Primitives**: Traits for Aggregates, Repositories, Value Objects, and Domain Events
//! - **HTML Builder**: Type-safe, XSS-safe HTML generation using a builder pattern
//! - **Axum Integration**: Seamless integration with Axum's extractors and middleware
//!
//! ## Quick Start
//!
//! ```ignore
//! use soot::prelude::*;
//!
//! // Define an aggregate
//! struct User {
//!     id: Uuid,
//!     email: String,
//!     name: String,
//! }
//!
//! impl Aggregate for User {
//!     type Id = Uuid;
//!     fn id(&self) -> &Self::Id { &self.id }
//! }
//!
//! // Create a handler
//! async fn index(State(state): State<AppState>) -> Html {
//!     Html::new()
//!         .h1().text("Users")
//!         .ul().children(|h| h
//!             .each(&state.users, |h, user| h
//!                 .li().text(&user.name)
//!             )
//!         )
//!         .build()
//! }
//! ```
//!
//! ## Modules
//!
//! - [`ddd`] - Domain-Driven Design primitives
//! - [`html`] - HTML builder for server-side rendering
//! - [`error`] - Error types with Axum integration
//! - [`prelude`] - Convenient re-exports

pub mod ddd;
pub mod error;
pub mod html;
pub mod prelude;

// Re-export commonly used items at crate root
pub use ddd::{Aggregate, DomainEvent, EventBus, Repository, ValueObject};
pub use error::{AppError, AppResult};
pub use html::Html;
