rustango 0.14.2

Django-shaped web framework for Rust: ORM, migrations, auto-admin, multi-tenancy, audit log.
Documentation
<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Sign in — {{ tenant_name }}</title>
  <style>
    :root {
      --accent: #2c6fb0;
      --border: #d0d0d0;
      --muted: #666;
    }
    body {
      margin: 0;
      font: 14px/1.45 -apple-system, "Segoe UI", Roboto, sans-serif;
      background: #fdfdfd;
      color: #222;
      display: flex;
      min-height: 100vh;
      align-items: center;
      justify-content: center;
    }
    .card {
      width: 340px;
      padding: 2rem;
      border: 1px solid var(--border);
      border-radius: 8px;
      background: white;
      box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
    }
    .brand {
      display: flex;
      align-items: center;
      gap: 0.5rem;
      margin-bottom: 0.5rem;
    }
    .brand img { width: 28px; height: 28px; object-fit: contain; }
    .brand h1 {
      color: var(--accent);
      font-size: 1.4rem;
      margin: 0;
    }
    p.sub {
      color: var(--muted);
      margin: 0 0 1.5rem 0;
    }
    p.sub strong { color: #222; }
    label {
      display: block;
      font-size: 12px;
      color: var(--muted);
      margin-top: 0.75rem;
      text-transform: uppercase;
      letter-spacing: 0.05em;
    }
    input[type=text], input[type=password] {
      width: 100%;
      padding: 0.5rem 0.6rem;
      border: 1px solid var(--border);
      border-radius: 4px;
      font: inherit;
      margin-top: 0.25rem;
      box-sizing: border-box;
    }
    input:focus { outline: 2px solid var(--accent); outline-offset: 1px; }
    button {
      margin-top: 1.5rem;
      width: 100%;
      padding: 0.6rem;
      background: var(--accent);
      color: white;
      border: 0;
      border-radius: 4px;
      font: inherit;
      font-weight: 600;
      cursor: pointer;
    }
    button:hover { filter: brightness(1.1); }
    .error {
      color: #b04a2c;
      background: #fdecec;
      padding: 0.5rem 0.75rem;
      border-radius: 4px;
      margin: 1rem 0 0 0;
      font-size: 13px;
    }
  </style>
</head>
<body>
  <form class="card" method="post" action="/__login">
    <div class="brand">
      <img src="/__static__/rustango.png" alt="">
      <h1>{{ tenant_name }}</h1>
    </div>
    <p class="sub">Sign in to <strong>{{ tenant_slug }}</strong></p>
    {% if error %}<div class="error">{{ error }}</div>{% endif %}
    <label for="username">Username</label>
    <input type="text" id="username" name="username" autocomplete="username" autofocus required>
    <label for="password">Password</label>
    <input type="password" id="password" name="password" autocomplete="current-password" required>
    <input type="hidden" name="next" value="{{ next }}">
    <button type="submit">Sign in</button>
  </form>
</body>
</html>