From 6949bee6e62f43c4cd2819a468c3980180699c1a Mon Sep 17 00:00:00 2001 From: ilia Date: Wed, 8 Jul 2026 10:58:46 -0400 Subject: [PATCH] Add SEO baseline + rebuild www/ (mobile toc/prefs polish, responsive viewport) SEO: robots.txt, sitemap.xml, canonical, OG/Twitter tags, JSON-LD (ProfessionalService) on / and /folders/, plus a reused screenshot as og-image.png. prepare-www.mjs now copies robots/sitemap/og-image into the build. Also carries pending mobile layout tweaks (toc/prefs bar, viewport-fit=cover) that were already staged in the working tree. --- README.md | 34 ++- public/og-image.png | Bin 0 -> 109704 bytes public/robots.txt | 4 + public/sitemap.xml | 13 ++ scripts/capture-previews.mjs | 2 +- scripts/prepare-www.mjs | 3 + scripts/test-stack-folder.mjs | 162 ++++++++++----- spec/index.html | 45 +++- spec/spec.css | 194 ++++++++++++++++-- stack-folder/folder.css | 47 ++++- stack-folder/index.html | 9 +- vite.config.js | 5 + .../{spec-BY4A7Wkv.js => spec-B2lX7K2V.js} | 0 www/assets/spec-BoGenpAF.css | 1 - www/assets/spec-Cx4F7IDd.css | 1 + ...-oqVQaMMI.css => stackFolder-DTsVZwGE.css} | 2 +- ...er-4cxThntN.js => stackFolder-_Qi-mHWa.js} | 0 www/folders/index.html | 13 +- www/index.html | 49 ++++- www/og-image.png | Bin 0 -> 109704 bytes www/robots.txt | 4 + www/sitemap.xml | 13 ++ 22 files changed, 507 insertions(+), 94 deletions(-) create mode 100644 public/og-image.png create mode 100644 public/robots.txt create mode 100644 public/sitemap.xml rename www/assets/{spec-BY4A7Wkv.js => spec-B2lX7K2V.js} (100%) delete mode 100644 www/assets/spec-BoGenpAF.css create mode 100644 www/assets/spec-Cx4F7IDd.css rename www/assets/{stackFolder-oqVQaMMI.css => stackFolder-DTsVZwGE.css} (93%) rename www/assets/{stackFolder-4cxThntN.js => stackFolder-_Qi-mHWa.js} (100%) create mode 100644 www/og-image.png create mode 100644 www/robots.txt create mode 100644 www/sitemap.xml diff --git a/README.md b/README.md index ddfdae7..713a576 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ Homepage design concepts for Levkin Inc. | **Spec** | `/spec/` | Company story as RFC-style documentation | | **Folder** | `/stack-folder/` | Manila folders L0–L7, sticky tab stack, site previews | -Open `/` to pick a direction. +**Production** (`levkin.ca`): `/` → spec, `/folders/` → stack. Dev picker at `/` only when running `npm run dev` (not deployed). ## Develop @@ -16,7 +16,7 @@ npm install npm run dev ``` -Vite default: `http://localhost:5173` +Dev server: `http://localhost:5175` (5173 is often taken by other apps) | Page | URL | |------|-----| @@ -28,9 +28,22 @@ Vite default: `http://localhost:5173` ```bash npm run build -# dist/ +# dist/ — Vite multi-page output + +npm run build:www +# www/ — production layout for nginx (commit www/ before deploy) ``` +### Deploy (pve10 LXC 220) + +```bash +npm run build:www +git add www/ && git commit -m "Rebuild www" && git push origin main +ssh root@10.0.10.10 'pct exec 220 -- bash -c "cd /var/www/levkin && git pull origin main"' +``` + +Requires DNS: `levkin.ca` and `www.levkin.ca` A → your home IP (same as other `*.levkin.ca` sites). Caddy on VM 106 proxies to `10.0.10.60:80`. + ## Folder stack (`/stack-folder/`) Eight layers with labeled tabs. Scroll pins earlier tabs on a shared rail; L7 joins last. Scroll stops when all tabs align. @@ -52,9 +65,22 @@ Writes PNGs used in `stack-folder/previews/` (spec, auto, caseware, iliadobkin, ```bash npm run dev -STACK_URL=http://localhost:5173/stack-folder/ npm run test:folder +STACK_URL=http://localhost:5175/stack-folder/ npm run test:folder ``` +Playwright runs **desktop** (tab alignment at max scroll) and **mobile** (bottom tab rail, no horizontal overflow, L3 jump). + +### Test on a phone + +Dev server listens on your LAN (`host: true` in Vite config): + +```bash +npm run dev +# open http://:5175/stack-folder/ on the phone (same Wi‑Fi) +``` + +Production: [levkin.ca/folders/](https://levkin.ca/folders/) — on viewports ≤720px the side rail becomes a **bottom tab bar** (L0–L7) with safe-area padding for iOS. + ## Related sites - [auto.levkin.ca](https://auto.levkin.ca) diff --git a/public/og-image.png b/public/og-image.png new file mode 100644 index 0000000000000000000000000000000000000000..245fb1b7e4aa696c0977413b17683cae204aeb76 GIT binary patch literal 109704 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

E5tT9wJBqD@3D7Lfp-468cKd<6bU8cf z1_)qjes8�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%0A7SH@qVawB42Fh=YW}jawMPx0`T;z$wc(>NDp^D3 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 XR~BAl9w|r-zroN{(^0KZwvGHh%4XG2 literal 0 HcmV?d00001 diff --git a/public/robots.txt b/public/robots.txt new file mode 100644 index 0000000..ecab2aa --- /dev/null +++ b/public/robots.txt @@ -0,0 +1,4 @@ +User-agent: * +Allow: / + +Sitemap: https://levkin.ca/sitemap.xml diff --git a/public/sitemap.xml b/public/sitemap.xml new file mode 100644 index 0000000..fbf5821 --- /dev/null +++ b/public/sitemap.xml @@ -0,0 +1,13 @@ + + + + https://levkin.ca/ + monthly + 1.0 + + + https://levkin.ca/folders/ + monthly + 0.8 + + diff --git a/scripts/capture-previews.mjs b/scripts/capture-previews.mjs index ceeefda..c4dcc05 100644 --- a/scripts/capture-previews.mjs +++ b/scripts/capture-previews.mjs @@ -7,7 +7,7 @@ import { fileURLToPath } from 'url'; const root = join(dirname(fileURLToPath(import.meta.url)), '..'); const out = join(root, 'stack-folder/previews'); -const base = process.env.PREVIEW_BASE || 'http://localhost:5177'; +const base = process.env.PREVIEW_BASE || 'http://localhost:5175'; mkdirSync(out, { recursive: true }); diff --git a/scripts/prepare-www.mjs b/scripts/prepare-www.mjs index 8a2796b..4d17c58 100644 --- a/scripts/prepare-www.mjs +++ b/scripts/prepare-www.mjs @@ -37,6 +37,9 @@ await mkdir(join(www, 'folders'), { recursive: true }); await cp(join(dist, 'assets'), join(www, 'assets'), { recursive: true }); await cp(join(root, 'public', 'favicon.svg'), join(www, 'favicon.svg')); +await cp(join(root, 'public', 'robots.txt'), join(www, 'robots.txt')); +await cp(join(root, 'public', 'sitemap.xml'), join(www, 'sitemap.xml')); +await cp(join(root, 'public', 'og-image.png'), join(www, 'og-image.png')); const specHtml = await readFile(join(dist, 'spec', 'index.html'), 'utf8'); await writeFile( diff --git a/scripts/test-stack-folder.mjs b/scripts/test-stack-folder.mjs index 180dc83..e0437ee 100644 --- a/scripts/test-stack-folder.mjs +++ b/scripts/test-stack-folder.mjs @@ -1,64 +1,124 @@ /** - * Tab rail alignment tests for /stack-folder/. - * Run: STACK_URL=http://localhost:5173/stack-folder/ npm run test:folder + * Tab rail alignment tests for /stack-folder/ (desktop + mobile). + * Run: STACK_URL=http://localhost:5175/stack-folder/ npm run test:folder */ -import { chromium } from 'playwright'; +import { chromium, devices } from 'playwright'; -const URL = process.env.STACK_URL || 'http://localhost:5173/stack-folder/'; +const URL = process.env.STACK_URL || 'http://localhost:5175/stack-folder/'; const VERBOSE = process.env.VERBOSE === '1'; -const browser = await chromium.launch(); -const page = await browser.newPage({ viewport: { width: 1400, height: 900 } }); -await page.goto(URL, { waitUntil: 'networkidle' }); +async function runViewport(name, contextOptions) { + const browser = await chromium.launch(); + const page = await browser.newPage(contextOptions); + await page.goto(URL, { waitUntil: 'networkidle' }); -async function tabTops() { - return page.evaluate(() => { - const tabs = [...document.querySelectorAll('.mount .tab')]; - const stick = - parseFloat(getComputedStyle(document.documentElement).getPropertyValue('--stack-stick')) * 16; - return { - scrollY: window.scrollY, - isFolded: document.querySelector('.mount')?.classList.contains('is-folded'), - stick, - tabs: tabs.map((t) => ({ - code: t.querySelector('.tab-code')?.textContent, - top: Math.round(t.getBoundingClientRect().top), - left: Math.round(t.getBoundingClientRect().left), - })), - }; + async function tabTops() { + return page.evaluate(() => { + const tabs = [...document.querySelectorAll('.mount .tab')]; + const stick = + parseFloat(getComputedStyle(document.documentElement).getPropertyValue('--stack-stick')) * 16; + return { + scrollY: window.scrollY, + isFolded: document.querySelector('.mount')?.classList.contains('is-folded'), + stick, + tabs: tabs.map((t) => ({ + code: t.querySelector('.tab-code')?.textContent, + top: Math.round(t.getBoundingClientRect().top), + left: Math.round(t.getBoundingClientRect().left), + })), + }; + }); + } + + if (VERBOSE) console.log(`${name} initial`, await tabTops()); + + await page.evaluate(() => window.scrollTo(0, document.documentElement.scrollHeight)); + await page.waitForTimeout(600); + if (VERBOSE) console.log(`${name} max scroll`, await tabTops()); + + const railVisible = await page.evaluate(() => { + const rail = document.querySelector('.tab-rail'); + if (!rail) return false; + return getComputedStyle(rail).display !== 'none'; }); + + if (name === 'mobile' && !railVisible) { + await browser.close(); + return [`${name}: mobile tab rail not visible`]; + } + + const foldIssues = await page.evaluate(({ isMobile }) => { + const tabs = [...document.querySelectorAll('.mount .tab')]; + const tops = tabs.map((t) => t.getBoundingClientRect().top); + const min = Math.min(...tops); + const max = Math.max(...tops); + const issues = []; + const spreadLimit = isMobile ? 40 : 30; + + if (document.documentElement.scrollWidth > window.innerWidth + 1) { + issues.push('horizontal overflow'); + } + if (max - min > spreadLimit) { + issues.push(`tab row spread ${Math.round(max - min)}px (want ≤${spreadLimit})`); + } + if (!document.querySelector('.mount')?.classList.contains('is-folded')) { + issues.push('mount not folded at max scroll'); + } + return issues; + }, { isMobile: name === 'mobile' }); + + if (foldIssues.length) { + await browser.close(); + return foldIssues.map((issue) => `${name}: ${issue}`); + } + + if (name === 'mobile') { + await page.evaluate(() => window.scrollTo(0, 0)); + await page.waitForTimeout(200); + await page.locator('.tab-rail .rail-tab[data-goto="3"]').tap(); + await page.waitForTimeout(800); + if (VERBOSE) console.log(`${name} rail goto L3`, await tabTops()); + } else { + await page.click('[data-goto="7"]'); + await page.waitForTimeout(800); + if (VERBOSE) console.log(`${name} goto L7`, await tabTops()); + } + + const fail = await page.evaluate(({ isMobile }) => { + const issues = []; + + if (isMobile) { + const rail = document.querySelector('.tab-rail .rail-tab[data-goto="3"]'); + const railBox = rail?.getBoundingClientRect(); + if (!railBox || railBox.height < 40) issues.push('rail tap target too small'); + if (window.scrollY < 100) issues.push('rail L3 tap did not scroll'); + } else { + const tabs = [...document.querySelectorAll('.mount .tab')]; + const tops = tabs.map((t) => t.getBoundingClientRect().top); + const l7 = tabs.find((t) => t.querySelector('.tab-code')?.textContent === 'L7'); + const l0 = tabs.find((t) => t.querySelector('.tab-code')?.textContent === 'L0'); + if (l7 && l0 && Math.abs(l7.getBoundingClientRect().top - l0.getBoundingClientRect().top) > 30) { + issues.push('L7 not aligned with L0'); + } + } + + return issues; + }, { isMobile: name === 'mobile' }); + + await browser.close(); + return fail.map((issue) => `${name}: ${issue}`); } -if (VERBOSE) console.log('initial', await tabTops()); +const desktop = { viewport: { width: 1400, height: 900 } }; +const mobile = { ...devices['iPhone 13'], hasTouch: true }; -await page.evaluate(() => window.scrollTo(0, document.documentElement.scrollHeight)); -await page.waitForTimeout(600); -if (VERBOSE) console.log('max scroll', await tabTops()); +const results = [ + ...(await runViewport('desktop', desktop)), + ...(await runViewport('mobile', mobile)), +]; -await page.click('[data-goto="7"]'); -await page.waitForTimeout(800); -if (VERBOSE) console.log('goto L7', await tabTops()); - -const fail = await page.evaluate(() => { - const tabs = [...document.querySelectorAll('.mount .tab')]; - const tops = tabs.map((t) => t.getBoundingClientRect().top); - const min = Math.min(...tops); - const max = Math.max(...tops); - const l7 = tabs.find((t) => t.querySelector('.tab-code')?.textContent === 'L7'); - const l0 = tabs.find((t) => t.querySelector('.tab-code')?.textContent === 'L0'); - const issues = []; - if (max - min > 30) issues.push(`tab row spread ${Math.round(max - min)}px (want ≤30)`); - if (l7 && l0 && Math.abs(l7.getBoundingClientRect().top - l0.getBoundingClientRect().top) > 30) - issues.push('L7 not aligned with L0'); - if (!document.querySelector('.mount')?.classList.contains('is-folded')) - issues.push('mount not folded at max scroll'); - return issues; -}); - -await browser.close(); - -if (fail.length) { - console.error('FAIL:', fail.join('; ')); +if (results.length) { + console.error('FAIL:', results.join('; ')); process.exit(1); } -console.log('PASS: stack-folder tab rail'); +console.log('PASS: stack-folder (desktop + mobile)'); diff --git a/spec/index.html b/spec/index.html index abe16eb..237be36 100644 --- a/spec/index.html +++ b/spec/index.html @@ -2,10 +2,37 @@ - + Levkin — Company Specification + + + + + + + + + + + + @@ -24,21 +51,24 @@