spikard - polyglot web toolkit

Spikard — Part of the spikard polyglot web toolkit.

Codegen-first polyglot web toolkit on a Rust core: OpenAPI/AsyncAPI/GraphQL/JSON-RPC/gRPC codegen, SQL-to-HTTP, tower-http middleware, and an MCP server. Experimental, pre-1.0. Elixir bindings via Rustler NIF with OTP integration.

Built with alef Rust Python Node.js WASM Ruby PHP Elixir Java Go C# Kotlin Dart Swift Zig C FFI Homebrew License

Install · Quick example · Features · Docs


Important

spikard is experimental and pre-1.0. APIs change between releases and not every binding is at the same level of maturity, so it is not yet recommended for production. Feedback is genuinely wanted at this stage — open an issue if something is wrong, awkward, or missing.

What this package provides

Installation

Add to mix.exs:

def deps do
  [
    {:spikard, "~> 0.17.2"}
  ]
end

Run mix deps.get.

System Requirements

Quick example

See the spikard repository for usage examples and guides.

Features

Feature Support
Type-safe routing Path, query, body, and header parameter validation
Request extraction Typed structs for JSON, form data, multipart, and raw bodies
Spec support OpenAPI 3.0 · AsyncAPI 3.0 · GraphQL SDL · JSON-RPC 2.0
Middleware Compression, rate limiting, timeouts, authentication, static files
Lifecycle hooks Request, pre-validation, pre-handler, response, and error hooks
WebSocket & SSE Bidirectional streams and server-sent events
Error handling Consistent error responses across all bindings via ProblemDetails
Fixture testing Shared JSON fixtures for behavioral consistency across languages
Routing

See examples in the repository.

Validation

See examples in the repository.

Middleware & configuration

See examples in the repository.

Resources

License

MIT License — see LICENSE for details.