Static landing page for Snap2Link (the desktop screenshot-to-Drive-link app). Lives at https://snap2link.app.
- Astro 6 — static site, zero JS by default, partial hydration only where needed.
- Tailwind 4 via the Vite plugin. Tokens declared in
src/styles/global.cssunder@theme. - Geist Sans + Geist Mono self-hosted via Fontsource — no Google Fonts call.
- Per-section components in
src/components/, composed insrc/pages/index.astro.
Design system is the source of truth for colours, type, spacing — see
docs/DESIGN_SYSTEM.md
in the main app repo.
pnpm install
pnpm dev # http://localhost:4321
pnpm build # static site to ./dist
pnpm preview # serve the built siteCloudflare Workers (Static Assets) — connected to the main branch of
this repo, builds on push. The packageManager field in package.json
- the
pnpm-lock.yamlmake Cloudflare auto-detect pnpm via corepack. Outputdist/.
DNS is on Cloudflare too, so the apex snap2link.app and www. both
proxy to the Pages project.
src/
layouts/
Layout.astro # base HTML, head, OG meta, font preload
components/
Nav.astro # sticky nav with GitHub star button
Hero.astro # headline + 3 install CTAs + DemoFrame
DemoFrame.astro # 5-phase animated capture sequence (vanilla JS)
Why.astro # AI-workflow framing + tool chips
Features.astro # 9-card bento grid
AnnotatorCard.astro # wide bento card with mock annotator UI
HowItWorks.astro # 3-step horizontal timeline
Install.astro # tabbed Win / macOS / Linux + copy buttons
OpenSource.astro # stars / contributors stats + GitHub cards
Footer.astro # links + socials
pages/
index.astro # root composition
styles/
global.css # Tailwind 4 + design tokens + section styles
public/
assets/ # logo + favicons
- Update version + tagline copy in
Hero.astro - Update install commands in
Install.astro'sPLATFORMSarray - Star count is hard-coded in
pages/index.astro; bump on deploy - Footer year is computed from
new Date()so no maintenance needed