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:
- Editorial Homepage — Split hero with local image, bento-style practice cards, journal highlights in lead/stack layout, breathing tool teaser, 4-pose asana matrix
- Journal System — Article listing with search/filter, individual article pages, related articles rail
- Pose Library — 6 poses with search, category tabs, detail pages (benefits, contraindications, steps, tags)
- Breathwork Tool — 4 pranayama protocols (Box, 4-7-8, Coherent, Nadi Shodhana) with visual orb + audio metronome, useReducer state machine
- 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 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?