// mutation authority framework
MAF is an authoritative realtime framework for writing simple, secure, and scalable apps.
Server-side access control and data validation is core to MAF.
Ready-to-use realtime tools so you can focus on actually building.
Engineered for performance and scalability, MAF is designed to grow.
Get a ready-to-go deployment within 30 seconds of creating an app.
Connecting...
Lights Out - Synchronized Between Everyone
(keep scrolling)
Create a realtime server in seconds.
Fumbling with Socket.io and Express
Implementing authentication patterns
Managing state across multiple clients
Handling complex data structures
Scaling your application
No need to reinvent the wheel.
Scaffold project with `maf create`
View scaffold for...
// [1] Import MAF server library
use maf::*;
fn build() -> App {
println!("Hello, world!");
App::builder()
// [2] Declare application functionality
.rpc("greet", |Params(name): Params<String>| {
format!("Hello, {}!", name)
})
.build()
}
// [3] Register the application to be ran
maf::register!(build);
Start a server with `maf run`
INFO: Running build command `...` in ...
≽^•⩊•^≼ ──☆*:・₊※*・:*:`♪:*:。*・☆*
... (compiler magic) ...
INFO: Build completed in 123.45ms
INFO: [dev] Loaded room from ...server.wasm
INFO: Development server listening on 1147
Connect to the server with a MAF client
// [1] Import MAF client library
import { MafClient } from "@usemaf/client";
// [2] Connect to the MAF server
const client = new MafClient(/* options */);
await client.connect();
// [3] Call the RPC method
const greeting = await client.rpc("greet", "World");
console.log(greeting); // Outputs: Hello, World!
MAF comes with powerful pre-made building blocks to build your app.
Persistent, synchronized, and shared state with fine-grained controls.
Realtime transactions that feel like local invocations.
Anyhow back and forth message passing.
Easily manage users and keep state separated.
Secure your app with built-in authentication and authorization patterns.