Client side atproto account migrator in your web browser, along with services for backups and adversarial migrations. pdsmoover.com
pds atproto migrations moo cow
at main 95 lines 4.1 kB view raw
1{%- import "partials/cow-header.askama.html" as cow -%} 2{% extends "layout.askama.html" %} 3 4{% block meta %} 5 <meta property="og:description" content="PDS MOOver – ATProto tools for PDS migrations and backups"/> 6 <meta property="og:image" content="/halloween_moover.webp"> 7{% endblock %} 8 9{% block content %} 10<script> 11 12 13document.addEventListener('alpine:init', () => { 14 window.Alpine.data('serverStats', () => ({ 15 loading: true, 16 error: null, 17 stats: null, 18 async init() { 19 try { 20 const res = await fetch('/xrpc/com.pdsmoover.backup.describeServer'); 21 if (!res.ok) throw new Error(`Failed to load: ${res.status}`); 22 this.stats = await res.json(); 23 } catch (e) { 24 console.error(e); 25 this.error = 'Failed to load server stats. Please try again later.'; 26 } finally { 27 this.loading = false; 28 } 29 }, 30 //TODO bad but do not want to figure out onload with current setup 31 32 33 })); 34}); 35 36</script> 37 38<div class="container"> 39 {% call cow::cow_header("PDS MOOver") %} 40 41 <section class="section" style="text-align:left"> 42 <p> 43 PDS MOOver is a set of AT Protocol tools to help you 44 <a href="/moover">migrate to a new PDS</a>, 45 <a href="/missing-blobs">find your missing blobs</a>, 46 sign up for free automated <a href="/backups">backups</a>, and <a href="/restore">restore your account</a> 47 in the event you need to. 48 </p> 49 <ul> 50 <li><a href="/moover">Moover</a> – helps you migrate to a new PDS.</li> 51 <li><a href="/missing-blobs">Missing Blobs</a> – find any missing blobs (pictures/videos) from a previous migration.</li> 52 <li><a href="/backups">Backups</a> – sign up for free automated backups stored on PDS MOOver servers and view your account's backup status.</li> 53 <li><a href="/restore">Restore</a> – restore from your backups if needed.</li> 54 <li><a href="/turn-off">Turn Off</a> – helper to make sure your old account is deactivated.</li> 55 <li><a href="/info">Info</a> – FAQs and a few other bits of information about our tools.</li> 56 <li><a href="https://tangled.org/@baileytownsend.dev/pds-moover">Check our source code on tangled</a></li> 57 </ul> 58 </section> 59 60 <section class="section" aria-labelledby="stats-heading" x-data="serverStats()" x-init="init()"> 61 <h2 id="stats-heading">Server stats</h2> 62 <span>Total stats for all accounts backed up on pdsmoover.com</span> 63 <div style="padding-top: 5%" class="stats-grid" x-show="!error"> 64 <div class="stat-card"> 65 <div class="stat-label">Total repositories</div> 66 <div class="stat-value" x-text="stats?.totalRepos.toLocaleString()"></div> 67 </div> 68 <div class="stat-card"> 69 <div class="stat-label">Total blobs</div> 70 <div class="stat-value" x-text="stats?.totalBlobs.toLocaleString()"></div> 71 </div> 72 <div class="stat-card"> 73 <div class="stat-label">Estimated total repo size</div> 74 <div class="stat-value" x-text="fmtBytes(stats?.estimatedReposSizeOnDisk)"></div> 75 </div> 76 <div class="stat-card"> 77 <div class="stat-label">Estimated total blob size</div> 78 <div class="stat-value" x-text="fmtBytes(stats?.estimatedBlobsSizeOnDisk)"></div> 79 </div> 80 <div class="stat-card"> 81 <div class="stat-label">Last backup ran at</div> 82 <div class="stat-value stat-value--small" x-text="fmtDate(stats?.lastBackupAt)"></div> 83 </div> 84 <div class="stat-card"> 85 <div class="stat-label">Server Status last updated</div> 86 <div class="stat-value stat-value--small" x-text="fmtDate(stats?.statusLastUpdated)"></div> 87 </div> 88 </div> 89 <div class="warning-message" x-show="error" x-text="error"></div> 90 </section> 91</div> 92 93 94 95{% endblock %}