From 164ba69010579add3cd5f35a062dbc711c187c4f Mon Sep 17 00:00:00 2001 From: mifi Date: Mon, 9 Mar 2026 17:12:03 -0300 Subject: [PATCH] Now with legal policies and services pages --- logos/avatar-playground-2.af | Bin 0 -> 23350 bytes logos/avatar-playground.af | Bin 0 -> 22552 bytes logos/exports/mifi-avatar.png | Bin 0 -> 14451 bytes logos/exports/nifi-avatar-reverse.png | Bin 0 -> 8549 bytes package.json | 4 +- scripts/410-paths.mjs | 12 + scripts/copy-410-paths.mjs | 11 +- scripts/generate-sitemap.mjs | 99 ++++ src/app.css | 9 + src/lib/components/FAQ.svelte | 51 ++ src/lib/components/Footer.svelte | 24 +- src/lib/components/Hero.svelte | 93 ++-- src/lib/components/HowWeWork.svelte | 14 - src/lib/components/Navigation.svelte | 78 +-- src/lib/components/ScheduleSection.svelte | 89 +++- src/lib/components/TOC.svelte | 58 +++ src/lib/components/WhatWeDo.svelte | 14 - src/lib/components/WhoGrid.svelte | 54 ++ .../{ => home}/EngagementsSection.svelte | 2 +- .../{ => home}/ExperienceSection.svelte | 2 +- src/lib/components/home/Hero.svelte | 99 ++++ src/lib/components/home/HowWeWork.svelte | 14 + .../{ => home}/ImpactSection.svelte | 2 +- .../components/home/ServicesOverview.svelte | 110 +++++ src/lib/components/home/WhatWeDo.svelte | 22 + src/lib/data/content.ts | 26 - .../faq.ts | 42 ++ .../faq.ts | 47 ++ src/lib/data/home-meta.ts | 9 - src/lib/data/home/content.ts | 27 + src/lib/data/{ => home}/engagements.ts | 0 src/lib/data/{ => home}/experience.ts | 0 src/lib/data/home/home-meta.ts | 9 + src/lib/data/{ => home}/json-ld.ts | 28 +- src/lib/data/home/navigation.ts | 22 + .../data/mvp-architecture-and-launch/faq.ts | 47 ++ src/lib/data/privacy-policy.ts | 194 ++++++++ .../data/stage-aligned-infrastructure/faq.ts | 42 ++ src/lib/data/terms-of-service.ts | 99 ++++ src/lib/types/faq.ts | 6 + src/routes/+layout.svelte | 4 +- src/routes/+page.svelte | 27 +- src/routes/+page.ts | 2 +- src/routes/privacy-policy/+page.svelte | 165 +++++++ src/routes/privacy-policy/+page.ts | 28 ++ src/routes/services/+page.svelte | 307 ++++++++++++ src/routes/services/+page.ts | 35 ++ .../+page.svelte | 186 +++++++ .../+page.ts | 51 ++ .../+page.svelte | 462 ++++++++++++++++++ .../+page.ts | 51 ++ .../mvp-architecture-and-launch/+page.svelte | 396 +++++++++++++++ .../mvp-architecture-and-launch/+page.ts | 51 ++ .../stage-aligned-infrastructure/+page.svelte | 394 +++++++++++++++ .../stage-aligned-infrastructure/+page.ts | 51 ++ src/routes/terms-of-service/+page.svelte | 133 +++++ src/routes/terms-of-service/+page.ts | 28 ++ static/sitemap.xml | 9 - svelte.config.js | 4 + tests/visual.spec.ts | 18 + .../home-chromium-linux.png | Bin 591189 -> 594621 bytes .../privacy-policy-chromium-linux.png | Bin 0 -> 557414 bytes .../terms-of-service-chromium-linux.png | Bin 0 -> 355243 bytes 63 files changed, 3659 insertions(+), 202 deletions(-) create mode 100644 logos/avatar-playground-2.af create mode 100644 logos/avatar-playground.af create mode 100644 logos/exports/mifi-avatar.png create mode 100644 logos/exports/nifi-avatar-reverse.png create mode 100644 scripts/410-paths.mjs create mode 100644 scripts/generate-sitemap.mjs create mode 100644 src/lib/components/FAQ.svelte delete mode 100644 src/lib/components/HowWeWork.svelte create mode 100644 src/lib/components/TOC.svelte delete mode 100644 src/lib/components/WhatWeDo.svelte create mode 100644 src/lib/components/WhoGrid.svelte rename src/lib/components/{ => home}/EngagementsSection.svelte (96%) rename src/lib/components/{ => home}/ExperienceSection.svelte (99%) create mode 100644 src/lib/components/home/Hero.svelte create mode 100644 src/lib/components/home/HowWeWork.svelte rename src/lib/components/{ => home}/ImpactSection.svelte (86%) create mode 100644 src/lib/components/home/ServicesOverview.svelte create mode 100644 src/lib/components/home/WhatWeDo.svelte delete mode 100644 src/lib/data/content.ts create mode 100644 src/lib/data/fractional-cto-for-early-stage-saas/faq.ts create mode 100644 src/lib/data/hands-on-saas-architecture-consultant/faq.ts delete mode 100644 src/lib/data/home-meta.ts create mode 100644 src/lib/data/home/content.ts rename src/lib/data/{ => home}/engagements.ts (100%) rename src/lib/data/{ => home}/experience.ts (100%) create mode 100644 src/lib/data/home/home-meta.ts rename src/lib/data/{ => home}/json-ld.ts (79%) create mode 100644 src/lib/data/home/navigation.ts create mode 100644 src/lib/data/mvp-architecture-and-launch/faq.ts create mode 100644 src/lib/data/privacy-policy.ts create mode 100644 src/lib/data/stage-aligned-infrastructure/faq.ts create mode 100644 src/lib/data/terms-of-service.ts create mode 100644 src/lib/types/faq.ts create mode 100644 src/routes/privacy-policy/+page.svelte create mode 100644 src/routes/privacy-policy/+page.ts create mode 100644 src/routes/services/+page.svelte create mode 100644 src/routes/services/+page.ts create mode 100644 src/routes/services/fractional-cto-for-early-stage-saas/+page.svelte create mode 100644 src/routes/services/fractional-cto-for-early-stage-saas/+page.ts create mode 100644 src/routes/services/hands-on-saas-architecture-consultant/+page.svelte create mode 100644 src/routes/services/hands-on-saas-architecture-consultant/+page.ts create mode 100644 src/routes/services/mvp-architecture-and-launch/+page.svelte create mode 100644 src/routes/services/mvp-architecture-and-launch/+page.ts create mode 100644 src/routes/services/stage-aligned-infrastructure/+page.svelte create mode 100644 src/routes/services/stage-aligned-infrastructure/+page.ts create mode 100644 src/routes/terms-of-service/+page.svelte create mode 100644 src/routes/terms-of-service/+page.ts delete mode 100644 static/sitemap.xml create mode 100644 tests/visual.spec.ts-snapshots/privacy-policy-chromium-linux.png create mode 100644 tests/visual.spec.ts-snapshots/terms-of-service-chromium-linux.png diff --git a/logos/avatar-playground-2.af b/logos/avatar-playground-2.af new file mode 100644 index 0000000000000000000000000000000000000000..236df22fd828e818e823c3bb5f82e2c261026c58 GIT binary patch literal 23350 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 Ikz2R^3y`B`bN~PV literal 0 HcmV?d00001 diff --git a/logos/avatar-playground.af b/logos/avatar-playground.af new file mode 100644 index 0000000000000000000000000000000000000000..cbb2cdf68fadb8f033f5343345383cc3604a749c GIT binary patch literal 22552 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 t96&^u literal 0 HcmV?d00001 diff --git a/logos/exports/mifi-avatar.png b/logos/exports/mifi-avatar.png new file mode 100644 index 0000000000000000000000000000000000000000..5c69bdada5f6544d8f6aa658eb31a344aebd6588 GIT binary patch literal 14451 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 VBd*yU{Qnh1s%YORy>1clzW`5}%YFa= literal 0 HcmV?d00001 diff --git a/logos/exports/nifi-avatar-reverse.png b/logos/exports/nifi-avatar-reverse.png new file mode 100644 index 0000000000000000000000000000000000000000..53cbcabe954293ce33a53964b4437a765c978fd3 GIT binary patch literal 8549 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 WwG;k)zio%uGWekFfx_=R&-@<}%>!rv literal 0 HcmV?d00001 diff --git a/package.json b/package.json index 50955e2..e1244fc 100644 --- a/package.json +++ b/package.json @@ -3,11 +3,11 @@ "version": "2.0.0", "private": true, "repository": "https://git.mifi.dev/mifi-ventures/landing.git", - "packageManager": "pnpm@10.30.0+sha512.2b5753de015d480eeb88f5b5b61e0051f05b4301808a82ec8b840c9d2adf7748eb352c83f5c1593ca703ff1017295bc3fdd3119abb9686efc96b9fcb18200937", + "packageManager": "pnpm@10.31.0+sha512.e3927388bfaa8078ceb79b748ffc1e8274e84d75163e67bc22e06c0d3aed43dd153151cbf11d7f8301ff4acb98c68bdc5cadf6989532801ffafe3b3e4a63c268", "description": "mifi Ventures landing site — SvelteKit static build with critical CSS inlining", "type": "module", "scripts": { - "build": "vite build && node scripts/critters.mjs && node scripts/minify-static-js.mjs && node scripts/copy-410-paths.mjs", + "build": "vite build && node scripts/critters.mjs && node scripts/generate-sitemap.mjs && node scripts/minify-static-js.mjs && node scripts/copy-410-paths.mjs", "dev": "vite dev", "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", diff --git a/scripts/410-paths.mjs b/scripts/410-paths.mjs new file mode 100644 index 0000000..77fde06 --- /dev/null +++ b/scripts/410-paths.mjs @@ -0,0 +1,12 @@ +/** + * URL paths that return 410 Gone. Shared by copy-410-paths.mjs and generate-sitemap.mjs. + * Keep in sync with nginx.conf location blocks. + */ +export const PATHS = [ + '2024/02/18/hello-world', + 'pt', + 'feed', + 'category/uncategorized/feed', + 'category/uncategorized', + 'comments/feed', +]; diff --git a/scripts/copy-410-paths.mjs b/scripts/copy-410-paths.mjs index c9daf95..288c3ec 100644 --- a/scripts/copy-410-paths.mjs +++ b/scripts/copy-410-paths.mjs @@ -9,19 +9,12 @@ import fs from 'fs'; import path from 'path'; import { fileURLToPath } from 'url'; +import { PATHS } from './410-paths.mjs'; + const __dirname = path.dirname(fileURLToPath(import.meta.url)); const DIST = path.join(__dirname, '..', 'dist'); const SOURCE = path.join(DIST, '410.html'); -const PATHS = [ - '2024/02/18/hello-world', - 'pt', - 'feed', - 'category/uncategorized/feed', - 'category/uncategorized', - 'comments/feed', -]; - function main() { if (!fs.existsSync(SOURCE)) { console.error('dist/410.html not found. Run build first.'); diff --git a/scripts/generate-sitemap.mjs b/scripts/generate-sitemap.mjs new file mode 100644 index 0000000..55a84ab --- /dev/null +++ b/scripts/generate-sitemap.mjs @@ -0,0 +1,99 @@ +#!/usr/bin/env node +/** + * Post-build: generate sitemap.xml from prerendered pages in dist/. + * Scans for index.html (root and under each path), excludes 410 paths. + * Run after vite build and critters, before copy-410-paths so 410 dirs don't exist yet. + */ + +import fs from 'fs'; +import path from 'path'; +import { fileURLToPath } from 'url'; + +import { PATHS as PATHS_410 } from './410-paths.mjs'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const DIST = path.join(__dirname, '..', 'dist'); + +/** Must match src/lib/seo.ts SEO_DEFAULTS.baseUrl */ +const BASE_URL = 'https://mifi.ventures'; + +const EXCLUDE_FILES = new Set(['404.html', '410.html']); +const excludeSet = new Set(PATHS_410); + +/** + * adapter-static emits path.html or path/index.html. Walk dist and collect + * every .html that represents a page (exclude 404/410 and 410-gone paths). + */ +function findPages(dir, basePath = '') { + const entries = fs.readdirSync(dir, { withFileTypes: true }); + const pages = []; + + for (const e of entries) { + const rel = basePath ? `${basePath}/${e.name}` : e.name; + + if (e.isDirectory()) { + const indexPath = path.join(dir, e.name, 'index.html'); + if (fs.existsSync(indexPath)) { + if (!excludeSet.has(rel)) { + pages.push({ path: rel, indexPath }); + } + } else { + pages.push(...findPages(path.join(dir, e.name), rel)); + } + } else if (e.name.endsWith('.html') && !EXCLUDE_FILES.has(e.name)) { + const urlPath = e.name === 'index.html' + ? basePath + : (basePath ? `${basePath}/${e.name.slice(0, -5)}` : e.name.slice(0, -5)); + if (!excludeSet.has(urlPath)) { + pages.push({ path: urlPath, indexPath: path.join(dir, e.name) }); + } + } + } + + return pages; +} + +function escapeXml(s) { + return s + .replace(/&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"') + .replace(/'/g, '''); +} + +function main() { + const indexHtml = path.join(DIST, 'index.html'); + if (!fs.existsSync(indexHtml)) { + console.error('dist/index.html not found. Run build first.'); + process.exit(1); + } + + const pages = findPages(DIST).sort((a, b) => { + if (a.path === '') return -1; + if (b.path === '') return 1; + return a.path.localeCompare(b.path); + }); + const urlElements = []; + + for (const { path: pagePath, indexPath } of pages) { + const loc = pagePath ? `${BASE_URL}/${pagePath}` : BASE_URL; + const stat = fs.statSync(indexPath); + const lastmod = stat.mtime.toISOString().slice(0, 10); + + urlElements.push( + ` \n ${escapeXml(loc)}\n ${lastmod}\n ` + ); + } + + const xml = ` + +${urlElements.join('\n')} + +`; + + fs.writeFileSync(path.join(DIST, 'sitemap.xml'), xml, 'utf8'); + console.log('✓ sitemap.xml generated with', pages.length, 'URLs.'); +} + +main(); diff --git a/src/app.css b/src/app.css index e75a1c8..9837b25 100644 --- a/src/app.css +++ b/src/app.css @@ -323,11 +323,20 @@ a { Layout Containers ======================================== */ +/* Avoid in-page anchor targets sitting under sticky nav */ +[id] { + scroll-margin-top: 6rem; +} + .container { width: 100%; max-width: var(--max-width); margin: 0 auto; padding: 0 var(--space-md); + + &.container--narrow { + max-width: var(--max-narrow-width); + } } .section { diff --git a/src/lib/components/FAQ.svelte b/src/lib/components/FAQ.svelte new file mode 100644 index 0000000..a4b29a5 --- /dev/null +++ b/src/lib/components/FAQ.svelte @@ -0,0 +1,51 @@ + + +
+
+

{title}

+
+ {#each faqList as { question, answer }, index (index)} +
{question}
+
{answer}
+ {/each} +
+
+
+ + diff --git a/src/lib/components/Footer.svelte b/src/lib/components/Footer.svelte index f6f2e97..982f383 100644 --- a/src/lib/components/Footer.svelte +++ b/src/lib/components/Footer.svelte @@ -7,9 +7,9 @@
@@ -56,6 +72,10 @@ max-width: 100%; } + .footer-links--wrap { + flex-wrap: wrap; + } + .link { display: flex; align-items: center; diff --git a/src/lib/components/Hero.svelte b/src/lib/components/Hero.svelte index 346115f..0f64b76 100644 --- a/src/lib/components/Hero.svelte +++ b/src/lib/components/Hero.svelte @@ -1,41 +1,58 @@ @@ -46,26 +63,20 @@ text-align: center; background-color: var(--color-bg); border-bottom: 1px solid var(--color-border); - - @media (max-width: 768px) { - padding: var(--space-xxl) 0 var(--space-xl) 0; - } - - @media (max-width: 480px) { - padding: var(--space-xl) 0 var(--space-lg) 0; - } } - .headline { + .title { margin-bottom: var(--space-lg); font-family: var(--font-family-heading); - font-size: var(--font-size-xl); - font-weight: var(--font-weight-semibold); - color: var(--color-text); - letter-spacing: -0.02em; + font-size: var(--font-size-xxl); + font-weight: var(--font-weight-bold); + letter-spacing: -0.03em; + max-width: var(--max-text-width); + margin-left: auto; + margin-right: auto; } - .subhead { + .subtitle { max-width: var(--max-narrow-width); margin: 0 auto var(--space-xl) auto; font-size: var(--font-size-large); @@ -81,10 +92,12 @@ justify-content: center; align-items: center; margin-top: var(--space-lg); + } - @media (max-width: 768px) { + @media (max-width: 768px) { + .cta-group { flex-direction: column; width: 100%; } } - + \ No newline at end of file diff --git a/src/lib/components/HowWeWork.svelte b/src/lib/components/HowWeWork.svelte deleted file mode 100644 index b0b6114..0000000 --- a/src/lib/components/HowWeWork.svelte +++ /dev/null @@ -1,14 +0,0 @@ - - -
-
-

How We Work

-
    - {#each howWeWorkItems as item (item)} -
  • {item}
  • - {/each} -
-
-
diff --git a/src/lib/components/Navigation.svelte b/src/lib/components/Navigation.svelte index bd0231b..5163690 100644 --- a/src/lib/components/Navigation.svelte +++ b/src/lib/components/Navigation.svelte @@ -1,5 +1,21 @@