Ironic
A batteries-included, type-safe application framework for building structured Rust APIs on top of Axum. Inspired by NestJS's modular architecture, grounded in Rust's type system.
Quick Start
Features
- Modular architecture — modules, imports, exports, provider visibility
- Dependency injection — singletons, transients, factories, cycle detection
- HTTP routing — Axum adapter, controllers, parameter extraction
- API versioning — URI prefix, header-based, and media-type versioning strategies
- Request pipeline — middleware, guards, interceptors, error handling
- Parameter pipes — type parsing, validation, and transformation pipelines
- Validation pipes —
ValidationPipewithgardeintegration (#[garde(...)]attributes) - Exception filters — structured error handling with route-level and global filter chains
- Response serialization —
#[derive(Serializable)]with#[exclude]and#[expose(role)]for field-level JSON control - Security middleware — CORS, rate limiting, security headers (HSTS, CSP, X-Content-Type-Options, X-Frame-Options), CSRF protection
- Response compression — gzip, brotli, and zstd via
AxumAdapter::compression() - Procedural macros —
#[derive(Injectable)],#[Module],#[controller],#[get],#[post],#[derive(Serializable)] - Testing utilities — in-process test app, provider overrides, fluent assertions
- CLI — project scaffolding, code generators, doctor command
- OpenAPI — automatic schema generation, Swagger UI
- Integrations — SQLx, SeaORM, Diesel, MongoDB, Redis, JWT, OAuth, gRPC, GraphQL
Example
use *;
;
async
Documentation
Contributing
See CONTRIBUTING.md for setup instructions, coding conventions, and PR workflow.
License
Licensed under either of MIT or Apache 2.0 at your option.