Skip to main content

Crate autumn_web

Crate autumn_web 

Source
Expand description

§Autumn

An opinionated, convention-over-configuration web framework for Rust.

Autumn assembles proven Rust crates (Axum, Maud, Diesel, htmx, Tailwind) into a Spring Boot-style developer experience with proc-macro-driven conventions and customization options at every level.

§Quick start

use autumn_web::prelude::*;

#[get("/")]
async fn index() -> Markup {
    html! { h1 { "Hello, Autumn!" } }
}

#[autumn_web::main]
async fn main() {
    autumn_web::app()
        .routes(routes![index])
        .run()
        .await;
}

§Architecture overview

LayerCratePurpose
HTTP serverAxumRouting, extractors, middleware
HTML templatesMaudType-safe, compiled HTML via html! macro
DatabaseDieselAsync Postgres via diesel-async + deadpool
Client interactivityhtmxEmbedded JS served from same-origin /static/js/ routes
StylingTailwind CSSDownloaded + managed by autumn-cli

§Modules

  • app – Application builder for configuring and launching the server.
  • config – Layered configuration: defaults, autumn.toml, env overrides.
  • db – Database connection pool and the Db request extractor.
  • error – Framework error type (AutumnError) and result alias.
  • extract – Re-exported Axum extractors (Form, Json, Path, Query, and optional multipart support).
  • health – Compatibility alias for readiness plus legacy health helpers.
  • middleware – Built-in middleware (request IDs).
  • pagination – Standardized page/size extractor and response wrapper.
  • prelude – Glob import for the most common types.

§Zero-config defaults

An Autumn app runs out of the box with no configuration file. Every setting has a sensible default (port 3000, info log level, etc.). Override via autumn.toml or AUTUMN_* environment variables. See config::AutumnConfig for the full list.

Re-exports§

pub use channels::Broadcast;
pub use channels::BroadcastError;
pub use channels::BroadcastPayload;
pub use channels::ChannelBackendConfigError;
pub use channels::ChannelMessage;
pub use channels::ChannelPublishError;
pub use channels::ChannelStats;
pub use channels::Channels;
pub use channels::ChannelsBackend;
pub use channels::LocalChannelsBackend;
pub use plugin::Plugin;
pub use plugin::Plugins;
pub use repository::RepositoryError;
pub use version_history::ColumnChange;
pub use version_history::VersionEntry;
pub use version_history::VersionFilter;
pub use version_history::VersionOp;
pub use version_history::VersionPage;
pub use version_history::VersionedRecord;
pub use version_history::compute_delete_changes;
pub use version_history::compute_diff;
pub use version_history::compute_insert_changes;
pub use hooks::DraftField;
pub use hooks::FieldDiff;
pub use hooks::MutationContext;
pub use hooks::MutationHooks;
pub use hooks::MutationOp;
pub use hooks::NoHooks;
pub use hooks::Patch;
pub use hooks::UpdateDraft;
pub use http_client as http;
pub use paths::PathExt;
pub use form::Changeset;
pub use form::ChangesetForm;
pub use form::IntoChangeset;
pub use app::app;
pub use app::ApiVersion;
pub use app::RegisteredApiVersions;
pub use db::Db;
pub use error::AutumnError;
pub use error::AutumnResult;
pub use pagination::Page;
pub use pagination::PageRequest;
pub use pagination::CursorPage;
pub use pagination::CursorRequest;
pub use validation::Valid;
pub use validation::Validated;
pub use mail::Mail;
pub use mail::MailConfig;
pub use mail::MailDeliveryQueue;
pub use mail::MailDeliveryQueueHandle;
pub use mail::MailError;
pub use mail::MailTransport;
pub use mail::Mailer;
pub use mail::SmtpConfig;
pub use mail::TlsMode;
pub use mail::Transport;
pub use validation::ValidateExt;
pub use auth::ApiToken;
pub use auth::RequireApiToken;
pub use auth::DbApiTokenStore;
pub use auth::API_TOKEN_MIGRATIONS;
pub use crate::extract::Json;
pub use crate::extract::Path;
pub use crate::extract::Form;
pub use crate::extract::Query;
pub use crate::extract::ClientAddr;
pub use crate::extract::ClientHost;
pub use crate::extract::ClientScheme;

Modules§

actuator
Actuator endpoints for operational observability.
app
Application builder – the entry point for configuring and running an Autumn server.
assets
Fingerprinted asset pipeline for cache-busted static file delivery.
audit
Structured audit logging with pluggable sinks.
auth
Authentication utilities for Autumn applications.
authorization
Policy-based record-level authorization.
cache
Caching infrastructure for the Autumn framework.
canary
Canary deploy primitives: deploy-version labelling and rollback signalling.
channels
Named broadcast channel registry for real-time messaging.
circuit_breaker
config
Framework configuration with sensible defaults and profile-based layering.
credentials
Encrypted credentials store for production secrets.
data
Data import/export utilities.
db
Database connection pool and extractor.
encryption
At-rest attribute encryption for #[repository]/#[model] columns.
error
Framework error type and result alias.
error_pages
Styled error pages and dev-mode error badge overlay.
etag
ETag-based conditional GET helpers for HTML and JSON handlers.
experiments
A/B experiments with deterministic bucketing and exposure telemetry.
extract
Re-exports of Axum extractors for use in Autumn handlers.
feature_flags
First-class feature flags with per-actor rollouts and kill switches.
flash
Flash messages for Autumn applications.
form
Changeset-style form helpers with validation and Maud rendering.
gdpr
GDPR/CCPA data-export and account-erasure registry.
health
Compatibility health endpoint.
hooks
Mutation hook types for repository lifecycle callbacks.
http_client
Traced outbound HTTP client with retries and test mocks.
i18n
Locale-aware text resolution (opt-in via the i18n feature flag).
idempotency
inspector
Dev-mode request inspector with N+1 query detection.
interceptor
job
On-demand background job infrastructure.
log
mail
Transactional email support.
maintenance
Maintenance mode state and file-flag coordinator.
markdown
First-class Markdown rendering with frontmatter parsing and SSG integration.
mcp
Project typed JSON endpoints as Model Context Protocol (MCP) tools so AI agents can call the real, authenticated handler pipeline.
middleware
Built-in middleware for Autumn applications.
migrate
Database migration support.
openapi
OpenAPI (Swagger) specification auto-generation.
pagination
Standardized pagination primitives.
paths
Typed path helpers and the PathExt fluent query-string builder.
plugin
Plugin trait for composable Autumn integrations.
plugin_conformance
Plugin conformance checks for Autumn plugin authors.
prelude
Convenience re-exports for Autumn applications.
probe
Liveness, readiness, and startup probes.
reexports
Re-exports of upstream crates used in macro-generated code.
reporting
Pluggable error reporting: catch handler panics and route panics + 5xx responses to configured ErrorReporters.
repository
Repository support types for framework-generated CRUD operations.
route_listing
Route listing types and collection logic for autumn routes.
runtime_config
Runtime configuration store for live-tunable typed values.
scheduler
Scheduled-task coordination backends.
security
Spring Security-style protection for Autumn applications.
seed
Seed context for populating databases with representative data.
seo
First-class SEO toolkit: sitemap.xml, robots.txt, and meta tag helpers.
session
Cookie-based session management for Autumn applications.
sse
Server-Sent Events (SSE) support for Autumn applications.
static_gen
Static site generation support. Static Site Generation (SSG) and Incremental Static Regeneration (ISR).
step_up
Step-up authentication (“sudo mode”) for sensitive operations.
storage
Pluggable file storage backends for Autumn applications.
system_info
System information plugin.
task
Scheduled task infrastructure.
telemetry
Telemetry runtime planning and subscriber initialization.
tenancy
test
First-party integration-testing utilities for Autumn applications.
time
Deterministic, injectable wall-clock time.
ui
Shared UI primitives for framework-owned HTML surfaces.
user_agent
Lightweight User-Agent parsing for login-session device attribution.
validation
Validation support via the validator crate.
version_history
Automatic record version history for #[repository] writes.
webhook
Signed webhook intake for third-party callbacks.
webhook_outbound
Outbound signed webhook delivery with retries, DLQ, and subscription management.
widgets
Active search and autocomplete form primitives with htmx integration.
wizard
First-class multi-step form wizards with session-backed state and per-step validation.
ws
WebSocket support for Autumn applications.

Macros§

add_blob_column
Build the (up, down) SQL pair to add or drop a Blob column on an existing Postgres table.
html
Type-safe HTML templating macro.
jobs
Collect #[job] handlers into a Vec<JobInfo>. Collect #[job] handlers into a Vec<JobInfo>.
mail_previews
Collect mailer preview registrations into an AppBuilder. Collect #[mailer_preview] impl blocks into runtime preview registrations.
one_off_tasks
Collect #[task] handlers into a Vec<task::OneOffTaskInfo>. Collect #[task] handlers into a Vec<OneOffTaskInfo>.
paths
Emit a pub mod paths { … } re-exporting typed path helpers.
routes
Collect route-annotated handlers into a Vec<Route>.
static_params
Convenience macro for building a StaticParams map.
static_routes
Collect #[static_get] handlers into a Vec<StaticRouteMeta>. Collect #[static_get] handlers into a Vec<StaticRouteMeta>.
t
Translation lookup macro with compile-time key validation.
tasks
Collect #[scheduled] task handlers into a Vec<TaskInfo>. Collect #[scheduled] task handlers into a Vec<TaskInfo>.

Structs§

AppState
Shared application state passed to all route handlers.
PreEscaped
Wrap a pre-escaped string so Maud renders it verbatim.
Redirect
HTTP redirect response.
RepositoryApiMeta
Metadata attached to routes emitted by the #[repository(api = ...)] macro.
Route
A single route binding an HTTP method + path to an Axum handler.
RouteVersionMetadata
Metadata carrying API version, sunset opt-out, and security configuration for a route.
State
State extractor. Re-exported from Axum. Extractor for state.

Enums§

RouteIdempotency
Declares how the app-level idempotency layer should replay cached responses for this route.

Constants§

AUTUMN_WIDGETS_JS_PATH
htmx version string embedded in the binary.
HTMX_CSRF_JS_PATH
htmx version string embedded in the binary.
HTMX_JS_PATH
htmx version string embedded in the binary.
HTMX_VERSION
htmx version string embedded in the binary.

Type Aliases§

Markup
Rendered HTML fragment produced by the html! macro.

Attribute Macros§

api_doc
Enrich a route handler’s auto-generated OpenAPI documentation.
authorize
Enforce a record-level Policy before a handler runs. Coexists with secured: #[secured] answers “are you in?”, #[authorize] answers “are you allowed to act on this record?”
cached
Cache the return value of a function based on its arguments.
delete
Annotate an async function as a DELETE route handler.
feature_flag
Gate a route handler on a named feature flag. If the flag is disabled for the current actor the handler responds with 404 Not Found (default) or delegates to a custom fallback specified with fallback = my_fn.
get
Annotate an async function as a GET route handler.
job
Declare an on-demand background job. See job module. Declare an on-demand background job.
mailer
Generate ergonomic send_* and deliver_later_* helpers for mailer impls. Generate send_* and deliver_later_* helpers for a mailer impl block.
mailer_preview
Register zero-argument mail template previews for the dev mail UI. Register zero-argument mail preview methods for the dev mail preview UI.
main
Set up the Tokio async runtime for an Autumn application.
model
Derive Diesel and Serde traits for a database model struct.
oauth2_callback
Annotate an OAuth2/OIDC callback handler.
patch
Annotate an async function as a PATCH route handler.
post
Annotate an async function as a POST route handler.
put
Annotate an async function as a PUT route handler.
repository
Derive a repository with CRUD operations and derived queries.
scheduled
Declare a scheduled background task. See task module. Declare a scheduled background task.
secured
Secure a route handler with authentication and optional role checks.
service
Define a service for cross-model orchestration and non-DB side effects.
static_get
Annotate an async function as a statically pre-rendered GET route.
step_up
Require fresh (“step-up”) authentication before a route handler runs.
task
Declare a one-off operational task. See task::OneOffTaskInfo. Declare a one-off operational task runnable with autumn task <name>.
ws
Annotate an async function as a WebSocket route handler.