clone of github.com/decent-newsroom/newsroom
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

126 lines
4.5 KiB

{% extends 'layout.html.twig' %}
{% block title %}Relay Administration{% endblock %}
{% block body %}
<twig:Atoms:PageHeading
heading="Relay"
tagline="local Nostr relay"
/>
<div class="w-container">
{# Status Overview #}
<div class="status-grid">
{# Container Status #}
<div class="status-card">
<h2>Container Status</h2>
<div class="stat-row">
<span class="stat-label">strfry Relay</span>
<span class="stat-value">
{% if container_status.strfry.status == 'running' %}
<span class="status-indicator healthy"></span> Running
{% else %}
<span class="status-indicator error"></span> {{ container_status.strfry.status|default('Not Running') }}
{% endif %}
</span>
</div>
<div class="stat-row">
<span class="stat-label">Port 7777</span>
<span class="stat-value">
{% if connectivity.port_accessible %}
<span class="status-indicator healthy"></span> Accessible
{% else %}
<span class="status-indicator error"></span> Not Accessible
{% endif %}
</span>
</div>
</div>
{# Database Statistics #}
<div class="status-card">
<h2>Database Statistics</h2>
{% if stats.error is defined %}
<div class="alert alert-error">{{ stats.error }}</div>
{% elseif stats.relay_accessible %}
<div class="stat-row">
<span class="stat-label">Relay Status</span>
<span class="stat-value"><span class="status-indicator healthy"></span> Accessible & Running</span>
</div>
<div class="stat-row">
<span class="stat-label">Total Events</span>
<span class="stat-value">{{ stats.total_events }}</span>
</div>
<div class="stat-row">
<span class="stat-label">Database Size</span>
<span class="stat-value">{{ stats.database_size }}</span>
</div>
{% if stats.total_events == 0 %}
<div class="alert alert-warning" style="margin-top: 1rem;">
No events found. Run prime to populate the relay.
</div>
{% endif %}
{% else %}
<div class="alert alert-error">
Relay not accessible
</div>
{% endif %}
</div>
{# Configuration #}
<div class="status-card">
<h2>Configuration</h2>
<div class="stat-row">
<span class="stat-label">Relay URL</span>
<span class="stat-value">{{ config.relay_url }}</span>
</div>
<div class="stat-row">
<span class="stat-label">External Access</span>
<span class="stat-value">{{ config.relay_external }}</span>
</div>
<div class="stat-row">
<span class="stat-label">Sync Window</span>
<span class="stat-value">{{ config.days_articles }} days (articles)</span>
</div>
<div class="stat-row">
<span class="stat-label">Thread Window</span>
<span class="stat-value">{{ config.days_threads }} days (threads)</span>
</div>
</div>
</div>
{# Recent Events #}
{% if recent_events|length > 0 %}
<div class="events-section">
<div class="status-card">
<h2>Recent Events (Last 5)</h2>
{% for event in recent_events %}
<div class="event-card">
<div class="event-header">
<span>
<span class="event-kind">Kind {{ event.kind }}</span>
ID: {{ event.id[:16] }}...
</span>
<span>{{ event.created_at|date('Y-m-d H:i') }}</span>
</div>
{% if event.content %}
<div class="event-content">
{{ event.content[:200] }}{% if event.content|length > 200 %}...{% endif %}
</div>
{% endif %}
</div>
{% endfor %}
</div>
</div>
{% endif %}
</div>
{% endblock %}