Adds the admin backend foundation: AuditLog + Setting models/migration, an admin-only dashboard with KPI cards, and user management (search, ban/suspend/activate, tier override, trust adjust) with audit logging on every write action. Smoke suite extended to 64 checks.
35 lines
1.3 KiB
HTML
35 lines
1.3 KiB
HTML
{% extends "base.html" %}
|
|
{% block title %}{{ _('Admin · Dashboard') }}{% endblock %}
|
|
{% block content %}
|
|
{% include "admin/_nav.html" %}
|
|
<div class="card">
|
|
<h2>{{ _('Dashboard') }}</h2>
|
|
<div class="kpi-grid">
|
|
<div class="card kpi-card">
|
|
<div class="kpi-label">{{ _('Active listings') }}</div>
|
|
<div class="kpi-value">{{ kpis.active_listings }}</div>
|
|
</div>
|
|
<div class="card kpi-card">
|
|
<div class="kpi-label">{{ _('New users (7d)') }}</div>
|
|
<div class="kpi-value">{{ kpis.new_users_7d }}</div>
|
|
</div>
|
|
<div class="card kpi-card">
|
|
<div class="kpi-label">{{ _('New users (30d)') }}</div>
|
|
<div class="kpi-value">{{ kpis.new_users_30d }}</div>
|
|
</div>
|
|
<div class="card kpi-card">
|
|
<div class="kpi-label">{{ _('MRR') }}</div>
|
|
<div class="kpi-value">${{ "%.2f"|format(kpis.mrr_cents / 100) }}</div>
|
|
</div>
|
|
<div class="card kpi-card">
|
|
<div class="kpi-label">{{ _('Revenue (30d): subscriptions + boosts') }}</div>
|
|
<div class="kpi-value">${{ "%.2f"|format(kpis.revenue_30d_cents / 100) }}</div>
|
|
</div>
|
|
<div class="card kpi-card">
|
|
<div class="kpi-label">{{ _('Flag queue depth') }}</div>
|
|
<div class="kpi-value">{{ kpis.flag_queue_depth }}</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% endblock %}
|