SPB Git

spb/drive Public

SPB Drive — self-hosted personal cloud drive (files, previews, sharing) on the MacLustr cluster.

JavaScript 82.7% CSS 10.6% Nunjucks 3.6% Shell 1.8% SQL 1.3%
2.6 KB · 53 lines jinja
Raw Blame History
1{#2  ─────────────────────────────────────────────3   SPB Drive — Personal Cloud Drive4  ─────────────────────────────────────────────5   Author  : Simon-Pierre Boucher6   Contact : contact@spboucher.ai7   File    : src/web/views/request.njk8   Purpose : Public file-request page — anyone can drop files for Simon-Pierre9   License : MIT © Simon-Pierre Boucher10  ─────────────────────────────────────────────11#}12{% extends "base.njk" %}13{% block title %}Send files · SPB Drive{% endblock %}14{% block og %}15  <meta property="og:site_name" content="SPB Drive">16  <meta property="og:title" content="Send files to Simon-Pierre Boucher">17  <meta property="og:type" content="website">18  <meta property="og:url" content="{{ publicUrl }}/r/{{ token }}">19  <meta property="og:description" content="Drop your files here — they go straight to Simon-Pierre's drive.">20  <meta name="twitter:card" content="summary">21{% endblock %}22{% block body %}23<div class="share-page"24     data-token="{{ token }}"25     data-max-files="{{ maxFiles or '' }}"26     data-received="{{ received }}">27  <header class="share-topbar">28    <div class="brand"><div class="mark">SPB</div><span>SPB Drive</span></div>29  </header>30  <main class="share-main request-main">31    <div class="request-card">32      <h1>Send files to Simon-Pierre Boucher</h1>33      {% if label %}<p class="request-label">“{{ label }}”</p>{% endif %}34      <p class="request-sub">35        Files land directly in Simon-Pierre's private drive. Nobody else can see them.36        {% if maxFiles %}<br>Up to {{ maxFiles }} file(s) accepted on this link.{% endif %}37      </p>38      <div class="request-drop" id="requestDrop" tabindex="0" role="button" aria-label="Choose files">39        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6"><path d="M12 16V4m0 0 5 5m-5-5-5 5"/><path d="M4 17v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2"/></svg>40        <div><strong>Drop files here</strong> or click to browse</div>41      </div>42      <div class="upload-list" id="requestList"></div>43      <input type="file" id="requestPick" multiple hidden>44    </div>45  </main>46  <footer class="share-footer">47    SPB Drive · <a href="mailto:contact@spboucher.ai">contact@spboucher.ai</a>48  </footer>49</div>50<div class="toasts" id="toasts"></div>51<script type="module" src="/assets/js/request-page.js"></script>52{% endblock %}53