Maru is a DSL for building HTTP/REST APIs in Elixir that emphasizes concise routing, parameter validation, and versioning. Inspired by Ruby’s Grape, it lets you describe endpoints declaratively—paths, verbs, and nested scopes—while composing reusable middleware via Plug. Strong parameter parsing and validators help keep controllers clean by moving input checking and coercion into the route layer. Built-in support for namespacing and API versioning simplifies rolling changes or maintaining multiple client generations side by side. Error handling, helpers, and content negotiation are wired into the DSL, so common cross-cutting concerns are consistent across endpoints. Because Maru sits on Plug and Cowboy, it retains Elixir’s performance and concurrency while making API development fast and readable.
Features
- Grape‑inspired DSL for routing HTTP requests
- Parameter validation and coercion
- API versioning support
- Response processing middleware
- Supplementary unit testing support
- Lightweight and minimalistic for speedy API development