{% extends "base.html" %} {% block title %}Provider & Deployment{% endblock %} {% block breadcrumb %}Provider & Deployment{% endblock %} {% block extra_head %} {% endblock %} {% block content %} {# ═══════════════════════════════════════════════════════════════════ AQUILIA ADMIN — PROVIDER & DEPLOYMENT DASHBOARD v2 Chart.js · Real-time · Analytics · Full Operations · Security ═══════════════════════════════════════════════════════════════════ #} {# ── Greeting ── #} {% if not provider_authenticated|default(false) %} {# ═══════════════════════════════════════════════════════════════════ PROVIDER LOGIN GATE — User must connect their Render API token ═══════════════════════════════════════════════════════════════════ #}
{% else %} {# ═══════════════════════════════════════════════════════════════════ PROVIDER DASHBOARD — Full dashboard (only shown when authenticated) ═══════════════════════════════════════════════════════════════════ #}

Provider & Deployment {{ provider_name|default('Render') }} {% if available %} {% endif %}

Manage cloud provider, services, deployments, credentials, analytics, and infrastructure from one place.

{# ── User Profile Card ── #} {% if user_profile|default({}) and user_profile.get('id', '—') != '—' %}
{{ (user_profile.get('name', '?')[0])|upper }}
{{ user_profile.get('name', '—') }} {{ user_profile.get('type', 'user') }} {% if user_profile.get('two_factor_enabled') %} 2FA {% endif %}
{% if user_profile.get('email') and user_profile.get('email') != '—' %} {{ user_profile.get('email') }} {% endif %} {{ user_profile.get('id', '—') }} {% if user_profile.get('created_at') and user_profile.get('created_at') != '—' %} {{ user_profile.get('created_at', '—') }} {% endif %}
{% if render_workspaces|default([]) %} Workspaces {% for ws in render_workspaces|default([]) %} {{ ws.get('name', ws.get('id', '—')) }} {% endfor %} {% endif %}
{% endif %} {# ── Infrastructure Overview Bar ── #}
{{ services|default([])|length }}Services
{{ services_live|default(0) }}Live
{{ total_deploys|default(0) }}Deploys
{{ postgres_count|default(0) }}Postgres
{{ kv_count|default(0) }}Key-Value
{{ env_group_count|default(0) }}Env Groups
{{ custom_domain_count|default(0) }}Domains
{{ project_count|default(0) }}Projects
{{ blueprint_count|default(0) }}Blueprints
{{ credential_status|default('N/A')|upper }}Credentials
{{ default_region|default('—') }}Region
{# ── Tabs ── #}
{# ═══════════════════════════════════════════════════════════════════ TAB: Overview (summary + mini charts) ═══════════════════════════════════════════════════════════════════ #}
{# Service Status Doughnut #}

Service Status Distribution

{# Deploy Status Doughnut #}

Deploy Status Breakdown

{# Service Types Bar #}

Service Types

{# Region Distribution #}

Region Distribution

{# Infrastructure Breakdown #}

Infrastructure Resources

{# Env Vars per Service #}

Env Variables per Service

{# Quick summary cards #}
Quick Health Summary
{{ services_live|default(0) }}/{{ services|default([])|length }}
Healthy
Services live
{{ total_deploys|default(0) }}
Total Deploys
All services
{{ postgres_count|default(0) + kv_count|default(0) }}
Data Stores
PG + Redis
{{ credential_cipher|default('—') }}
Cipher
{{ credential_status|default('—')|upper }}
{{ env_group_count|default(0) }}
Env Groups
Shared secrets
{{ default_region|default('—') }}
Region
Primary
{# ═══════════════════════════════════════════════════════════════════ TAB: Services ═══════════════════════════════════════════════════════════════════ #}
{# Bulk operations bar #}
0 service(s) selected
Active Services ({{ services|default([])|length }})
{% if services %}
{% for svc in services %}
{% set svc_type_lower = (svc.type|default('web'))|lower %} {% if 'worker' in svc_type_lower %}{% set svc_type_class = 'worker' %} {% elif 'cron' in svc_type_lower %}{% set svc_type_class = 'cron' %} {% elif 'static' in svc_type_lower %}{% set svc_type_class = 'static' %} {% else %}{% set svc_type_class = 'web' %}{% endif %}
{% if svc_type_class == 'web' %} {% elif svc_type_class == 'worker' %} {% elif svc_type_class == 'cron' %} {% elif svc_type_class == 'static' %} {% else %}{% endif %}
{% set svc_status_lower = (svc.status|default('unknown'))|lower %}
{{ svc.name }}
{{ svc.type|default('web_service') }} {{ svc.status|default('unknown') }}
ID
{{ svc.id|default('—') }}
Region
{{ svc.region|default('—') }}
Plan
{{ svc.plan|default('—') }}
Created
{{ svc.created_at|default('—') }}
{% if svc.url and svc.url != '—' %} {{ svc.url }} {% endif %}
{% if svc_status_lower == 'live' %} {% elif svc_status_lower == 'suspended' %} {% endif %}
{% endfor %}
{% else %}

No services found

Deploy your first service using aq deploy render or configure your provider credentials.

{% endif %}
{# ═══════════════════════════════════════════════════════════════════ TAB: Deploys — FIXED: uses |truncate() instead of [:12] ═══════════════════════════════════════════════════════════════════ #}
Deployment History ({{ total_deploys|default(0) }})
{% if deploys %}

Recent Deployments

Live
{% for d in deploys %} {% endfor %}
Deploy ID Service Status Trigger Commit Created Actions
{{ d.id|default('—')|truncate(16, True, '…') }} {{ d.service_name|default('—') }} {{ d.status|default('unknown') }} {{ d.trigger|default('manual') }} {% set commit_raw = d.commit_id|default('—') %}{{ commit_raw|truncate(12, True, '') }} {{ d.created_at|default('—') }}
{% set d_status_lower = (d.status|default(''))|lower %} {% if d_status_lower in ['build_in_progress','update_in_progress','deploying'] %} {% endif %} {% if d_status_lower == 'live' %} {% endif %}
{% else %}

No deployments yet

Trigger your first deployment from the Actions tab or via the CLI.

{% endif %}
{# ═══════════════════════════════════════════════════════════════════ TAB: Analytics (Chart.js dashboards) ═══════════════════════════════════════════════════════════════════ #}
Infrastructure Analytics

Deploy Success Rate

Resource Allocation

Security Posture

{# Deploy metrics table #}
Deploy Metrics by Service
{% set ns = namespace(seen={}) %} {% for d in deploys|default([]) %} {% if d.service_name not in ns.seen %} {% set _n = d.service_name|default('—') %} {% set _total = deploys|selectattr('service_name','equalto', _n)|list|length %} {% set _live = deploys|selectattr('service_name','equalto', _n)|selectattr('status','equalto','live')|list|length %} {% set _failed = deploys|selectattr('service_name','equalto', _n)|selectattr('status','equalto','failed')|list|length %} {% set _rate = ((_live / _total * 100)|round(1)) if _total > 0 else 0 %} {% if ns.seen.update({_n: True}) %}{% endif %} {% endif %} {% endfor %} {% if not deploys %}{% endif %}
ServiceTotalLiveFailedSuccess Rate
{{ _n }} {{ _total }} {{ _live }} {{ _failed }}
{{ _rate }}%
No deploy data available.
{# ═══════════════════════════════════════════════════════════════════ TAB: Databases ═══════════════════════════════════════════════════════════════════ #}
PostgreSQL Instances ({{ postgres_count|default(0) }})
{% if postgres_instances %}
{% for db in postgres_instances %}
{{ db.name|default('unnamed') }}
PostgreSQL {{ db.version|default('16') }} · {{ db.plan|default('starter') }}
ID
{{ db.id|default('—') }}
Region
{{ db.region|default('—') }}
{% endfor %}
{% else %}

No databases

No PostgreSQL instances found.

{% endif %}
Key-Value (Redis) Instances ({{ kv_count|default(0) }})
{% if kv_instances %}
{% for kv in kv_instances %}
{{ kv.name|default('unnamed') }}
Key-Value · {{ kv.plan|default('starter') }}
ID
{{ kv.id|default('—') }}
Region
{{ kv.region|default('—') }}
{% endfor %}
{% else %}

No key-value stores

No Redis instances found.

{% endif %}
{# ═══════════════════════════════════════════════════════════════════ TAB: Env Vars ═══════════════════════════════════════════════════════════════════ #}
Environment Variables by Service
{% if env_vars_by_service %} {% for svc_name, vars in env_vars_by_service.items() %}

{{ svc_name }}

{{ vars|length }} variables
{% for v in vars %} {% endfor %}
KeyValue
{{ v.key }} {{ '••••••••' if v.value and v.value|length > 0 else '(empty)' }}
{% endfor %} {% else %}

No environment variables

Add env vars through the Render dashboard or deploy config.

{% endif %}
{# ═══════════════════════════════════════════════════════════════════ TAB: Security / Credentials ═══════════════════════════════════════════════════════════════════ #}
Credential Store — Military-Grade Security

Store Status

Status{{ credential_status|default('unconfigured')|upper }}
Crous Version{{ crous_version|default('—') }}
Cipher Suite{{ credential_cipher|default('—') }}
Token Age{{ token_age|default('—') }}
Expired{{ 'Yes' if token_expired else 'No' }}
Owner{{ owner_name|default('—') }}
Default Region{{ default_region|default('—') }}

Security Features

EncryptionAES-256-GCM
Key DerivationPBKDF2 600k iter
IntegrityHMAC-SHA512
Canary ValidationEnabled
Secure WipeEnabled
Audit LoggingEnabled
Key RotationAvailable
Credential Audit Trail
{% if audit_entries %} {% for e in audit_entries[:30] %} {% set action_lower = (e.action|default(''))|lower %} {% endfor %}
TimestampActionDetails
{{ e.ts|default('—') }} {{ e.action|default('—') }} {{ e.details|default('') }}
{% else %}

No audit entries recorded yet.

{% endif %}
{# ═══════════════════════════════════════════════════════════════════ TAB: Logs ═══════════════════════════════════════════════════════════════════ #}
Service Logs

Log Viewer

Select service…
Select service…
{% for svc in services|default([]) %}
{{ svc.name }}
{% endfor %}
All levels
All levels
Error
Warning
Info
Debug
Select a service and click Fetch to view logs…
0 lines
{# ═══════════════════════════════════════════════════════════════════ TAB: Actions ═══════════════════════════════════════════════════════════════════ #}
Quick Actions
{# Deploy #}

Trigger Deploy

Trigger a new deployment for a service.

Select service…
Select service…
{% for svc in services|default([]) %}
{{ svc.name }}
{% endfor %}
{# Preview #}

Preview Environment

Create a preview environment for testing.

Select service…
Select service…
{% for svc in services|default([]) %}
{{ svc.name }}
{% endfor %}
{# Validate #}

Validate Token

Verify the stored API token is valid.

{# Security #}

Security Operations

Manage encryption keys and credential security.

{# ═══════════════════════════════════════════════════════════════════ TAB: Infrastructure — Projects · Domains · Blueprints · Webhooks · Members · Registries ═══════════════════════════════════════════════════════════════════ #}
{# ── Workspace Members ── #} {% if workspace_members|default([]) %}
Workspace Members ({{ workspace_member_count|default(0) }})
{% for m in workspace_members|default([]) %} {% endfor %}
NameEmailRoleJoined
{{ (m.name[0])|upper if m.name and m.name != '—' else '?' }}
{{ m.name }}
{{ m.email }} {{ m.role }} {{ m.joined_at }}
{% endif %} {# ── Custom Domains ── #} {% if custom_domains|default([]) %}
Custom Domains ({{ custom_domain_count|default(0) }})
{% for d in custom_domains|default([]) %} {% endfor %}
DomainServiceStatusCreated
{{ d.name }} {{ d.service_name }} {{ d.verification_status }} {{ d.created_at }}
{% endif %} {# ── Projects ── #} {% if projects|default([]) %}
Projects ({{ project_count|default(0) }})
{% for p in projects|default([]) %}
{{ p.name }}
{{ p.id }}
{{ p.created_at }}
{% endfor %}
{% endif %} {# ── Blueprints ── #} {% if blueprints|default([]) %}
Blueprints ({{ blueprint_count|default(0) }})
{% for b in blueprints|default([]) %} {% endfor %}
NameRepositoryBranchAuto SyncStatus
{{ b.name }} {{ b.repo }} {{ b.branch }} {% if b.auto_sync %} On{% else %}Off{% endif %} {{ b.status }}
{% endif %} {# ── Webhooks ── #} {% if webhooks|default([]) %}
Webhooks ({{ webhook_count|default(0) }})
{% for w in webhooks|default([]) %} {% endfor %}
URLStatusCreated
{{ w.url }} {{ 'enabled' if w.enabled else 'disabled' }} {{ w.created_at }}
{% endif %} {# ── Registry Credentials ── #} {% if registry_credentials|default([]) %}
Registry Credentials ({{ registry_credential_count|default(0) }})
{% for rc in registry_credentials|default([]) %}
{{ rc.name }}
{{ rc.registry }} · {{ rc.username }}
{% endfor %}
{% endif %} {# ── Empty state ── #} {% if not workspace_members|default([]) and not custom_domains|default([]) and not projects|default([]) and not blueprints|default([]) and not webhooks|default([]) and not registry_credentials|default([]) %}

No additional infrastructure resources found.

Projects, custom domains, blueprints, webhooks, and registry credentials will appear here when configured.

{% endif %}
{% endif %} {# ── Toast ── #}
{# ═══════════════════════════════════════════════════════════════════ JAVASCRIPT — Tabs · Actions · Logs · Charts · Bulk · Auto-Refresh ═══════════════════════════════════════════════════════════════════ #} {% endblock %}