Crates.io | roadster |
lib.rs | roadster |
version | 0.6.20 |
source | src |
created_at | 2024-05-05 22:21:52.108885 |
updated_at | 2024-11-17 08:34:37.45865 |
description | A "Batteries Included" web framework for rust designed to get you moving fast. |
homepage | |
repository | https://github.com/roadster-rs/roadster |
max_upload_size | |
id | 1230583 |
size | 732,399 |
A "Batteries Included" web framework for rust designed to get you moving fast 🏎️. Inspired by other fully-featured frameworks such as Rails, Django, Laravel, Loco, and Poem.
http
feature) and gRPC APIs
via Tonic (with the grpc
feature).open-api
feature).App#services
method.#![forbid(unsafe_code)]
to ensure all code in Roadster is 100% safe rust.cli
feature)jwt-ietf
and/or jwt-openid
features). Also provides a general
JWT extractor for Axum that simply puts all claims into a map (available with the jwt
feature)db-sql
feature)sidekiq
feature)email-smtp
feature)
or Sendgrid's Mail Send API (requires the
email-sendgrid
feature)otel
feature).user
(requires the db-sql
feature)updated_at
, when updating DB rows (Postgres only currently) (
requires the db-sql
feature)# Replace `example_dev` with your app name, e.g., `myapp_dev`
docker run -d -p 5432:5432 -e POSTGRES_USER=roadster -e POSTGRES_DB=example_dev -e POSTGRES_PASSWORD=roadster postgres:15.3-alpine
docker run -d -p 6379:6379 redis:7.2-alpine
docker run -d -p 1080:80 -p 1025:25 rnwood/smtp4dev
docker run -d -p 1080:1080 -p 1025:1025 maildev/maildev
# Todo: Add instructions for creating a new app
# Using one of our examples for now
git clone https://github.com/roadster-rs/roadster.git
cd roadster/examples/full
# Either set it as an environment variable
export ROADSTER__ENVIRONMENT=development
# Or add it to a `.env` file
echo ROADSTER__ENVIRONMENT=development >> .env
cargo run
Navigate to http://localhost:3000/api/_docs to explore the app's OpenAPI playground
Currently, Roadster is focused on back-end API development with Rust. We leave it to the consumer to decide how they prefer to add a front-end, e.g., using an established JS/TS framework (React / Next / Vue / Svelte / Solid / etc) or using a Rust front-end framework (Leptos / Yew / Perseus / Sycamore / etc). That said, we do have some examples of how to use Roadster with some these frameworks.
Framework | Example |
---|---|
Leptos | leptos-ssr |
If you're using our SMTP integration to send emails, you can test locally using a mock SMTP server. Some options:
Roadster allows reporting traces and metrics using the tracing
and opentelemetry_rust
integrations. Provide the URL
of your OTLP exporter in order to report the trace/metric data to your telemetry provider (e.g., SigNoz, New Relic,
Datadog, etc).
You can also view traces locally using, for example, Jaeger or SigNoz.
The easiest way to view OpenTelemetry Traces locally is by running Jaeger.
ROADSTER__TRACING__OTLP_ENDPOINT="http://localhost:4317"
in your .env
file, or in
your config/development.toml
or config/test.toml
configs as appropriate.docker run --rm --name jaeger \
-e COLLECTOR_ZIPKIN_HOST_PORT=:9411 \
-p 6831:6831/udp \
-p 6832:6832/udp \
-p 5778:5778 \
-p 16686:16686 \
-p 4317:4317 \
-p 4318:4318 \
-p 14250:14250 \
-p 14268:14268 \
-p 14269:14269 \
-p 9411:9411 \
jaegertracing/all-in-one:1.53
Another option to view traces (and metrics) locally is to run Signoz.
ROADSTER__TRACING__OTLP_ENDPOINT="http://localhost:4317"
in your .env
file, or in
your config/development.toml
or config/test.toml
configs as appropriate.# Clone the repo
git clone -b main https://github.com/SigNoz/signoz.git && cd signoz/deploy/
# Remove the sample application: https://signoz.io/docs/operate/docker-standalone/#remove-the-sample-application-from-signoz-dashboard
vim docker/clickhouse-setup/docker-compose.yaml
# Remove the `services.hotrod` and `services.load-hotrod` sections, then exit `vim`
# Run the `docker compose` command
./install.sh
docker compose -f docker/clickhouse-setup/docker-compose.yaml stop
This crate is a rust implementation of Sidekiq, which is usually used with Ruby on Rails. All we need in order to use this is a Redis instance.
We provide a sample repo to run the sidekiq dashboard locally in a standalone docker container.
git clone https://github.com/roadster-rs/standalone_sidekiq_dashboard.git
cd standalone_sidekiq_dashboard
docker build -t standalone-sidekiq .
# Linux docker commands
# Development
docker run -d --network=host standalone-sidekiq
# Test
docker run -d --network=host -e REDIS_URL='redis://localhost:6380' standalone-sidekiq
# Mac docker commands -- todo: see if there's a command that will work on both mac and linux
# Development
docker run -d -p 9292:9292 -e REDIS_URL=redis://host.docker.internal:6379 standalone-sidekiq
# Test
docker run -d -p 9292:9292 -e REDIS_URL=redis://host.docker.internal:6380 standalone-sidekiq
You can also inspect the Redis DB directly using RedisInsight.
# Linux docker commands
docker run -d --name redisinsight --network=host -p 5540:5540 redis/redisinsight:latest
# Mac docker commands -- todo: see if there's a command that will work on both mac and linux
# Use `host.docker.internal` as the host domain in redis insight (instead of `127.0.0.1`)
docker run -d --name redisinsight -p 5540:5540 redis/redisinsight:latest