From 25a4e82288ffd8a0d6f5f4b0aaf84eb7e2650f03 Mon Sep 17 00:00:00 2001 From: Spencer Ferris <3319370+spencewenski@users.noreply.github.com> Date: Sat, 19 Oct 2024 23:57:44 -0700 Subject: [PATCH] docs: Add styles for a couple tables --- book/src/adding-a-ui/index.md | 8 ++- book/src/comparisons/loco.md | 126 +++++++++++++++++++--------------- 2 files changed, 76 insertions(+), 58 deletions(-) diff --git a/book/src/adding-a-ui/index.md b/book/src/adding-a-ui/index.md index 1cd35d2..99d3d57 100644 --- a/book/src/adding-a-ui/index.md +++ b/book/src/adding-a-ui/index.md @@ -11,5 +11,11 @@ framework ([Leptos](https://github.com/leptos-rs/leptos) / [Yew](https://github. ## Examples | Framework | Example | -|-------------------------------------------|-------------------------------------------------------------------------------------| +|:------------------------------------------|:------------------------------------------------------------------------------------| | [Leptos](https://crates.io/crates/leptos) | [leptos-ssr](https://github.com/roadster-rs/roadster/tree/main/examples/leptos-ssr) | + + diff --git a/book/src/comparisons/loco.md b/book/src/comparisons/loco.md index 00ab2b9..d81a690 100644 --- a/book/src/comparisons/loco.md +++ b/book/src/comparisons/loco.md @@ -14,60 +14,72 @@ missing features are not planned but we'd be open to adding if there was enough *Last updated in Oct 2024.* -| Feature | Roadster | Loco | -|:------------------------------------------------------------------------------------------------------------------------------|:-----------|:--------------------------------------| -| Separate `cargo` CLI to help with generating code and other tasks | ❌ | ✅ | -| Custom CLI commands | ✅ | ✅ | -| HTTP APIs via Axum | ✅ | ✅ | -|  ↳ Default "ping" and "health" HTTP routes | ✅ | ✅ | -|   ↳ Default routes can be disabled via config | ✅ | ❌ | -|  ↳ Default middleware configured with sensible defaults | ✅ | ✅ | -|   ↳ Middleware configurations can be customized via config files | ✅ | ✅ | -|   ↳ Middleware execution order can be customized via config files | ✅ | ❌ | -| OpenAPI support | ✅ | ✅ | -|  ↳ built-in via [Aide](https://crates.io/crates/aide) | ✅ | ❌ | -|  ↳ 3rd party integration, e.g. [Utoipa](https://crates.io/crates/utoipa) | ✅ | ✅ | -|  ↳ OpenAPI docs explorer http route provided by default | ✅ | ❌ | -| GRPC API with [tonic](https://crates.io/crates/tonic) | ✅ | ❌ | -| Channels (websockets and/or http long-polling) | ❌ | ✅ | -| Support for running arbitrary long-running services | ✅ | ❌ | -| Health checks | ✅ | ✅ | -|  ↳ Run in "health" API route | ✅ | ✅ | -|  ↳ Run via CLI | ✅ | ❌ | -|  ↳ Run on app startup | ✅ | ❌ | -|  ↳ Consumer can provide custom checks | ✅ | ❌ | -| Health checks run in "health" route and on app startup | ✅ | ❌ | -| Custom app context / Axum state using Axum's [FromRef](https://docs.rs/axum-core/latest/axum_core/extract/trait.FromRef.html) | ✅ | ❌ | -| SQL DB via SeaORM | ✅ | ✅ | -|  ↳ Migrations for common DB schemas | ✅ (in lib) | ✅ (in starters) | -| Sample JWT Axum extractor | ✅ | ✅ | -|  ↳ Multiple JWT standards supported | ✅ | ❌ | -| Email | ✅ | ✅ | -|  ↳ via SMTP | ✅ | ✅ | -|  ↳ via [Sendgrid's Mail Send API](https://www.twilio.com/docs/sendgrid/api-reference/mail-send/mail-send) | ✅ | ❌ | -| Storage abstraction | ❌* | ✅ | -| Cache abstraction | ❌* | ✅ | -| Background jobs | ✅ | ✅ | -|  ↳ via Sidekiq | ✅ | ✅ | -|  ↳ via Postgres | ❌ | ✅ | -|  ↳ via in-process threading with Tokio | ❌ | ✅ | -| Periodic jobs | ✅ | ✅ | -|  ↳ via Sidekiq | ✅ | ✅ | -|  ↳ via custom scheduler | ❌ | ✅ | -| Configuration via config files | ✅ | ✅ | -|  ↳ Toml | ✅ | ❌ | -|  ↳ Yaml | ✅ | ✅ | -| Config files can be split into multiple files | ✅ | ❌ | -| Config values can be overridden via env vars | ✅ | ✅ | -| Tracing via the [tracing](https://crates.io/crates/tracing) crate | ✅ | ✅ | -|  ↳ Trace/metric exporting via OpenTelemetry | ✅ | ❌ | -| [insta](https://crates.io/crates/insta) snapshot utilities | ✅ | ✅ | -| Data seeding and cleanup for tests | ❌* | ✅ (⚠️ makes tests non-parallelizable) | -| Allows following any design pattern | ✅ | ❌ (MVC only) | -| Lifecycle hooks | ✅ | ✅ | -|  ↳ Customizable shutdown signal | ✅ | ❌ | -| HTML rendering | ✅ | ✅ | -|  ↳ Built-in | ❌ | ✅ | -|  ↳ via 3rd party integration, e.g. [Leptos](https://crates.io/crates/leptos) | ✅ | ❌ | -| Deployment config generation | ❌ | ✅ | -| Starter templates | ❌* | ✅ | +| Feature | Roadster | Loco | +|:------------------------------------------------------------------------------------------------------------------------------|:---------------|:------------------------------------------| +| Separate `cargo` CLI to help with generating code and other tasks | ❌ | ✅ | +| Custom CLI commands | ✅ | ✅ | +| HTTP APIs via Axum | ✅ | ✅ | +|  ↳ Default "ping" and "health" HTTP routes | ✅ | ✅ | +|   ↳ Default routes can be disabled via config | ✅ | ❌ | +|  ↳ Default middleware configured with sensible defaults | ✅ | ✅ | +|   ↳ Middleware configurations can be customized via config files | ✅ | ✅ | +|   ↳ Middleware execution order can be customized via config files | ✅ | ❌ | +| OpenAPI support | ✅ | ✅ | +|  ↳ built-in via [Aide](https://crates.io/crates/aide) | ✅ | ❌ | +|  ↳ 3rd party integration, e.g. [Utoipa](https://crates.io/crates/utoipa) | ✅ | ✅ | +|  ↳ OpenAPI docs explorer http route provided by default | ✅ | ❌ | +| GRPC API with [tonic](https://crates.io/crates/tonic) | ✅ | ❌ | +| Channels (websockets and/or http long-polling) | ❌ | ✅ | +| Support for running arbitrary long-running services | ✅ | ❌ | +| Health checks | ✅ | ✅ | +|  ↳ Run in "health" API route | ✅ | ✅ | +|  ↳ Run via CLI | ✅ | ❌ | +|  ↳ Run on app startup | ✅ | ❌ | +|  ↳ Consumer can provide custom checks | ✅ | ❌ | +| Health checks run in "health" route and on app startup | ✅ | ❌ | +| Custom app context / Axum state using Axum's [FromRef](https://docs.rs/axum-core/latest/axum_core/extract/trait.FromRef.html) | ✅ | ❌ | +| SQL DB via SeaORM | ✅ | ✅ | +|  ↳ Migrations for common DB schemas | ✅
(in lib) | ✅
(in starters) | +| Sample JWT Axum extractor | ✅ | ✅ | +|  ↳ Multiple JWT standards supported | ✅ | ❌ | +| Email | ✅ | ✅ | +|  ↳ via SMTP | ✅ | ✅ | +|  ↳ via [Sendgrid's Mail Send API](https://www.twilio.com/docs/sendgrid/api-reference/mail-send/mail-send) | ✅ | ❌ | +| Storage abstraction | ❌* | ✅ | +| Cache abstraction | ❌* | ✅ | +| Background jobs | ✅ | ✅ | +|  ↳ via Sidekiq | ✅ | ✅ | +|  ↳ via Postgres | ❌ | ✅ | +|  ↳ via in-process threading with Tokio | ❌ | ✅ | +| Periodic jobs | ✅ | ✅ | +|  ↳ via Sidekiq | ✅ | ✅ | +|  ↳ via custom scheduler | ❌ | ✅ | +| Configuration via config files | ✅ | ✅ | +|  ↳ Toml | ✅ | ❌ | +|  ↳ Yaml | ✅ | ✅ | +| Config files can be split into multiple files | ✅ | ❌ | +| Config values can be overridden via env vars | ✅ | ✅ | +| Tracing via the [tracing](https://crates.io/crates/tracing) crate | ✅ | ✅ | +|  ↳ Built-in support for trace/metric exporting via OpenTelemetry | ✅ | ❌ | +| [insta](https://crates.io/crates/insta) snapshot utilities | ✅ | ✅ | +| Data seeding and cleanup for tests | ❌* | ✅
(⚠️ makes tests non-parallelizable) | +| Allows following any design pattern | ✅ | ❌
(MVC only) | +| Lifecycle hooks | ✅ | ✅ | +|  ↳ Customizable shutdown signal | ✅ | ❌ | +| HTML rendering | ✅ | ✅ | +|  ↳ Built-in | ❌ | ✅ | +|  ↳ via 3rd party integration, e.g. [Leptos](https://crates.io/crates/leptos) | ✅ | ❌ | +| Deployment config generation | ❌ | ✅ | +| Starter templates | ❌* | ✅ | + + \ No newline at end of file