Back to template

IRON — TEMPLATE GUIDE

Documentation

A Next.js + Tailwind CSS gym & fitness template, with dedicated detail pages for classes and trainers.

1. Overview

Key sections

  • Hero, About, Classes, Schedule, Trainers, Gallery, Testimonials, Pricing and FAQ — all on the homepage.
  • Each class and each trainer has its own detail page with a real URL (/classes/[slug], /trainers/[slug]).
  • Neon-on-black styling, fully isolated from this marketplace's own design system — safe to drop into any project.

2. Project structure

src/app/
├── page.tsx                  // homepage — assembles every section
├── layout.tsx                // fonts (Inter + Oswald) and CSS scope
├── iron.css                  // color variables, scoped under .iron-scope
├── classes/[slug]/page.tsx   // class detail page
├── trainers/[slug]/page.tsx  // trainer detail page
├── _components/
│   ├── layout/                Navbar.tsx, Footer.tsx
│   ├── sections/               Hero, About, Classes, Schedule,
│   │                           Trainers, Gallery, Testimonials,
│   │                           Pricing, FAQ, Marquee
│   └── ui/ScrollReveal.tsx    // scroll-in animation wrapper
└── _data/mockData.ts         // all text content + class/trainer data

The _components and _data folders use a leading underscore so Next.js never treats them as routes — only page.tsx files are routable.

3. Editing content

Everything — nav links, classes, trainers, schedule, gallery, testimonials, pricing plans, FAQs — lives in one file: _data/mockData.ts.

export const classesData = [
  {
    slug: "powerlifting",        // becomes the URL: /classes/powerlifting
    title: "Powerlifting",
    description: "Build raw strength with heavy compound movements.",
    longDescription: "...",      // shown on the detail page
    trainer: "Mark Titan",
    trainerSlug: "mark-titan",   // links to /trainers/mark-titan
  },
];

Adding a new class or trainer to the array automatically creates its detail page — no extra routing needed.

4. Styling

Colors are CSS variables defined in iron.css, scoped under the .iron-scope wrapper so they never leak outside this template:

Background

#0a0a0a

Card background

#111111

Accent (neon)

#ccff00

Text

#f4f4f4

To rebrand, edit the :root-style variables at the top of iron.css — every component reads color through var(--accent) etc., so one edit updates the whole site. Headings use Oswald, body text uses Inter — both loaded in layout.tsx via next/font/google.

5. Replacing images

Photography lives in public/: a hero background, an about-section photo, three trainer portraits and six gallery shots. Swap any file keeping the same name, or update the path in _data/mockData.ts (trainers, gallery) or directly in Hero.tsx / About.tsx (hero and about images).

6. Schedule & booking

The schedule's booking flow shows a confirmation modal locally — it doesn't send a real reservation anywhere yet.

Open _components/sections/Schedule.tsx and connect the booking handler to your own backend, a form service like Formspree, or a calendar/CRM API before going live.

North Kraken Studio — Iron v1.0