Marketing landing site for CWU (Commonwealth Union Network): hero, network story, leadership carousel, how‑to‑buy, roadmap, FAQ, and community links. Built as a single-page React app with in-page sections (#about, #network, #advisory, #how-to-buy, #faq, etc.).
Token: CWU on Solana
Public launch date (site copy): 8 April 2026
Reference domain (SEO / links in repo): https://blockchain.commonwealthunion.com/
- React 19 + TypeScript
- Vite 8
- Tailwind CSS 4 (
@tailwindcss/vite) - lucide-react (icons)
- @fontsource/dm-sans (DM Sans; Georgia used for headings via CSS)
- Node.js 20+ (or current LTS)
- npm (comes with Node)
| Command | Description |
|---|---|
npm run dev |
Dev server with HMR (default Vite URL/port). |
npm run build |
Typecheck + production build → dist/. |
npm run preview |
Serve dist/ locally for smoke tests. |
npm run lint |
ESLint. |
npm install
npm run devOpen the URL Vite prints (usually http://localhost:5173).
npm run buildOutput is in dist/. Preview:
npm run previewDeploy dist/ to any static host (CDN, S3 + CloudFront, Netlify, Vercel static, nginx, etc.). Ensure history fallback for SPAs if you later add client routes; this app is a single / entry with hash or scroll anchors only.
| Path | Description |
|---|---|
index.html |
Entry HTML, meta/SEO, JSON-LD (WebSite, Organization) |
public/ |
Static assets (robots.txt, sitemap.xml, images, favicon) |
src/App.tsx |
Page shell, section order, hash scroll, FAQ JSON-LD mount |
src/faqContent.ts |
FAQ questions/answers (shared UI + structured data) |
src/SeoFaqJsonLd.tsx |
Renders FAQPage schema.org JSON-LD |
src/Hero*.tsx, Header*.tsx, *Section.tsx |
Feature sections |
Configured for crawlers and sharing:
- Canonical URL, Open Graph, Twitter (
summary_large_image) inindex.html WebSite+OrganizationJSON-LD inindex.htmlFAQPageJSON-LD generated fromsrc/faqContent.ts(must stay in sync with the FAQ UI)public/robots.txtandpublic/sitemap.xml- Single visible
<h1>in the hero (HeroHeadline.tsx) for page topic - Viewport allows zoom (removed
user-scalable=nofor accessibility and common SEO hygiene)
Search and replace the canonical host in:
index.html—link[rel=canonical],og:url,og:image,twitter:image, JSON-LD@id/urlpublic/robots.txt—Sitemap:linepublic/sitemap.xml—<loc>package.json—homepage
Optional: add a dedicated public/og-image.png (e.g. 1200×630), then point og:image / twitter:image to https://your-domain/og-image.png for best social previews.
- FAQ copy lives in
src/faqContent.ts; edit there so FAQs and FAQ rich results stay aligned. - Footer and FAQ reference
blockchain.commonwealthunion.comfor the official site.
Private — not intended for open redistribution; see package.json ("private": true).
- After domain changes, update URLs listed in SEO & metadata above.
- Optionally add a dedicated OG image and wire it in
index.html. - Re-run
npm run buildbefore release; fix anytsc/ ESLint issues.