Skip to content

Commit 7f1efad

Browse files
author
Viktor
committed
lanlink: real app screenshots, OG image, platform detect on downloads, richer JSON-LD
1 parent 21f52e1 commit 7f1efad

12 files changed

Lines changed: 68 additions & 5 deletions

File tree

lanlink/downloads/index.html

Lines changed: 30 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,12 @@
1515
<link href="https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,400;9..144,500&amp;family=Inter:wght@400;500;600&amp;family=JetBrains+Mono:wght@400;500&amp;display=swap" rel="stylesheet">
1616
<link rel="stylesheet" href="/site.css" />
1717
<meta name="theme-color" content="#faf9f5" />
18+
<style>
19+
.dl-detected { outline: 2px solid #cc785c; outline-offset: 2px; }
20+
.dl-your { display: inline-block; margin-left: 10px; padding: 2px 10px; border-radius: 999px;
21+
background: #cc785c; color: #faf9f5; font-size: 0.72rem; font-weight: 600;
22+
letter-spacing: 0.02em; vertical-align: middle; }
23+
</style>
1824
</head>
1925
<body class="page">
2026

@@ -67,7 +73,7 @@ <h2 class="section-label">Choose your device</h2>
6773
<div class="dl-grid">
6874

6975
<!-- ANDROID -->
70-
<div class="dl-card">
76+
<div class="dl-card" data-platform="android">
7177
<div class="dl-head">
7278
<span class="dl-icon"><svg aria-hidden="true"><use href="#i-android"/></svg></span>
7379
<div>
@@ -95,7 +101,7 @@ <h2 class="section-label">Choose your device</h2>
95101
</div>
96102

97103
<!-- WINDOWS -->
98-
<div class="dl-card">
104+
<div class="dl-card" data-platform="windows">
99105
<div class="dl-head">
100106
<span class="dl-icon"><svg aria-hidden="true"><use href="#i-windows"/></svg></span>
101107
<div>
@@ -115,7 +121,7 @@ <h2 class="section-label">Choose your device</h2>
115121
</div>
116122

117123
<!-- LINUX -->
118-
<div class="dl-card">
124+
<div class="dl-card" data-platform="linux">
119125
<div class="dl-head">
120126
<span class="dl-icon"><svg aria-hidden="true"><use href="#i-linux"/></svg></span>
121127
<div>
@@ -142,7 +148,7 @@ <h2 class="section-label">Choose your device</h2>
142148
</div>
143149

144150
<!-- MACOS -->
145-
<div class="dl-card">
151+
<div class="dl-card" data-platform="macos">
146152
<div class="dl-head">
147153
<span class="dl-icon"><svg aria-hidden="true"><use href="#i-apple"/></svg></span>
148154
<div>
@@ -163,7 +169,7 @@ <h2 class="section-label">Choose your device</h2>
163169
</div>
164170

165171
<!-- IOS -->
166-
<div class="dl-card">
172+
<div class="dl-card" data-platform="ios">
167173
<div class="dl-head">
168174
<span class="dl-icon"><svg aria-hidden="true"><use href="#i-apple"/></svg></span>
169175
<div>
@@ -232,5 +238,24 @@ <h2>Built by Tapiwa Makandigona.</h2>
232238
.then(d => { if (d && d.tag_name) document.getElementById('ll-version').textContent = d.tag_name; })
233239
.catch(() => {});
234240
</script>
241+
<script>
242+
(function () {
243+
var ua = navigator.userAgent;
244+
var p = /Android/i.test(ua) ? "android"
245+
: /iPhone|iPad|iPod/i.test(ua) ? "ios"
246+
: /Windows/i.test(ua) ? "windows"
247+
: /Macintosh/i.test(ua) ? "macos"
248+
: /Linux/i.test(ua) ? "linux" : null;
249+
if (!p) return;
250+
var card = document.querySelector('[data-platform="' + p + '"]');
251+
if (!card) return;
252+
card.classList.add("dl-detected");
253+
var tag = document.createElement("span");
254+
tag.className = "dl-your";
255+
tag.textContent = "Your device";
256+
var head = card.querySelector(".dl-head");
257+
if (head) head.appendChild(tag);
258+
})();
259+
</script>
235260
</body>
236261
</html>

lanlink/index.html

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
<meta property="og:title" content="LanLink — send files between your devices" />
99
<meta property="og:description" content="Send files between Android, iOS, Windows and macOS over your own Wi-Fi — no internet, no accounts, no size limits. Two verbs: Send and Receive." />
1010
<meta property="og:url" content="https://tapiwa.me/lanlink/" />
11+
<meta property="og:image" content="https://tapiwa.me/lanlink/og.png" />
12+
<meta name="twitter:card" content="summary_large_image" />
1113
<link rel="canonical" href="https://tapiwa.me/lanlink/" />
1214
<link rel="icon" href="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2032%2032'%3E%3Crect%20width='32'%20height='32'%20rx='8'%20fill='%23cc785c'/%3E%3Cpath%20d='M9%2011h14v3.4h-5.2V25h-3.6V14.4H9z'%20fill='%23faf9f5'/%3E%3C/svg%3E" />
1315
<link rel="preconnect" href="https://fonts.googleapis.com">
@@ -22,13 +24,29 @@
2224
"name": "LanLink",
2325
"url": "https://tapiwa.me/lanlink/",
2426
"applicationCategory": "UtilitiesApplication",
27+
"softwareVersion": "4.3.1",
28+
"screenshot": ["https://tapiwa.me/lanlink/shots/home-live.webp", "https://tapiwa.me/lanlink/shots/receive-qr.webp"],
2529
"operatingSystem": "Android, iOS, Windows, macOS",
2630
"description": "LanLink is a free app for sending files between Android, iOS, Windows and macOS over your local Wi-Fi — no internet, no accounts, no size limits.",
2731
"offers": { "@type": "Offer", "price": "0", "priceCurrency": "USD" },
2832
"downloadUrl": "https://tapiwa.me/lanlink/downloads/",
2933
"author": { "@type": "Person", "name": "Tapiwa Makandigona", "url": "https://tapiwa.me/" }
3034
}
3135
</script>
36+
<style>
37+
.shots-scroll { display: flex; gap: 18px; overflow-x: auto; padding: 6px 2px 18px;
38+
-webkit-overflow-scrolling: touch; scroll-snap-type: x mandatory; }
39+
.shots-scroll figure { flex: 0 0 auto; width: 218px; margin: 0; scroll-snap-align: start; }
40+
.shots-scroll img { width: 100%; height: auto; display: block; border-radius: 18px;
41+
border: 1px solid rgba(20, 16, 12, 0.12); box-shadow: 0 10px 28px rgba(20, 16, 12, 0.10); }
42+
.shots-scroll figcaption { font-size: 0.78rem; color: rgba(20, 16, 12, 0.62);
43+
margin-top: 8px; line-height: 1.35; }
44+
.shot-desktop { margin: 26px 0 0; }
45+
.shot-desktop img { width: 100%; max-width: 720px; height: auto; display: block;
46+
border-radius: 14px; border: 1px solid rgba(20, 16, 12, 0.12);
47+
box-shadow: 0 10px 28px rgba(20, 16, 12, 0.10); }
48+
.shot-desktop figcaption { font-size: 0.78rem; color: rgba(20, 16, 12, 0.62); margin-top: 8px; }
49+
</style>
3250
</head>
3351
<body class="page">
3452

@@ -128,6 +146,26 @@ <h3>New "Ember on Paper" design</h3>
128146
</ul>
129147
</section>
130148

149+
<!-- SCREENSHOTS -->
150+
<section class="section" id="screenshots">
151+
<h2 class="section-label">See it</h2>
152+
<div class="shots-scroll">
153+
<figure><img src="/lanlink/shots/home-live.webp" alt="Home screen with a transfer in flight — Send and Receive, live progress at 41 MB/s" loading="lazy" width="640" height="1385" /><figcaption>Home screen with a transfer in flight</figcaption></figure>
154+
<figure><img src="/lanlink/shots/radar.webp" alt="Device radar finding nearby devices automatically" loading="lazy" width="640" height="1385" /><figcaption>Device radar finding nearby devices automatically</figcaption></figure>
155+
<figure><img src="/lanlink/shots/receive-qr.webp" alt="Receive screen showing an instant one-time QR code" loading="lazy" width="640" height="1385" /><figcaption>Receive screen showing an instant one-time QR code</figcaption></figure>
156+
<figure><img src="/lanlink/shots/picker.webp" alt="File picker with photo and video tabs" loading="lazy" width="640" height="1385" /><figcaption>File picker with photo and video tabs</figcaption></figure>
157+
<figure><img src="/lanlink/shots/history.webp" alt="Transfer history with received files" loading="lazy" width="640" height="1385" /><figcaption>Transfer history with received files</figcaption></figure>
158+
<figure><img src="/lanlink/shots/settings.webp" alt="Settings with device name and short device code" loading="lazy" width="640" height="1385" /><figcaption>Settings with device name and short device code</figcaption></figure>
159+
<figure><img src="/lanlink/shots/home-dark.webp" alt="Home screen in the Ember dark theme" loading="lazy" width="640" height="1385" /><figcaption>Home screen in the Ember dark theme</figcaption></figure>
160+
<figure><img src="/lanlink/shots/first-run.webp" alt="First run — pick a name and go" loading="lazy" width="640" height="1385" /><figcaption>First run</figcaption></figure>
161+
</div>
162+
<figure class="shot-desktop">
163+
<img src="/lanlink/shots/desktop.webp" alt="LanLink running in a desktop window — Send and Receive with a transfer in flight"
164+
loading="lazy" width="640" height="891" />
165+
<figcaption>The same app on desktop — Windows, macOS and Linux.</figcaption>
166+
</figure>
167+
</section>
168+
131169
<!-- HOW IT WORKS -->
132170
<section class="section" id="how">
133171
<h2 class="section-label">How it works</h2>

lanlink/og.png

91 KB
Loading

lanlink/shots/desktop.webp

12.4 KB
Loading

lanlink/shots/first-run.webp

15 KB
Loading

lanlink/shots/history.webp

14.6 KB
Loading

lanlink/shots/home-dark.webp

12.4 KB
Loading

lanlink/shots/home-live.webp

32.3 KB
Loading

lanlink/shots/picker.webp

18.3 KB
Loading

lanlink/shots/radar.webp

20.1 KB
Loading

0 commit comments

Comments
 (0)