All Projects
Website

viewpane.app

Complete

Product Marketing Website

Marketing site for ViewPane — our mobile companion app. A single-page pitch with feature breakdown, technical stack overview, transparent pricing, and a no-ESP waitlist that goes straight to inbox.

Astro Netlify Porkbun Markdown
viewpane.app

About

The product site for ViewPane — a one-page pitch designed to let a visitor decide, in under thirty seconds, whether the app earns a spot on their phone. No marketing fluff, no hero video, no autoplay-everything: a clear value prop, eight technical features written for people who run their own stack, the pricing on the page (not in a modal), and a privacy/terms surface for app store submission. Built by someone who runs Frigate at home — the credibility comes from being part of the audience the app serves.

Technical Highlights

  • Astro 5 static — no SSR, no client framework, ~76 KB total deploy
  • Six pages — landing, docs, privacy, terms, report-a-bug + thanks
  • Inline-SVG favicon + theme-color meta — no external font/icon requests
  • Zero JS at runtime — every animation is CSS; no Vue/React/Svelte
  • No analytics, no telemetry, no third-party SDKs — same posture as the app it markets
  • Hardcoded production URLs in astro.config.mjs so social cards and OG meta resolve correctly from any deploy preview

Hosting & Domain

  • Netlify static deploy — local-built dist/, pushed via netlify deploy --prod
  • Porkbun DNSALIAS at apex → apex-loadbalancer.netlify.com, CNAME www → Netlify subdomain
  • Auto-issued Let’s Encrypt SSL covering apex + www
  • .app TLD HSTS preload — every connection forced to HTTPS at the browser level, no mixed-content fallback possible

Waitlist

The “Get notified” CTA is a straight mailto: to the founder’s inbox. No ESP, no list-management vendor, no tracking pixel — just a one-line email pre-filled with the launch context. Same minimal-trust posture the app sells: if the marketing site itself collected emails through a third-party platform, the privacy claim wouldn’t survive contact with reality.