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?
Top comments (0)