rustango 0.34.0

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
<aside class="sidebar">
    {% if brand_logo_url %}<img class="brand-logo" src="{{ brand_logo_url | safe }}" alt="">{% endif %}
    <h2>{{ brand_name | default(value="Rustango Admin") }}</h2>
    {% if brand_tagline %}<p class="subtitle">{{ brand_tagline }}</p>{% endif %}
    <p>
        <a href="{{ admin_prefix }}/"
           class="{% if active_table is undefined or active_table == '' %}active{% endif %}">Home</a>
    </p>
    <p>
        <a href="{{ admin_prefix }}{{ audit_url }}"
           class="{% if active_table == '__audit' %}active{% endif %}">Activity</a>
    </p>
    {% if change_password_url %}
        <p>
            <a href="{{ change_password_url }}">Change password</a>
        </p>
    {% endif %}
    {% if sidebar_groups %}
        {% for group in sidebar_groups %}
            <h3>{{ group.app }}</h3>
            <ul>
                {% for m in group.models %}
                    <li>
                        <a href="{{ admin_prefix }}/{{ m.table }}"
                           {% if m.active %}class="active"{% endif %}>{{ m.name }}</a>
                    </li>
                {% endfor %}
            </ul>
        {% endfor %}
    {% else %}
        <p class="empty">No models registered.</p>
    {% endif %}
</aside>