// mutation authority framework

Take The Time Out Of Realtime

MAF is an authoritative realtime framework for writing simple, secure, and scalable apps.

Secure By Design

Server-side access control and data validation is core to MAF.

Realtime Primitives

Ready-to-use realtime tools so you can focus on actually building.

Built to Scale

Engineered for performance and scalability, MAF is designed to grow.

Cloud Deployments

Get a ready-to-go deployment within 30 seconds of creating an app.

Connecting...

Lights Out - Synchronized Between Everyone

(keep scrolling)

It's as Simple as That.

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.

1

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);
2

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

3

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!

Goodbye Boilerplate!

MAF comes with powerful pre-made building blocks to build your app.


Stores

Persistent, synchronized, and shared state with fine-grained controls.

Remote Procedure Calls (RPCs)

Realtime transactions that feel like local invocations.

Channels

Anyhow back and forth message passing.

Rooms

Easily manage users and keep state separated.

Authentication

Secure your app with built-in authentication and authorization patterns.

It's time for realtime.