Ironic is a batteries-included application framework for building production-grade Rust APIs on top of Axum. It brings modular architecture, compile-time dependency injection, API versioning, validation, authentication, OpenAPI, security, observability, background jobs, WebSockets, databases, testing utilities, and CLI tooling into one cohesive framework.
Ironic started with a simple question:
What if building a production Rust backend could feel as structured and productive as building with NestJS—without giving up Rust's type safety and performance?
Rust gives us incredible correctness and performance, but building a complete application often means choosing and wiring together many separate libraries.
Ironic brings those pieces together around a modular architecture.
You get:
⚡ Compile-time dependency injection
🧩 Modules, controllers & providers
🛡️ JWT, OAuth2, sessions & security middleware
📚 Automatic OpenAPI / Swagger
🔍 Validation, pipes, guards & interceptors
📊 Prometheus & OpenTelemetry
🔄 Background jobs, queues, events & CQRS
🔌 WebSockets, SSE, GraphQL & gRPC integrations
🗄️ SQLx, SeaORM, Diesel, MongoDB & Redis integrations
🧪 Testing utilities and in-process HTTP testing
🛠️ CLI scaffolding and code generation
And because it's Rust, the framework is designed around compile-time correctness rather than relying heavily on runtime reflection.
Ironic currently builds on Axum, so you can benefit from the mature Rust HTTP ecosystem while getting a higher-level application architecture on top.
We'd love feedback from Rust developers:
Would you use a batteries-included application framework like Ironic for your next backend?
Try it, break it, benchmark it, and tell us what you think. 🦀