Skip to content

Plugins

Plugins

Enable with Cargo features on sova. Presets:

bash
cargo add sova --features web   # HTML apps
cargo add sova --features api   # JSON APIs
cargo add sova --features cors,session,db

Open a plugin page from the table. Extra notes for heavier stacks are below.

Catalog

PluginVersionSummaryFeatures
activity0.1.0Audit / activity log (who changed what)activity
auth0.1.1Register/login, verify, reset, 2FA, profile, rolesauth, auth-activity, auth-vld
compress0.1.0gzip / deflate / brotli response compressioncompress
cookies0.1.0Parse Cookie header into request-local Cookiescookies
cors0.1.0Cross-Origin Resource Sharing headerscors
csrf0.1.0Session double-submit CSRF (Laravel-style except/XSRF cookie)csrf
db0.1.1SeaORM pool, migrate CLI, optional seed CLIdb, db-mysql, db-sqlite
env0.1.0Cascade .env loading for Sova apps (dotenvy)env
http0.1.0Outbound HTTP client with SSRF guards and named configshttp-client
i18n0.1.0Locales, catalogs, optional path prefix and cookiei18n, i18n-cookie
mail0.1.0Outbound email via lettre (SMTP / fake / file)mail, mail-markdown, mail-templates
meta0.1.0Document meta, OG/Twitter, JSON-LD, and head injectmeta, meta-i18n, meta-store, meta-templates
notifications0.1.0DB inbox, channels with ACL, optional WS/mailnotifications, notifications-auth, notifications-mail, notifications-templates, notifications-ws
observability0.1.0HTTP metrics, OpenTelemetry, Elasticsearch log shippingobservability, observability-elasticsearch, observability-otel
openapi0.1.0OpenAPI 3.1 document + Scalar UI at mount pathopenapi
passport0.1.0Users + access/refresh JWT + personal access tokenspassport, passport-jwt, passport-oauth, passport-session
quic0.1.0QUIC datagrams BackgroundService helpers for Sovaquic-udp
rate-limit0.1.0Per-key request rate limitingrate-limit
redis0.1.0Shared Redis/Valkey connection for KvStore, tasks, cache, pub/sub, queuesredis
session0.1.0Cookie sessions backed by a SessionStoresession, session-redis, session-sql
shield0.1.0Baseline security response headers (helmet-style)shield
sse0.1.0Server-Sent Events helpers for Sova (channels, Last-Event-ID, keep-alive)sse-feed
static0.1.0Serve files from a directory under a mount pathstatic-files
storage0.1.0Object storage (local / memory / S3 / GCS / Azure)storage, storage-azure, storage-gcs, storage-memory, storage-s3
store0.1.0KvStore trait + memory / file / sql / redis backends for Sovastore, store-crypto, store-file, store-redis, store-sql
tasks0.1.0Job worker, priorities, and optional cron/interval schedulertasks
tasks-store0.1.0TaskStore trait + memory / file / sql / redis backendstasks-file, tasks-redis, tasks-sql, tasks-store
templates0.1.0MiniJinja HTML templates with optional autoreloadtemplates
udp0.1.0UDP BackgroundService helpers for Sovaudp
vld0.1.0Request validation hooks and coverage checkvld, vld-flash, vld-flash-templates, vld-form, vld-i18n, vld-openapi
ws0.1.0WebSocket hub, origin allowlist, max message sizews
cli0.1.0CLI ServerArgs / listen_args for Sova (local dev)

Notes

Auth (Fortify)

Needs db + mail + session. Example:

rust
app.install(Db::from_env().migrations::<sova_auth::AuthMigrator>());
app.install(Mail::from_env());
app.install(SessionLayer::memory());
app.install(
  Fortify::new()
    .features([AuthFeature::Registration, AuthFeature::ResetPasswords])
    .home("/cabinet"),
);
cabinet.use_middleware(Fortify::guard());

auth-activity writes Fortify mutations to the activity log. Full reference: auth.

Passport (JWT / PAT / OAuth)

KindStorageUse
JWT accesssigned, short TTLbrowsers
Refreshauth_refresh_tokensrotate access
PAT (svpat_…)auth_api_tokensmachine / CI

JwtAuth::guard accepts Bearer JWT or PAT. OAuth drivers: GitHub / Google / Apple / Custom ({NAME}_CLIENT_ID / _CLIENT_SECRET). See passport.

Tasks

Same handlers for Dispatch and CLI. After install: tasks list | schedule | run NAME.

Console (info / ask / table) only during tasks run.

toml
[schedule.ping]
every = "15s"

Toml overrides code .cron() / .every(). See examples/misc/tasks and tasks.

Database

URL: DATABASE_URL or [db] url. CLI: migrate / seed (cargo sovax db …). SQL KV/queue backends reuse the same DbPool. See db.