DEV Community

Cover image for I Built a Premium Wellness Website Template (React 19 + TypeScript) — Here's What's Inside
Dewa Mahendra
Dewa Mahendra

Posted on

I Built a Premium Wellness Website Template (React 19 + TypeScript) — Here's What's Inside

Hey DEV! šŸ‘‹

I've been working on Zen Flow Yoga — a premium editorial wellness website template built with modern tooling. Thought I'd share the architecture decisions and what makes it different from typical "landing page" templates.

The Stack:

  • React 19 + TypeScript 5 (strict mode)
  • Vite 6 for dev/build
  • Tailwind CSS 3 (build-time, not CDN)
  • React Router 7 (HashRouter for static hosting)
  • Framer Motion for subtle, performant animations
  • Lucide React for icons

What's Included:

  1. Editorial Homepage — Split hero with local image, bento-style practice cards, journal highlights in lead/stack layout, breathing tool teaser, 4-pose asana matrix
  2. Journal System — Article listing with search/filter, individual article pages, related articles rail
  3. Pose Library — 6 poses with search, category tabs, detail pages (benefits, contraindications, steps, tags)
  4. Breathwork Tool — 4 pranayama protocols (Box, 4-7-8, Coherent, Nadi Shodhana) with visual orb + audio metronome, useReducer state machine
  5. About Page + Medical Disclaimer component

Architecture Decisions I'm Proud Of:

šŸ”§ Centralized Brand Config (config/siteConfig.ts)
Single source of truth for site name, tagline, nav items, social links, SEO defaults. Navbar, Footer, SEO component, and all pages consume it. Changing the brand = editing one file.

šŸ“¦ Content Extraction (config/content/)
Articles, yoga poses, and mood tags live in typed TS modules — not hardcoded in components. Includes a dependency-free validator (scripts/validate-content.ts) that catches duplicate IDs, missing fields, invalid tags, and flags external image URLs.

⚔ Route-Level Code Splitting
Every page is lazy-loaded with React.lazy + Suspense. Initial bundle: ~390 kB (125 kB gzipped). CSS: ~44 kB (8 kB gzipped).

šŸ›”ļø No External Image Dependencies
Hero uses a local asset (/public/images/hero-yoga.jpg). Article/pose images are still Unsplash URLs (flagged by validator) — buyer replaces with their own.

🧘 Health Claim Responsibility
Sample content reviewed: unsupported medical/physiological claims replaced with neutral descriptions (e.g., "lowers cortisol" → "supports transition toward rest"). Breathwork tool includes disclaimer: educational pacing aid, not medical treatment.

Customization Path:

npm ci
npm run dev          # localhost:5173
# Edit config/siteConfig.ts for branding
# Edit config/content/articles.ts, yogaPoses.ts for content
npm run build        # dist/ ready for static deploy
Enter fullscreen mode Exit fullscreen mode

Live Demo: https://zen-flow-yoga-visual-refresh.vercel.app/
Purchase: https://synergize3.gumroad.com/l/lhhucs

Would love feedback from folks building in the wellness/editorial space. What would you add or change?

Top comments (0)