rustango 0.24.1

Django-shaped batteries-included web framework for Rust: ORM + migrations + auto-admin + multi-tenancy + audit log + auth (sessions, JWT, OAuth2/OIDC, HMAC) + APIs (ViewSet, OpenAPI auto-derive, JSON:API) + jobs (in-mem + Postgres) + email + media (S3 / R2 / B2 / MinIO + presigned uploads + collections + tags) + production middleware (CSRF, CSP, rate-limiting, compression, idempotency, etc.).
Documentation
{% extends "op_layout.html" %}
{% block title %}Welcome — rustango operator console{% endblock %}
{% block content %}
<style>
  .welcome {
    max-width: 720px;
    margin: 1rem auto;
    text-align: center;
  }
  .welcome img {
    max-width: 480px;
    width: 100%;
    height: auto;
    margin: 1rem 0 2rem;
    border-radius: 8px;
    box-shadow: 0 2px 12px rgba(0, 0, 0, 0.08);
  }
  .welcome p { color: #555; }
  .welcome ul { text-align: left; display: inline-block; line-height: 1.8; }
  .welcome ul code { font-size: 0.95em; }
</style>
<div class="welcome">
  <img src="/__static__/rustango.png" alt="rustango">
  <h1>Welcome, {{ operator_username }}</h1>
  <p>This is the rustango operator console. From here you manage the registry —
  the source of truth for every tenant in your deployment.</p>
  <ul>
    <li>Click <strong>Operators</strong> to browse main-system administrators.</li>
    <li>Click <strong>Organizations</strong> to see every tenant the registry knows about.</li>
    <li>Day-to-day tenant lifecycle (create, drop, list, migrate) lives in the
        <code>manage</code> CLI — see <code>cargo run -- --help</code>.</li>
  </ul>
</div>
{% endblock %}