Revali

Revali is a powerful code generator specifically designed for the Dart programming language. It leverages annotations within your classes, methods, and method parameters to create an API, allowing developers to focus on writing clean, maintainable code while it handles the boilerplate.

Revali analyzes your Dart classes, methods, and annotations to generate your server code — built in, no extra package needed. Additional "constructs" (client generation, OpenAPI docs, Docker, or your own) are standalone dart packages you import into your project; Revali picks them up and runs them to generate more code alongside the server.

Example

@Controller('hello')
class HelloController {
  const HelloController();

  @Get()
  String hello() {
    return 'Hello, World!';
  }
}

CLI

dart run revali dev
dart run revali build
dart run revali routes [--generate] [--json]
dart run revali doctor
dart run revali create controller
dart run revali ai <claude|cursor|copilot|windsurf|cline|all>

# Repositories with more than one service
dart run revali services
dart run revali up
dart run revali compose

revali up runs every service in the repository together — a roster, a log pane per service, and keys that drive one of them or all of them — falling back to flat prefixed output where there is no terminal. See revali up.

See the root README and AGENTS.md for routes/doctor/create, HTTP 400 binding errors, @RequestId(), and the revali_mcp agent server.

Documentation

Check out the documentation for more information on how to use Revali.

Libraries

ast/analyzer/analyzer
ast/analyzer/analyzer_changes
ast/analyzer/units
ast/checkers/checkers
ast/file_system/analyzer_file
ast/file_system/analyzer_folder
ast/file_system/file_resource_provider
ast/file_system/util/watch_event_extension
ast/file_traverser
ast/find/find_impl
ast/find/interfaces/find
ast/visitors/app_visitor
ast/visitors/controller_visitor
ast/visitors/get_params
ast/visitors/method_visitor
clis/construct_runner/commands/build_command
clis/construct_runner/commands/dev_command
clis/construct_runner/commands/mixins/dart_defines_mixin
clis/construct_runner/construct_runner
clis/construct_runner/generator/construct_generator
clis/revali_runner/commands/ai/ai_command
clis/revali_runner/commands/ai/ai_templates
Template strings for AI coding assistant reference files.
clis/revali_runner/commands/ai/ai_tool_command
clis/revali_runner/commands/ai/ai_writer
clis/revali_runner/commands/ai/tools/all_command
clis/revali_runner/commands/ai/tools/claude_command
clis/revali_runner/commands/ai/tools/cline_command
clis/revali_runner/commands/ai/tools/copilot_command
clis/revali_runner/commands/ai/tools/cursor_command
clis/revali_runner/commands/ai/tools/windsurf_command
clis/revali_runner/commands/build_command
clis/revali_runner/commands/compose_command
clis/revali_runner/commands/dev_command
clis/revali_runner/commands/doctor_command
clis/revali_runner/commands/mixins/construct_runner_args
clis/revali_runner/commands/routes_command
clis/revali_runner/commands/services_command
clis/revali_runner/commands/up_command
clis/revali_runner/commands/utils/validate_tls_args
clis/revali_runner/revali_runner
clis/revali_runner/tui/service_list
clis/revali_runner/tui/service_log
clis/revali_runner/tui/service_style
clis/revali_runner/tui/shutdown_view
clis/revali_runner/tui/up_app
clis/shared/commands/construct_flags
clis/shared/commands/revali_command_runner
dart_define/dart_define
entrypoint/run_construct
entrypoint/run_revali
handlers/construct_entrypoint_handler
handlers/constructs_handler
handlers/routes_handler
handlers/vm_service_handler
revali
server/cli/commands/create/create_command
server/cli/commands/create/create_components/create_a_component_command
server/cli/commands/create/create_components/create_app_command
server/cli/commands/create/create_components/create_controller_command
server/cli/commands/create/create_components/create_lifecycle_component_command
server/cli/commands/create/create_components/create_observer_command
server/cli/commands/create/create_components/create_pipe_command
server/cli/commands/create/mixins/create_command_mixin
server/cli/models/cli_config
server/cli/models/create_paths
server/contract/contract_check
Compares two route manifests and reports what changed.
server/converters/annotation_mimics
server/converters/annotation_type_references
server/converters/base_annotations
server/converters/base_parameter_annotation
server/converters/has_pipe
server/converters/server_allow_headers
server/converters/server_allow_origins
server/converters/server_app
server/converters/server_app_annotation
server/converters/server_app_observers
server/converters/server_bind
server/converters/server_binds_annotation
server/converters/server_body_annotation
server/converters/server_child_route
server/converters/server_class
server/converters/server_expect_headers
server/converters/server_from_json
server/converters/server_generic_type
server/converters/server_header_annotation
server/converters/server_imports
server/converters/server_ip_annotation
server/converters/server_lifecycle_component
server/converters/server_lifecycle_component_method
server/converters/server_mimic
server/converters/server_param
server/converters/server_param_annotation
server/converters/server_param_annotations
server/converters/server_parent_route
server/converters/server_pipe
server/converters/server_public
server/converters/server_query_annotation
server/converters/server_record_prop
server/converters/server_reflect
server/converters/server_route
server/converters/server_route_annotations
server/converters/server_server
server/converters/server_set_header
server/converters/server_status_code
server/converters/server_to_json
server/converters/server_type
server/converters/server_type_reference
server/converters/simple_parameter_annotation
server/makers/creators/convert_to_json
server/makers/creators/create_app
server/makers/creators/create_arg_for_param
server/makers/creators/create_arg_from_binds
server/makers/creators/create_arg_from_custom_param
server/makers/creators/create_bind_context
server/makers/creators/create_bind_server
server/makers/creators/create_body_var
server/makers/creators/create_child_route
server/makers/creators/create_class
server/makers/creators/create_constructor_parameters
server/makers/creators/create_data_var
server/makers/creators/create_dependency_injection
server/makers/creators/create_fields
server/makers/creators/create_from_json
server/makers/creators/create_from_json_arg
server/makers/creators/create_generics
server/makers/creators/create_get_from_di
server/makers/creators/create_handler
server/makers/creators/create_header_var
server/makers/creators/create_ip_var
server/makers/creators/create_mimic
server/makers/creators/create_missing_argument_exception
server/makers/creators/create_modifier_args
server/makers/creators/create_param_arg
server/makers/creators/create_param_var
server/makers/creators/create_pipe
server/makers/creators/create_promoted_arg_value
server/makers/creators/create_quer_var
server/makers/creators/create_reflect
server/makers/creators/create_route_args
server/makers/creators/create_routes_variable
server/makers/creators/create_web_socket_handler
server/makers/creators/get_raw_type
server/makers/creators/should_nest_json_in_data
server/makers/part_files/consumers_file_maker
server/makers/part_files/lifecycle_components/exception_content
server/makers/part_files/lifecycle_components/guard_content
server/makers/part_files/lifecycle_components/interceptor_content
server/makers/part_files/lifecycle_components/middleware_content
server/makers/part_files/lifecycle_components/utils/create_component_methods
server/makers/part_files/lifecycle_components/utils/sequential_component_content
server/makers/part_files/lifecycle_components/wrapper_content
server/makers/part_files/lifecycle_components_files_maker
server/makers/part_files/public_file_maker
server/makers/part_files/reflects_file_maker
server/makers/part_files/route_file_maker
server/makers/part_files/routes_file_maker
server/makers/routes_manifest_maker
server/makers/server_file_maker
server/makers/utils/binary_expression_extensions
server/makers/utils/byte_stream_body_param
server/makers/utils/create_switch_pattern
server/makers/utils/create_throw_missing_argument
server/makers/utils/for_in_loop
server/makers/utils/get_params
server/makers/utils/if_statement
server/makers/utils/meta_method_extensions
server/makers/utils/meta_route_extensions
server/makers/utils/try_catch
server/makers/utils/type_extensions
server/makers/utils/wildcard_param
server/models/options
server/revali_server.construct
server/server
server/utils/annotation_argument
server/utils/annotation_arguments
server/utils/create_map
server/utils/dart_object_to_source
server/utils/data_annotation
server/utils/extract_import
server/utils/safe_property
server/utils/substitute_type
services/ansi
services/compose_maker
services/service_discovery
services/service_plan
services/service_session
utils/extensions/directory_extensions
utils/kernel_cache
utils/mixins/directories_mixin
utils/package_config_resolution
utils/ticked_progress
utils/type_def/start_process