A modern, animated website built with Next.js for a calisthenics gymβhelping potential customers learn about the gym, explore facilities, and connect with the owner.
- Overview
- Features
- Tech Stack
- Architecture
- Getting Started
- Project Structure
- Configuration
- Deployment
- Development Notes
- Troubleshooting
- Contributing
- License
Pure Calisthenics is a professional website designed to showcase a physical calisthenics gym. The site provides comprehensive information about the gym's facilities, offerings, and ways for potential customers to connect with the owner through multiple contact channels.
The website features a visually stunning landing page with autoplay video streaming via Mux, smooth animations powered by GSAP, Framer Motion, and AOS, and a blog section that dynamically pulls content from the owner's Wix RSS feed. Built with Next.js for optimal performance and SEO.
- Hero Video: Autoplay muted video using Mux for optimized streaming
- Multi-Section Layout: Seven distinct sections showcasing gym services and benefits
- Animated Sections: GSAP, Framer Motion, and AOS animations
- Responsive Design: Optimized for desktop, tablet, and mobile
- Floating Action Button: Quick access to WhatsApp contact
- Direct Call Button: Click-to-call functionality
- WhatsApp Button: Instant messaging integration via floating button
- Inquiry Form: Lead generation for potential clients
- RSS Feed Integration: Displays posts from owner's Wix blog
- Masonry Layout: Beautiful grid layout for blog posts
- Dynamic Content: Automatically updated from RSS feed
- Touch Slider: Swiper for mobile-friendly image galleries
- Scroll Animations: AOS (Animate On Scroll) effects
- Professional Animations: GSAP-powered complex animations
- Material Design: MUI components for consistent UI
| Layer | Technologies |
|---|---|
| Framework | Next.js 15.1.4 (App Router) |
| Frontend | React 19.0.0 |
| Styling | Tailwind CSS 3.4.1 |
| UI Components | Material UI 6.4.2 |
| Animation | GSAP 3.12.7, Framer Motion 11.18.2, AOS 2.3.4 |
| Video Streaming | Mux (next-video 2.2.0) |
| Slider | Swiper 11.2.1 |
| Layout | react-masonry-css 1.0.16 |
| Content | rss-parser 3.13.0 |
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β PURE CALISTHENICS - WEBSITE ARCHITECTURE β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β NEXT.JS APPLICATION β β
β β β β
β β βββββββββββββββββββββββββββββββ βββββββββββββββββββββββββββββββ β β
β β β Landing Page β β Blog Page β β β
β β β β β β β β
β β β β’ Hero video (Mux) β β β’ RSS feed from Wix β β β
β β β β’ 7 content sections β β β’ Masonry grid layout β β β
β β β β’ Services showcase β β β’ Dynamic content β β β
β β β β’ Benefits & testimonials β β β’ Image optimization β β β
β β ββββββββββββββββ¬βββββββββββββββ ββββββββββββββββ¬βββββββββββββββ β β
β β β β β β
β β ββββββββββββββββΌβββββββββββββββββββββββββββββββββΌβββββββββββββββ β β
β β β Animation Layer β β β
β β β β β β
β β β GSAP β Framer Motion β AOS β β β
β β β Complex anims β Page transitions β Scroll effects β β β
β β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β EXTERNAL SERVICES β β
β β β β
β β βββββββββββββββββββ βββββββββββββββββββ β β
β β β Mux Video β β Wix RSS Feed β β β
β β β β’ Streaming β β β’ Blog content β β β
β β β β’ Optimization β β β’ Auto-sync β β β
β β βββββββββββββββββββ βββββββββββββββββββ β β
β β β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β Video streaming + Dynamic blog = Engaging experience β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
- Next.js renders pages with server-side optimization
- Hero video streams from Mux with automatic quality adaptation
- Blog content fetches from Wix RSS feed on page load
- Animations trigger based on scroll position and user interaction
- Contact actions open phone dialer or WhatsApp directly
- Node.js 18.0.0 or later
- npm or yarn
-
Clone the repository
git clone https://github.com/tanishqmudaliar/Pure-Calisthenics.git cd Pure-Calisthenics -
Install dependencies
npm install # or yarn install -
Start development server
npm run dev # or yarn dev -
Open your browser
Navigate to
http://localhost:3000
npm run dev # Development server
npm run build # Production build
npm run start # Production server
npm run lint # ESLintpurecalisthenics/
βββ src/
β βββ app/ # Next.js App Router
β β βββ api/ # API routes
β β β βββ blogs/ # Blog API endpoint
β β β βββ form/ # Form submission API
β β βββ blogs/ # Blog page (/blogs)
β β β βββ page.js
β β βββ globals.css # Global styles
β β βββ layout.js # Root layout
β β βββ page.js # Landing page (/)
β β
β βββ components/ # Reusable React components
β β βββ navBar.jsx # Navigation bar
β β βββ footer.jsx # Footer component
β β βββ floatingButton.jsx # WhatsApp floating button
β β βββ services.jsx # Services showcase
β β βββ benefits.jsx # Benefits section
β β βββ blogPage.jsx # Blog page layout
β β βββ swipeCards.jsx # Swiper card gallery
β β βββ curve.jsx # Page transition curves
β β βββ anim.js # Animation utilities
β β
β βββ pages/ # Page section components
β β βββ SectionOne.jsx # Hero section with video
β β βββ SectionTwo.jsx # About section
β β βββ SectionThreePartOne.jsx
β β βββ SectionThreePartTwo.jsx
β β βββ SectionFour.jsx
β β βββ SectionFive.jsx # Testimonials/gallery
β β βββ SectionSix.jsx
β β βββ SectionSeven.jsx # Contact/inquiry form
β β
β βββ fonts/ # Custom fonts
β
βββ public/ # Static assets
β βββ images/ # Image assets
β βββ logo/ # Logo files
β βββ favicon.ico
β
βββ videos/ # Video assets for Mux
β βββ landing.mp4 # Hero video
β
βββ next.config.mjs # Next.js configuration
βββ tailwind.config.mjs # Tailwind CSS configuration
βββ postcss.config.mjs # PostCSS configuration
βββ eslint.config.mjs # ESLint configuration
βββ jsconfig.json # JavaScript configuration
βββ package.json # Dependencies
βββ README.md # Project documentation
Create a .env file in the root directory:
| Variable | Description | Required |
|---|---|---|
MUX_TOKEN_ID |
Mux API token ID | For video streaming |
MUX_TOKEN_SECRET |
Mux API secret | For video streaming |
The landing page features an autoplay muted video using Mux video streaming via next-video:
- Videos are stored in the
videos/directory - Mux automatically optimizes for different devices and bandwidths
- Configuration is managed in
next.config.mjs
Blog content is fetched from the owner's Wix site using rss-parser:
import Parser from 'rss-parser';
const parser = new Parser();
const feed = await parser.parseURL('https://your-wix-blog-url/feed.xml');- Push your code to a GitHub repository
- Import the project in Vercel
- Configure environment variables
- Deploy
npm i -g vercel
vercelThis Next.js application can also be deployed on:
- Netlify
- Any hosting platform that supports Node.js applications
The landing page features an autoplay muted video using Mux video streaming, implemented with the next-video package. This provides:
- Efficient video delivery
- Automatic optimization for different devices
- Adaptive bitrate streaming
- Fast loading times
The site uses multiple animation libraries for an engaging experience:
| Library | Use Case |
|---|---|
| GSAP | Complex timeline animations, scroll triggers |
| Framer Motion | Component transitions, hover effects |
| AOS | Scroll-based reveal animations |
| Feature | Implementation |
|---|---|
| Click-to-call | tel: link for phone numbers |
Floating button with https://wa.me/ deep link |
|
| Inquiry Form | Form submission via API route |
- Ensure Mux credentials are configured in
.env - Check browser autoplay policies (video is muted by default)
- Verify video file is in the
videos/directory
- Verify RSS feed URL is correct
- Check if the Wix blog is public
- Look for CORS issues in browser console
- Ensure JavaScript is enabled
- Check browser console for errors
- Verify AOS is initialized in the component
- Run
npm run buildto check for Tailwind CSS issues - Clear
.nextcache and rebuild - Check for conflicting CSS
- Ensure all dependencies are installed
- Check Node.js version (18+)
- Review error logs for missing modules
Contributions are welcome! Please feel free to submit pull requests or open issues.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is open source and available under the MIT License.
Made with β€οΈ for Pure Calisthenics
Stop scrolling, start training. Discover the gym, explore the moves, transform your body! πͺ