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 alefRustPythonNode.jsWASMRubyPHPElixirJavaGoC#KotlinDartSwiftZigC FFIHomebrewLicense

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.0-rc.11"}
]
end

Run mix deps.get.

System Requirements

Quick example

See the spikard repository for usage examples and guides.

Features

FeatureSupport
Type-safe routingPath, query, body, and header parameter validation
Request extractionTyped structs for JSON, form data, multipart, and raw bodies
Spec supportOpenAPI 3.0 · AsyncAPI 3.0 · GraphQL SDL · JSON-RPC 2.0
MiddlewareCompression, rate limiting, timeouts, authentication, static files
Lifecycle hooksRequest, pre-validation, pre-handler, response, and error hooks
WebSocket & SSEBidirectional streams and server-sent events
Error handlingConsistent error responses across all bindings via ProblemDetails
Fixture testingShared 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.