Skip to content

Maat Documentation

Maat is a backend framework for Dart. It brings together routing, middleware, validation, dependency injection, database access, authentication, queues, mail, notifications, and realtime features behind one consistent application lifecycle.

If you have used Laravel, the structure will feel familiar. Maat keeps the productive conventions while using Dart’s type system, async model, and native compiler directly.

New to Maat?

Start with Build Your First Maat Application. You will create, validate, test, and run a JSON endpoint in one short guide.

Create an Application

You can create and run a new application with four commands:

Terminal window
dart pub global activate ptah
maat new blog
cd blog
maat serve

Open http://127.0.0.1:8000 or request the generated health endpoint at http://127.0.0.1:8000/api/health.

Why Maat

Maat is designed for teams that want a full web framework without giving up the strengths of Dart:

  • Typed application code. Controllers, middleware, models, commands, and services are ordinary Dart classes.
  • No reflection. The application behaves the same in development and in an ahead-of-time compiled executable.
  • One deployment artifact. Production builds use dart build cli and do not require a Dart SDK on the server.
  • Familiar conventions. Routes, service providers, validation rules, migrations, resources, and feature tests follow a predictable vocabulary.
  • Explicit wiring. Configuration and providers are registered in code, so dependencies remain visible and analyzable.

Learn the Framework

Start Here

Handle HTTP Requests

Store and Protect Data

Build Application Features

Test and Ship

  • Sesh Console documents generators and application commands.
  • Djed provides trusted local .test domains on macOS.
  • Testing covers the in-process HTTP client, fakes, factories, and database reset helpers.
  • Deployment covers native builds, containers, proxies, and production checks.
  • Coming From Laravel maps familiar concepts to Maat’s Dart APIs.

Production Model

Maat applications compile ahead of time:

Terminal window
dart build cli --target=bin/server.dart --output=build
./build/server

The resulting executable contains your application and its Dart dependencies. Runtime configuration still comes from environment variables, so the same artifact can move between staging and production.