Skip to content

madmax983/autumn

Repository files navigation

Autumn 🍂

CI codecov License: MIT OR Apache-2.0 Rust: 1.86.0+

Spring Boot-style web framework for Rust, built on Axum.

Autumn assembles proven Rust crates into a convention-over-configuration web stack with proc-macro ergonomics, framework defaults, and customization options when you need them. If Spring Boot, Rails, or Laravel feels familiar, Autumn aims for that same "ship the app, not the plumbing" shape in Rust.

Features

  • Route and app macros - #[get], #[post], #[put], #[delete], routes![], #[autumn_web::main]
  • Pre-rendering pages to static HTML - #[static_get] + static_routes![] with autumn build pre-rendering to dist/
  • Application builder - .routes(), .tasks(), .static_routes(), .scoped(), .merge(), and .nest()
  • Configuration and profiles - defaults, autumn.toml, autumn-{profile}.toml, and AUTUMN_* overrides
  • Database ergonomics - async Postgres pool, Db extractor, #[model], #[repository], hooks, and embedded migrations
  • HTML stack - Maud templating, bundled htmx, Tailwind build pipeline, and static asset serving
  • Operations - /health, /actuator/*, structured logging, metrics, and graceful shutdown
  • Background work - #[scheduled] tasks and runtime task visibility at /actuator/tasks
  • Security primitives - session cookies, auth extractor, security headers, CSRF, and #[secured]
  • CLI workflow - autumn new, autumn setup, autumn dev, autumn build, and autumn migrate

Quickstart

# Install the CLI from this workspace
cargo install --path autumn-cli

# Create a new project
autumn new my-app
cd my-app

# Optional: download Tailwind CSS for styled builds
autumn setup

# Development server with file watching
autumn dev

# Or run without watch mode
# cargo run

Visit http://localhost:3000. Autumn also auto-mounts /health, /actuator/health, /actuator/info, and /static/js/htmx.min.js.

If you add #[static_get] routes, autumn build pre-renders them into dist/.

Local-Safe vs Production-Safe

Autumn still distinguishes between "works on your laptop" and "safe to run in a multi-replica deployment":

  • Local-safe defaults: in-memory sessions, pretty logs in dev, process-local #[scheduled] tasks, and single-binary startup.
  • Production-safe defaults: /live, /ready, /startup probes, OTLP telemetry config, Redis-backed sessions, container scaffolding from autumn new, and explicit migration jobs before web replicas roll.

If you are deploying beyond a single process, read the Cloud-Native Guide before treating the defaults as done.

Example

This is the main.rs generated by autumn new:

use autumn_web::prelude::*;

#[get("/")]
async fn index() -> &'static str {
    "Welcome to Autumn!"
}

#[get("/hello/{name}")]
async fn hello_name(name: autumn_web::extract::Path<String>) -> String {
    format!("Hello, {}!", *name)
}

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

Built On

Examples

Example Description
examples/hello Minimal hello-world app with route macros and no database
examples/todo-app Classic full-stack CRUD app with Diesel, Maud, htmx, Tailwind, and JSON endpoints
examples/blog Blog engine with admin UI, validation, and pre-rendering pages to static HTML via #[static_get]
examples/bookmarks Repository macro, generated CRUD API, profiles, scheduled tasks, and actuator endpoints
examples/wiki Mutation hooks, revision history, generated REST API, and slug lifecycle management
examples/reddit-clone Full-featured Reddit clone using Autumn's server-first stack: auth, sessions, CSRF, #[secured], #[model], #[repository], hooks, #[scheduled], #[static_get], #[ws] channels, real autumn-harvest onboarding and post-publication workflows, htmx voting, and profiles

Documentation

Stability

Autumn commits to Semantic Versioning for its public API starting at 1.0.0. See STABILITY.md for the full definition of the stable surface, the MSRV policy, and the migration-guide process for future major releases.

Until 1.0.0, Autumn is in its 0.x series — see the pre-1.0 notes for what that means in practice.

Requirements

  • Rust 1.86.0+ (edition 2024)
  • PostgreSQL for database-backed apps

Autumn can still run without a database if you omit the [database] section.

License

MIT OR Apache-2.0

About

Rust on Rails. Built on Axum.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages