a3f369f437
Introduce the first PLAN.md milestone: replace the hello-world binary with an Axum server that binds to localhost by default, exposes a health endpoint, and serves the static browser UI from the repository's static directory. The router is available through the library crate so integration tests can exercise server behavior without opening a network listener. Add a justfile for routine validation and document the initial project shape, configuration knobs, and reusable test checklist. The rustfmt config now uses only stable options so the new formatting recipe runs without nightly warnings. The upload API and resumable chunk behavior are intentionally left for later milestones; the UI currently handles file selection only. Test Plan: - just check Refs: PLAN.md milestone 1
48 lines
1.5 KiB
HTML
48 lines
1.5 KiB
HTML
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<title>upl</title>
|
|
<link rel="stylesheet" href="/styles.css">
|
|
<script src="/app.js" defer></script>
|
|
</head>
|
|
<body>
|
|
<main class="app-shell">
|
|
<section class="upload-panel" aria-labelledby="app-title">
|
|
<div class="panel-heading">
|
|
<div>
|
|
<h1 id="app-title">upl</h1>
|
|
<p class="subtle">Resumable uploads to this machine.</p>
|
|
</div>
|
|
<span class="status-pill" id="connection-status">Server online</span>
|
|
</div>
|
|
|
|
<label class="file-picker">
|
|
<span>Select file</span>
|
|
<input id="file-input" type="file">
|
|
</label>
|
|
|
|
<div class="file-summary" id="file-summary" hidden>
|
|
<strong id="file-name"></strong>
|
|
<span id="file-size"></span>
|
|
</div>
|
|
|
|
<div class="progress-wrap" aria-label="Upload progress">
|
|
<div class="progress-bar" id="progress-bar"></div>
|
|
</div>
|
|
|
|
<div class="actions">
|
|
<button id="start-button" type="button" disabled>Start</button>
|
|
<button id="pause-button" type="button" disabled>Pause</button>
|
|
<button id="resume-button" type="button" disabled>Resume</button>
|
|
</div>
|
|
|
|
<ol class="event-log" id="event-log" aria-live="polite">
|
|
<li>Choose a file to begin.</li>
|
|
</ol>
|
|
</section>
|
|
</main>
|
|
</body>
|
|
</html>
|