LogoRevali

Build powerful APIs with Dart

Revali reads the annotations on your classes and methods and generates the server, the client, and the OpenAPI document. You write the business logic.

@Controller('users')
class UserController {
  const UserController(this.users);

  final UserService users;

  @Get()
  Future<List<User>> all() => users.all();

  @Post()
  Future<User> create(@Body() UserInput input) {
    return users.create(input);
  }
}

Why Revali#

Highly extendable

Constructs are first-class. Generate a Dart client, a Swagger document or a Dockerfile from the same annotations — or write your own.

Rapid development

revali dev watches your routes, regenerates the server and hot reloads it. No build step to remember, no restart to sit through.

Powered by Dart

One language across your API and your Flutter app, with the same types on both sides of the wire and no hand-written serialization in between.

Where to start#