{% extends 'layouts/app.twig' %} {% block content %}

Admin Dashboard

Manage your media sources and synchronization

Source Management

Configure and sync your media sources

{% for source in sources %}
{{ source.display_name }}
{% if source.is_active %} Active {% else %} Inactive {% endif %}
{% if source.name == 'jellyfin' %}
{% else %}
{% endif %} {% if source.last_sync_at %}
Last sync: {{ source.last_sync_at|date('M j, Y H:i') }}
{% else %}
Never synced
{% endif %}
Preparing sync...
{% endfor %}

Recent Sync Activity

Latest synchronization logs and status

{% for sync in recent_syncs %} {% endfor %}
Source Type Status Progress Started Duration
{{ sync.source_name }} {{ sync.sync_type|title }} {% if sync.status == 'completed' %} Completed {% elseif sync.status == 'failed' %} Failed {% elseif sync.status == 'running' %} Running {% else %} {{ sync.status|title }} {% endif %} {% if sync.total_items > 0 %} {{ sync.processed_items }} / {{ sync.total_items }} {% else %} - {% endif %} {% if sync.started_at %} {{ sync.started_at|date('M j, H:i') }} {% else %} - {% endif %} {% if sync.started_at and sync.completed_at %} {% set duration = sync.completed_at|date('U') - sync.started_at|date('U') %} {% if duration < 60 %} {{ duration }}s {% elseif duration < 3600 %} {{ (duration / 60)|round }}m {% else %} {{ (duration / 3600)|round }}h {% endif %} {% else %} - {% endif %}
{% endblock %}