Localized (en · es-MX · fr) DiveFive marketing site with automatic light/dark theming and admin-editable content sourced from /content and compiled into /public/_data.
- Vue 3 + Vite + TypeScript
- Vue Router + vue-i18n
- Tailwind primitives with semantic CSS variables
- GitHub Actions → GitHub Pages (with optional Vercel deploys)
npm cinpm run dev(runspredev→npm run build:manifests, then launches Vite)- Edit localized copy under
/contentand refresh the page—manifests regenerate automatically for each run.
/content/legal/privacy|terms.{locale}.md|txt→ legal pages (Markdown preferred)./content/appcopy/{section}.{locale}.md|txt→ long-form marketing copy (hero, features intro, showcase, FAQ, premium, etc.)./content/screenshots/{locale}/*.{png|jpg|webp|avif}→ localized marketing captures./content/features/{locale}/{date-slug}.md→ one file per “New Feature” card (first heading = title; body converted to sanitized HTML)./content/brand/appStoreLink.{locale}.txt→ App Store deeplink per locale (falls back to the official listing if empty).npm run build:manifests(triggered bypredev/prebuild) writes locale-specific JSON intopublic/_data/{key}.{locale}.jsonfor runtime fetches viaimport.meta.env.BASE_URLaware URLs.
npm run buildexecutesprebuildto refresh manifests, then bundles the site..github/workflows/deploy.ymlbuilds on pushes tomainand publishes to GitHub Pages (Repository settings → Pages → Source: GitHub Actions).vite.config.tsserves at/DiveFive-webapp/for Pages; setVERCEL=1to serve from/in Vercel previews.
- 404 loading
/_data/*.json: re-runnpm run build:manifestsor ensure the workflow executed before deploying. Fetches includeimport.meta.env.BASE_URLso the path adapts to GitHub Pages and Vercel. - Missing copy or empty sections: confirm locale files exist under
/content; blank features folders hide the “New Features” section automatically. - Stale App Store link: update
/content/brand/appStoreLink.{locale}.txtand redeploy.
- Preserve approved header/footer layout, palette, and spacing (visual zero-diff).
- Keep short UI strings inside
src/i18n/{locale}.json; move long copy to/content. - Follow accessibility requirements (WCAG AA contrast, keyboard focus, aria labels).
- Use the “DiveFive” name and
divefive.appdomain consistently. - App Store badges swap automatically via
AppStoreBadge.vueaccording to locale and system theme. - Reference
docs/DESIGN_RULES.md,docs/DESIGN_PHILOSOPHY.md, anddocs/BRAND_REFERENCES.mdbefore modifying assets.