From b0cd21097a95d0620a367e2165e291c744f489a9 Mon Sep 17 00:00:00 2001 From: Jonas Platte Date: Thu, 23 Jan 2025 23:14:35 +0100 Subject: [PATCH 1/2] Clean up ECOSYSTEM.md --- ECOSYSTEM.md | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/ECOSYSTEM.md b/ECOSYSTEM.md index 0eec1df313..a08894c575 100644 --- a/ECOSYSTEM.md +++ b/ECOSYSTEM.md @@ -11,15 +11,15 @@ If your project isn't listed here and you would like it to be, please feel free - [axum-msgpack](https://crates.io/crates/axum-msgpack): MessagePack Extractors for axum. - [axum-sqlx-tx](https://crates.io/crates/axum-sqlx-tx): Request-bound [SQLx](https://github.com/launchbadge/sqlx#readme) transactions with automatic commit/rollback based on response. - [aliri_axum](https://docs.rs/aliri_axum) and [aliri_tower](https://docs.rs/aliri_tower): JWT validation middleware and OAuth2 scopes enforcing extractors. -- [ezsockets](https://github.com/gbaranski/ezsockets): Easy to use WebSocket library that integrates with Axum. -- [axum_session](https://github.com/AscendingCreations/AxumSessions): Database persistent sessions like pythons flask_sessionstore for Axum. -- [axum_session_auth](https://github.com/AscendingCreations/AxumSessionsAuth): Persistent session based user login with rights management for Axum. +- [ezsockets](https://github.com/gbaranski/ezsockets): Easy to use WebSocket library that integrates with axum. +- [axum_session](https://github.com/AscendingCreations/AxumSessions): Database persistent sessions like pythons flask_sessionstore for axum. +- [axum_session_auth](https://github.com/AscendingCreations/AxumSessionsAuth): Persistent session based user login with rights management for axum. - [axum-auth](https://crates.io/crates/axum-auth): High-level http auth extractors for axum. - [axum-keycloak-auth](https://github.com/lpotthast/axum-keycloak-auth): Protect axum routes with a JWT emitted by Keycloak. - [axum-tungstenite](https://github.com/davidpdrsn/axum-tungstenite): WebSocket connections for axum directly using tungstenite - [axum-jrpc](https://github.com/0xdeafbeef/axum-jrpc): Json-rpc extractor for axum - [axum-tracing-opentelemetry](https://crates.io/crates/axum-tracing-opentelemetry): Middlewares and tools to integrate axum + tracing + opentelemetry -- [svelte-axum-project](https://github.com/jbertovic/svelte-axum-project): Template and example for Svelte frontend app with Axum as backend +- [svelte-axum-project](https://github.com/jbertovic/svelte-axum-project): Template and example for Svelte frontend app with axum as backend - [axum-streams](https://github.com/abdolence/axum-streams-rs): Streaming HTTP body with different formats: JSON, CSV, Protobuf. - [axum-template](https://github.com/Altair-Bueno/axum-template): Layers, extractors and template engine wrappers for axum based Web MVC applications - [axum-template](https://github.com/janos-r/axum-template): GraphQL and REST API, SurrealDb, JWT auth, direct error handling, request logs @@ -36,23 +36,23 @@ If your project isn't listed here and you would like it to be, please feel free - [tower-governor](https://crates.io/crates/tower_governor): A Tower service and layer that provides a rate-limiting backend by [governor](https://crates.io/crates/governor) - [axum-restful](https://github.com/gongzhengyang/axum-restful): A restful framework based on axum and sea-orm, inspired by django-rest-framework. - [springtime-web-axum](https://crates.io/crates/springtime-web-axum): A web framework built on Springtime and axum, leveraging dependency injection for easy app development. -- [rust-axum-with-google-oauth](https://github.com/randommm/rust-axum-with-google-oauth): website template for Google OAuth authentication on Axum, using SQLite with SQLx or MongoDB and MiniJinja. +- [rust-axum-with-google-oauth](https://github.com/randommm/rust-axum-with-google-oauth): website template for Google OAuth authentication on axum, using SQLite with SQLx or MongoDB and MiniJinja. - [axum-htmx](https://github.com/robertwayne/axum-htmx): Htmx extractors and request guards for axum. - [axum-prometheus](https://github.com/ptrskay3/axum-prometheus): A middleware library to collect HTTP metrics for axum applications, compatible with all [metrics.rs](https://metrics.rs) exporters. - [axum-valid](https://github.com/gengteng/axum-valid): Extractors for data validation using validator, garde, and validify. - [tower-sessions](https://github.com/maxcountryman/tower-sessions): Sessions as a `tower` and `axum` middleware. -- [shuttle](https://github.com/shuttle-hq/shuttle): Build & ship backends without writing any infrastructure files. Now with Axum support. +- [shuttle](https://github.com/shuttle-hq/shuttle): Build & ship backends without writing any infrastructure files. Now with axum support. - [socketioxide](https://github.com/totodore/socketioxide): An easy to use socket.io server implementation working as a `tower` layer/service. - [axum-serde](https://github.com/gengteng/axum-serde): Provides multiple serde-based extractors / responses, also offers a macro to easily customize serde-based extractors / responses. -- [loco.rs](https://github.com/loco-rs/loco): A full stack Web and API productivity framework similar to Rails, based on Axum. -- [axum-test](https://crates.io/crates/axum-test): High level library for writing Cargo tests that run against Axum. -- [axum-messages](https://github.com/maxcountryman/axum-messages): One-time notification messages for Axum. +- [loco.rs](https://github.com/loco-rs/loco): A full stack Web and API productivity framework similar to Rails, based on axum. +- [axum-test](https://crates.io/crates/axum-test): High level library for writing Cargo tests that run against axum. +- [axum-messages](https://github.com/maxcountryman/axum-messages): One-time notification messages for axum. - [spring-rs](https://github.com/spring-rs/spring-rs): spring-rs is a microservice framework written in rust inspired by java's spring-boot, based on axum - [zino](https://github.com/zino-rs/zino): Zino is a next-generation framework for composable applications which provides full integrations with axum. - [axum-rails-cookie](https://github.com/endoze/axum-rails-cookie): Extract rails session cookies in axum based apps. - [axum-ws-broadcaster](https://github.com/Necoo33/axum-ws-broadcaster): A broadcasting liblary for both [axum-typed-websockets](https://crates.io/crates/axum-typed-websockets) and `axum::extract::ws`. - [axum-negotiate-layer](https://github.com/2ndDerivative/axum-negotiate-layer): Middleware/Layer for Kerberos/NTLM "Negotiate" authentication. -- [axum-kit](https://github.com/4lkaid/axum-kit): Streamline the integration and usage of Axum with SQLx and Redis. +- [axum-kit](https://github.com/4lkaid/axum-kit): Streamline the integration and usage of axum with SQLx and Redis. ## Project showcase @@ -63,12 +63,12 @@ If your project isn't listed here and you would like it to be, please feel free - [notify.run](https://github.com/notify-run/notify-run-rs): HTTP-to-WebPush relay for sending desktop/mobile notifications to yourself, written in Rust. - [turbo.fish](https://turbo.fish/) ([repository](https://github.com/jplatte/turbo.fish)): Find out for yourself 😉 - [Book Management](https://github.com/lz1998/axum-book-management): CRUD system of book-management with ORM and JWT for educational purposes. -- [realworld-axum-sqlx](https://github.com/launchbadge/realworld-axum-sqlx): A Rust implementation of the [Realworld] demo app spec using Axum and [SQLx]. +- [realworld-axum-sqlx](https://github.com/launchbadge/realworld-axum-sqlx): A Rust implementation of the [Realworld] demo app spec using axum and [SQLx]. See https://github.com/davidpdrsn/realworld-axum-sqlx for a fork with up to date dependencies. - [Rustapi](https://github.com/ndelvalle/rustapi): RESTful API template using MongoDB -- [axum-postgres-template](https://github.com/koskeller/axum-postgres-template): Production-ready Axum + PostgreSQL application template -- [RUSTfulapi](https://github.com/robatipoor/rustfulapi): Reusable template for building REST Web Services in Rust. Uses Axum HTTP web framework and SeaORM. -- [Jotsy](https://github.com/ohsayan/jotsy): Self-hosted notes app powered by Skytable, Axum and Tokio +- [axum-postgres-template](https://github.com/koskeller/axum-postgres-template): Production-ready axum + PostgreSQL application template +- [RUSTfulapi](https://github.com/robatipoor/rustfulapi): Reusable template for building REST Web Services in Rust. Uses axum and SeaORM. +- [Jotsy](https://github.com/ohsayan/jotsy): Self-hosted notes app powered by Skytable, axum and Tokio - [Svix](https://www.svix.com) ([repository](https://github.com/svix/svix-webhooks)): Enterprise-ready webhook service - [emojied](https://emojied.net) ([repository](https://github.com/sekunho/emojied)): Shorten URLs to emojis! - [CLOMonitor](https://clomonitor.io) ([repository](https://github.com/cncf/clomonitor)): Checks open source projects repositories to verify they meet certain best practices. @@ -77,12 +77,12 @@ If your project isn't listed here and you would like it to be, please feel free - [sandbox_axum_observability](https://github.com/davidB/sandbox_axum_observability) A Sandbox/showcase project to experiment axum and observability (tracing, opentelemetry, jaeger, grafana tempo,...) - [axum_admin](https://github.com/lingdu1234/axum_admin): An admin panel built with **axum**, Sea-orm and Vue 3. - [rgit](https://git.inept.dev/~doyle/rgit.git/about): A blazingly fast Git repository browser, compatible with- and heavily inspired by cgit. -- [Petclinic](https://github.com/danipardo/petclinic): A port of Spring Framework's Petclinic showcase project to Axum -- [axum-middleware-example](https://github.com/casbin-rs/axum-middleware-example): A authorization application using Axum-web, Casbin and Diesel, with JWT support. +- [Petclinic](https://github.com/danipardo/petclinic): A port of Spring Framework's Petclinic showcase project to axum +- [axum-middleware-example](https://github.com/casbin-rs/axum-middleware-example): A authorization application using axum, Casbin and Diesel, with JWT support. - [circleci-hook](https://github.com/DavidS/circleci-hook): Translate CircleCI WebHooks to OpenTelemetry traces to improve your test insights. Add detail with otel-cli to capture individual commands. Use the TRACEPARENT integration to add details from your tests. -- [lishuuro.org](https://github.com/uros-5/backend-lishuuro): Small chess variant server that uses Rust as backend(Axum framework). +- [lishuuro.org](https://github.com/uros-5/backend-lishuuro): Small chess variant server that uses axum for the backend. - [freedit](https://github.com/freedit-org/freedit): A forum powered by rust. -- [axum-http-auth-example](https://github.com/i0n/axum-http-auth-example): Axum http auth example using postgres and redis. +- [axum-http-auth-example](https://github.com/i0n/axum-http-auth-example): axum http auth example using postgres and redis. - [Deaftone](https://github.com/Deaftone/Deaftone): Lightweight music server. With a clean and simple API - [dropit](https://github.com/scotow/dropit): Temporary file hosting. - [cobrust](https://github.com/scotow/cobrust): Multiplayer web based snake game. @@ -100,16 +100,16 @@ If your project isn't listed here and you would like it to be, please feel free ## Tutorials -- [Rust on Nails](https://rust-on-nails.com/): A full stack architecture for Rust web applications (uses Axum) -- [axum-tutorial] ([website][axum-tutorial-website]): Axum web framework tutorial for beginners. +- [Rust on Nails](https://rust-on-nails.com/): A full stack architecture for Rust web applications +- [axum-tutorial] ([website][axum-tutorial-website]): axum tutorial for beginners - [demo-rust-axum]: Demo of Rust and axum web framework -- [Introduction to axum (talk)]: Talk about axum from the Copenhagen Rust Meetup. -- [Getting Started with Axum]: Axum tutorial, GET, POST endpoints and serving files. +- [Introduction to axum (talk)]: Talk about axum from the Copenhagen Rust Meetup +- [Getting Started with Axum]: axum tutorial, GET, POST endpoints and serving files - [Using Rust, Axum, PostgreSQL, and Tokio to build a Blog] - [Introduction to axum]: YouTube playlist - [Rust Axum Full Course]: YouTube video - [Deploying Axum projects with Shuttle] -- [API Development with Rust](https://rust-api.dev/docs/front-matter/preface/): REST APIs based on Axum +- [API Development with Rust](https://rust-api.dev/docs/front-matter/preface/): REST APIs based on axum [axum-tutorial]: https://github.com/programatik29/axum-tutorial [axum-tutorial-website]: https://programatik29.github.io/axum-tutorial/ @@ -121,4 +121,4 @@ If your project isn't listed here and you would like it to be, please feel free [Rust Axum Full Course]: https://www.youtube.com/watch?v=XZtlD_m59sM [Deploying Axum projects with Shuttle]: https://docs.shuttle.rs/examples/axum -[Building a SaaS with Rust & Next.js](https://joshmo.bearblog.dev/lets-build-a-saas-with-rust/) A tutorial for combining Next.js with Rust via Axum to make a SaaS. +[Building a SaaS with Rust & Next.js](https://joshmo.bearblog.dev/lets-build-a-saas-with-rust/) A tutorial for combining Next.js with Rust via axum to make a SaaS. From 27c9052e70dafa3c851a66580a2e3ce4301b3bbe Mon Sep 17 00:00:00 2001 From: Jonas Platte Date: Thu, 23 Jan 2025 23:16:04 +0100 Subject: [PATCH 2/2] Lowercase axum in a few more places --- CONTRIBUTING.md | 4 ++-- axum-core/LICENSE | 2 +- axum-extra/LICENSE | 2 +- axum-macros/LICENSE | 2 +- axum/LICENSE | 2 +- axum/src/docs/middleware.md | 2 +- axum/src/routing/tests/mod.rs | 4 ++-- 7 files changed, 9 insertions(+), 9 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 39ce75691f..8d3932c2d7 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -196,7 +196,7 @@ however, will stay intact on the Pull Request page. ## Reviewing Pull Requests -**Any Tokio, Hyperium, and Tower, Axum community member is welcome to review any pull request**. +**Any Tokio, Hyperium, and Tower, axum community member is welcome to review any pull request**. All contributors who choose to review and provide feedback on Pull Requests have a responsibility to both the project and the individual making the contribution. @@ -242,7 +242,7 @@ Specific performance optimization techniques, coding styles and conventions change over time. The first impression you give to a new contributor never does. Nits (requests for small changes that are not essential) are fine, but try to -avoid stalling the Pull Request. Most nits can typically be fixed by the Axum +avoid stalling the Pull Request. Most nits can typically be fixed by the axum Collaborator landing the Pull Request but they can also be an opportunity for the contributor to learn a bit more about the project. diff --git a/axum-core/LICENSE b/axum-core/LICENSE index 538d04abb9..52c9f59274 100644 --- a/axum-core/LICENSE +++ b/axum-core/LICENSE @@ -1,4 +1,4 @@ -Copyright 2021 Axum Contributors +Copyright 2021 axum Contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: diff --git a/axum-extra/LICENSE b/axum-extra/LICENSE index 538d04abb9..52c9f59274 100644 --- a/axum-extra/LICENSE +++ b/axum-extra/LICENSE @@ -1,4 +1,4 @@ -Copyright 2021 Axum Contributors +Copyright 2021 axum Contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: diff --git a/axum-macros/LICENSE b/axum-macros/LICENSE index 538d04abb9..52c9f59274 100644 --- a/axum-macros/LICENSE +++ b/axum-macros/LICENSE @@ -1,4 +1,4 @@ -Copyright 2021 Axum Contributors +Copyright 2021 axum Contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: diff --git a/axum/LICENSE b/axum/LICENSE index 11598b4b4d..804e087e8a 100644 --- a/axum/LICENSE +++ b/axum/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2019 Axum Contributors +Copyright (c) 2019 axum Contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated diff --git a/axum/src/docs/middleware.md b/axum/src/docs/middleware.md index bef5a8b592..6edd5dac31 100644 --- a/axum/src/docs/middleware.md +++ b/axum/src/docs/middleware.md @@ -259,7 +259,7 @@ If you choose to implement a custom error type such as `type Error = BoxError` ( ```ignore ServiceBuilder::new() .layer(HandleErrorLayer::new(|_: BoxError| async { - // because Axum uses infallible errors, you must handle your custom error type from your middleware here + // because axum uses infallible errors, you must handle your custom error type from your middleware here StatusCode::BAD_REQUEST })) .layer( diff --git a/axum/src/routing/tests/mod.rs b/axum/src/routing/tests/mod.rs index 8851738667..bcd0e96a58 100644 --- a/axum/src/routing/tests/mod.rs +++ b/axum/src/routing/tests/mod.rs @@ -1080,9 +1080,9 @@ async fn middleware_adding_body() { let app = Router::new() .route("/", get(())) .layer(MapResponseLayer::new(|mut res: Response| -> Response { - // If there is a content-length header, its value will be zero and Axum will avoid + // If there is a content-length header, its value will be zero and axum will avoid // overwriting it. But this means our content-length doesn’t match the length of the - // body, which leads to panics in Hyper. Thus we have to ensure that Axum doesn’t add + // body, which leads to panics in Hyper. Thus we have to ensure that axum doesn’t add // on content-length headers until after middleware has been run. assert!(!res.headers().contains_key("content-length")); *res.body_mut() = "…".into();