Skip to content

tanishqmudaliar/Pure-Calisthenics

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

48 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Pure Calisthenics

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.

Next.js React Tailwind CSS License Mux Video


Table of Contents


Overview

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.


Features

Landing Page

  • 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

Contact Integration

  • Direct Call Button: Click-to-call functionality
  • WhatsApp Button: Instant messaging integration via floating button
  • Inquiry Form: Lead generation for potential clients

Blog Section

  • 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

User Experience

  • 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

Tech Stack

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

Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                   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             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Content Flow

  1. Next.js renders pages with server-side optimization
  2. Hero video streams from Mux with automatic quality adaptation
  3. Blog content fetches from Wix RSS feed on page load
  4. Animations trigger based on scroll position and user interaction
  5. Contact actions open phone dialer or WhatsApp directly

Getting Started

Prerequisites

  • Node.js 18.0.0 or later
  • npm or yarn

Installation

  1. Clone the repository

    git clone https://github.com/tanishqmudaliar/Pure-Calisthenics.git
    cd Pure-Calisthenics
  2. Install dependencies

    npm install
    # or
    yarn install
  3. Start development server

    npm run dev
    # or
    yarn dev
  4. Open your browser

    Navigate to http://localhost:3000

Scripts

npm run dev      # Development server
npm run build    # Production build
npm run start    # Production server
npm run lint     # ESLint

Project Structure

purecalisthenics/
β”œβ”€β”€ 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

Configuration

Environment Variables

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

Video Setup

The landing page features an autoplay muted video using Mux video streaming via next-video:

  1. Videos are stored in the videos/ directory
  2. Mux automatically optimizes for different devices and bandwidths
  3. Configuration is managed in next.config.mjs

RSS Feed Integration

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');

Deployment

Vercel (Recommended)

  1. Push your code to a GitHub repository
  2. Import the project in Vercel
  3. Configure environment variables
  4. Deploy
npm i -g vercel
vercel

Other Platforms

This Next.js application can also be deployed on:

  • Netlify
  • Any hosting platform that supports Node.js applications

Development Notes

Video Streaming

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

Animations

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

Contact Functionality

Feature Implementation
Click-to-call tel: link for phone numbers
WhatsApp Floating button with https://wa.me/ deep link
Inquiry Form Form submission via API route

Troubleshooting

"Video not playing"

  • Ensure Mux credentials are configured in .env
  • Check browser autoplay policies (video is muted by default)
  • Verify video file is in the videos/ directory

"Blog posts not loading"

  • Verify RSS feed URL is correct
  • Check if the Wix blog is public
  • Look for CORS issues in browser console

"Animations not working"

  • Ensure JavaScript is enabled
  • Check browser console for errors
  • Verify AOS is initialized in the component

"Styling issues"

  • Run npm run build to check for Tailwind CSS issues
  • Clear .next cache and rebuild
  • Check for conflicting CSS

"Build fails"

  • Ensure all dependencies are installed
  • Check Node.js version (18+)
  • Review error logs for missing modules

Contributing

Contributions are welcome! Please feel free to submit pull requests or open issues.

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

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! πŸ’ͺ

About

A modern, motion-rich website for fitness businesses featuring seamless Mux video streaming, automated RSS blog integration, and direct customer communication channels.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Contributors