summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsalmonik <salmonik@tuta.io>2026-10-29 23:59:13 +0100
committersalmonik <salmonik@tuta.io>2026-10-29 23:59:13 +0100
commit51fe7baf43469a5de9a3f4e313c2fffba3ba53ec (patch)
tree96eaaaafff6352ebfbac50e3de8d5021662be927
parentv3.1.1: make native-tls optional so the client cross-compiles without OpenSSL (diff)
downloadzagan-bet-51fe7baf43469a5de9a3f4e313c2fffba3ba53ec.tar.gz
zagan-bet-51fe7baf43469a5de9a3f4e313c2fffba3ba53ec.zip
add static download page for client and server builds
-rw-r--r--web/index.html213
1 files changed, 213 insertions, 0 deletions
diff --git a/web/index.html b/web/index.html
new file mode 100644
index 0000000..c9ad8d5
--- /dev/null
+++ b/web/index.html
@@ -0,0 +1,213 @@
1<!doctype html>
2<!--
3 zagan.bet download page.
4
5 Pure HTML + CSS: no scripts, no external fonts, no trackers.
6
7 Drop the release builds next to this page under the document root:
8
9 /index.html this file
10 /bin/client/zagan-bet-client-linux-i686
11 /bin/client/zagan-bet-client-linux-x86_64
12 /bin/client/zagan-bet-client-windows-x86_64.exe
13 /bin/server/zagan-bet-server-linux-x86_64
14
15 The links are root-absolute, so serve this directory as the document root.
16-->
17<html lang="en">
18<head>
19<meta charset="utf-8">
20<meta name="viewport" content="width=device-width, initial-scale=1">
21<title>Download · zagan.bet</title>
22<meta name="description" content="Official zagan.bet client and server downloads.">
23<link rel="icon" href="data:,">
24<style>
25 :root {
26 --bg: #0b0e11;
27 --panel: #11171d;
28 --line: #222c35;
29 --text: #dde6ec;
30 --muted: #8b9aa6;
31 --accent: #5fd0e0;
32 --win: #6ee7a0;
33 --radius: 10px;
34 }
35
36 * { box-sizing: border-box; }
37
38 body {
39 margin: 0;
40 background: var(--bg);
41 color: var(--text);
42 font: 16px/1.55 system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
43 }
44
45 code, pre, .mono {
46 font-family: ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, monospace;
47 }
48
49 .wrap {
50 max-width: 880px;
51 margin: 0 auto;
52 padding: 3rem 1.25rem 4rem;
53 }
54
55 header { margin-bottom: 2.5rem; }
56
57 h1 {
58 margin: 0 0 .35rem;
59 font: 700 2rem/1.1 ui-monospace, "SF Mono", Menlo, Consolas, monospace;
60 letter-spacing: -.02em;
61 }
62
63 h1 span { color: var(--accent); }
64
65 .tagline { margin: 0; color: var(--muted); }
66
67 section { margin-top: 2.5rem; }
68
69 h2 {
70 margin: 0 0 .9rem;
71 font-size: .8rem;
72 font-weight: 600;
73 letter-spacing: .12em;
74 text-transform: uppercase;
75 color: var(--muted);
76 border-bottom: 1px solid var(--line);
77 padding-bottom: .6rem;
78 }
79
80 .hint { margin: -.3rem 0 1rem; color: var(--muted); font-size: .9rem; }
81
82 .grid {
83 list-style: none;
84 margin: 0;
85 padding: 0;
86 display: grid;
87 grid-template-columns: repeat(auto-fill, minmax(230px, 1fr));
88 gap: .9rem;
89 }
90
91 .card {
92 background: var(--panel);
93 border: 1px solid var(--line);
94 border-radius: var(--radius);
95 padding: 1rem;
96 display: flex;
97 flex-direction: column;
98 gap: .35rem;
99 }
100
101 .card h3 { margin: 0; font-size: 1rem; }
102
103 .card .arch { margin: 0; color: var(--muted); font-size: .85rem; }
104
105 .card .btn { margin-top: .7rem; }
106
107 .btn {
108 display: block;
109 text-align: center;
110 text-decoration: none;
111 padding: .55rem .8rem;
112 border-radius: 7px;
113 background: var(--accent);
114 color: #06222a;
115 font-weight: 600;
116 font-size: .92rem;
117 }
118
119 .btn:hover { background: #86e2ee; }
120
121 .btn:focus-visible {
122 outline: 2px solid var(--win);
123 outline-offset: 2px;
124 }
125
126 pre {
127 margin: 0 0 1rem;
128 padding: .85rem 1rem;
129 overflow-x: auto;
130 background: var(--panel);
131 border: 1px solid var(--line);
132 border-radius: var(--radius);
133 font-size: .88rem;
134 line-height: 1.6;
135 }
136
137 pre .c { color: var(--muted); }
138
139 footer {
140 margin-top: 3rem;
141 padding-top: 1.5rem;
142 border-top: 1px solid var(--line);
143 color: var(--muted);
144 font-size: .88rem;
145 }
146
147 footer p { margin: .6rem 0 0; }
148
149 a { color: var(--accent); }
150</style>
151</head>
152<body>
153<div class="wrap">
154
155 <header>
156 <h1>zagan<span>.bet</span></h1>
157 <p class="tagline">Terminal betting. Slots, roulette, blackjack and crash.</p>
158 </header>
159
160 <main>
161 <section>
162 <h2>Client</h2>
163 <p class="hint">Needs a terminal of at least 80×24 cells.</p>
164 <ul class="grid">
165 <li class="card">
166 <h3>Linux</h3>
167 <p class="arch">x86_64 · 64-bit</p>
168 <a class="btn" href="/bin/client/zagan-bet-client-linux-x86_64" download>Download</a>
169 </li>
170 <li class="card">
171 <h3>Linux</h3>
172 <p class="arch">i686 · 32-bit</p>
173 <a class="btn" href="/bin/client/zagan-bet-client-linux-i686" download>Download</a>
174 </li>
175 <li class="card">
176 <h3>Windows</h3>
177 <p class="arch">x86_64 · 64-bit</p>
178 <a class="btn" href="/bin/client/zagan-bet-client-windows-x86_64.exe" download>Download</a>
179 </li>
180 </ul>
181 </section>
182
183 <section>
184 <h2>Server</h2>
185 <p class="hint">One build, Linux x86_64. Generates its own TLS identity on first run.</p>
186 <ul class="grid">
187 <li class="card">
188 <h3>Linux</h3>
189 <p class="arch">x86_64 · 64-bit</p>
190 <a class="btn" href="/bin/server/zagan-bet-server-linux-x86_64" download>Download</a>
191 </li>
192 </ul>
193 </section>
194 </main>
195
196 <footer>
197 <h2>Running it</h2>
198 <pre><code><span class="c"># client</span>
199chmod +x zagan-bet-client-linux-x86_64
200./zagan-bet-client-linux-x86_64</code></pre>
201
202 <pre><code><span class="c"># server: first run creates identity.p12, key.pem and cert.pem</span>
203chmod +x zagan-bet-server-linux-x86_64
204./zagan-bet-server-linux-x86_64 --init
205./zagan-bet-server-linux-x86_64 -i 0.0.0.0 -p 11525</code></pre>
206
207 <p>Windows: run the <code>.exe</code> from Windows Terminal or another real terminal.</p>
208 <p>Verify a download before running it: <code>sha256sum &lt;file&gt;</code> (Linux) or <code>Get-FileHash &lt;file&gt;</code> (Windows).</p>
209 </footer>
210
211</div>
212</body>
213</html>