Tech Stack

The crates, libraries, and rationale behind each layer of the framework.

LayerCrateRationale
Async runtimetokioDe-facto async runtime; powers axum, sqlx, deadpool, and queue workers
HTTPaxum + tower + tower-httpExtractor-based routing with composable middleware; preferred over actix-web for tokio alignment and simpler ownership
ORM / DBsqlxRuntime-checked queries (no compile-time query! macros); pgvector behind the vector feature; named connections with read/write split
Poolingsqlx pool + deadpool-redisDriver-native pooling; no bb8
MigrationsCustom MigratorVersioned, reversible migrations (run/rollback/fresh/seed)
Validationvalidator + rustasea-validationDerive macros for struct rules; custom crate for ErrorBag + FormRequest
Authjsonwebtoken + argon2 + tower-sessionsJWT guards, password hashing, JSON session store
Auth logrustasea-authlogOne row per login, failed attempt, lockout, and logout; unseen-IP logins notify through rustasea-mail
Activity logrustasea-activitylogOpt-in #[logs_activity] model audit trail with JSON property diff
Serializationserde + serde_jsonPowers config, JSON:API, queue payloads, session store
Configconfig + dotenvyLayered config/*.toml + env overlay with __ separator; TOML only
Localizationrustasea-i18nTOML/JSON dictionaries with dot-namespaced lookup and pluralization
CLIclap (derive) + cargo xtaskcargo artisan subcommands; dialoguer/indicatif for prompts and progress
Proc-macrossyn + quote + proc-macro2#[route], #[middleware], #[validate], #[derive(Model)], #[tries], …
Modulesrustasea-modulesDeterministic ModuleRegistry mounting routes, providers, and migrations
Action patternrustasea-actionOne typed unit of work across HTTP/queue/CLI/events
Queuetokio + deadpool-redis + serde_jsondatabase and redis drivers plus a worker loop; in-house exponential backoff
CacheLock-guarded memory store + deadpool-redisMemoryStore (not moka); real RedisStore behind the redis feature
SchedulingHand-rolled cron + tokio interval5-field cron parser on a 60-second ticker; no cron crate
Templatingaskama (default) + minijinja (opt-in)Build-time compiled templates by default; runtime templates behind a feature
WebSocket / SSEaxum (ws) + SSEaxum/ws enabled by default; no tokio-tungstenite
HTTP clientreqwestLaravel-style throw/try_throw callbacks with typed HttpError
Filesystemobject_store + tokio::fsS3/GCS/Azure abstraction with read-through disks and path confinement
SFTP diskrussh + russh-sftpPure-Rust SFTP behind the opt-in storage-sftp feature
Excel / CSVcsv + calamine + rust_xlsxwriterStreaming import/export with queued jobs (excel feature)
ImageimageFluent transform pipeline with EXIF auto-orient (image feature)
Google authjsonwebtoken + reqwestService-account RS256 assertion exchanged for a cached bearer token (google feature)
Observabilityrustasea-debugbar + rustasea-queue-dashboardRequest profiler and queue metrics, both off by default
Vector / AIpgvector + real HTTP providersPgVectorStore behind a feature; OpenAI, Anthropic, Azure, Groq, xAI, DeepSeek, Mistral, Ollama, OpenRouter
Testingtestcontainers + cargo testIsolated Postgres via PostgresTestDb; Docker-gated integration suite
Lint / Formatrustfmt + clippyEnforced in CI; generated code is rustfmt-clean

Runtime support

  • MSRV: Rust 1.88
  • CI gates: cargo xtask ci, cargo test --workspace, cargo deny check, cargo audit, plus an MSRV job
  • Licence: MIT

Last updated Sep 22, 2026