mirror of
https://github.com/luxfi/cdn.git
synced 2026-10-30 17:00:59 +00:00
The cdn is a directory of files. public/ is the whole of it, and the Next app around it produced that directory copied verbatim plus one page reading "LUX cdn - coming soon" -- output: 'export' made next build an expensive cp -r, and @hanzo/ui, Tailwind, mobx, splinetool and firebaseui were carried to render three lines of text. src/, next.config.js, tsconfig.json, package.json and a 446 KB lockfile go with it. Two other serving paths go too. deploy.yml published the same bytes to GitHub Pages, and docker.yml built ghcr.io/luxfi/cdn onto hanzoai/static so a pod could hold a file. hanzoai/ingress reads s3://hanzo-sites/lux/lux-cdn directly, which is how every other static host in the estate already reaches the edge. site.yml is the lane: checkout, then hanzoai/ci's site action. Nothing is re-checked in it -- bin/site refuses an empty directory, measures the completion manifest against the edge limit before sending a byte, and downloads the root back after the flip, and a copy of those checks here is a copy that drifts. The slug is lux-cdn. `cdn` is on cloud's reserved-label list beside api, admin and gateway, so that no site can be published at cdn.<apex> and shadow real infrastructure; asking for it answers 400. public/index.html is the one page written by hand, and it is not decoration: bin/site downloads the site root after the flip and fails the publish if it does not answer, so the root has to be a file. Its own mark is served by the host it describes. Co-authored-by: Hanzo Dev <[email protected]>
37 lines
1.5 KiB
HTML
37 lines
1.5 KiB
HTML
<!doctype html>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<title>Lux CDN</title>
|
|
<style>
|
|
:root { color-scheme: dark }
|
|
body {
|
|
margin: 0; min-height: 100vh;
|
|
display: grid; place-content: center; justify-items: start;
|
|
gap: 1.25rem; padding: 2rem;
|
|
background: #000; color: #fff;
|
|
font: 15px/1.65 ui-sans-serif, system-ui, -apple-system, "Helvetica Neue", sans-serif;
|
|
}
|
|
img { width: 56px; height: 56px }
|
|
h1 { margin: 0; font-size: 1.5rem; font-weight: 600; letter-spacing: -0.01em }
|
|
p { margin: 0; max-width: 46rem; color: #a1a1a1 }
|
|
pre { margin: 0; color: #d4d4d4; font: 13px/1.9 ui-monospace, SFMono-Regular, Menlo, monospace }
|
|
a { color: inherit }
|
|
</style>
|
|
|
|
<!-- Its own first object: this page's mark is served by the host it describes. -->
|
|
<img src="/exchange/icon-svg/lux.svg" alt="Lux">
|
|
|
|
<h1>Lux CDN</h1>
|
|
|
|
<p>Marks, artwork and media for the Lux estate, cached at the edge. Every file is
|
|
addressed by its path in <a href="https://github.com/luxfi/cdn">luxfi/cdn</a>.</p>
|
|
|
|
<pre>https://cdn.lux.cloud/exchange/icon-svg/leth.svg
|
|
https://cdn.lux.cloud/exchange/icon-png/lux.png
|
|
https://cdn.lux.cloud/bridge/networks/ethereum_mainnet.png</pre>
|
|
|
|
<p><code>cdn.lux.network</code> serves the same files under the older name; shipped
|
|
clients dial it and cannot be repointed, so it stays. New references use
|
|
<code>cdn.lux.cloud</code>. There is no listing and no upload — a path that names
|
|
no file answers 404.</p>
|