MegaGym
fullstack

MegaGym

Premium Greek fitness brand pitch site

MegaGym is a pitch website for one of Greece's largest premium fitness chains: 7 Athens-area clubs, 15,000+ active members, three decades in business since 1993. The brief was a polished, bilingual marketing site that conveys premium positioning while staying fast and dependency-free. Built with zero frameworks (vanilla HTML/CSS/JS) but engineered with real attention to detail: an interactive Leaflet locations finder with bidirectional card-to-pin linking, runtime Greek/English language switching with localStorage persistence, an equipment carousel with blurred peek cards, scroll-driven parallax hero, custom branded cursor, full dark mode, and a preloader gated by sessionStorage.

Key Features

Interactive locations finder: 7-card list + sticky Leaflet map with bidirectional hover/click linking and Google Maps directions
Runtime EL/EN language switching with 150+ translation keys, localStorage persistence, and a custom event for JS-rendered content
Equipment slideshow with peek cards (blurred prev/next, flip-X for symmetry, edge-fade gradient masks)
Custom yellow-M-on-black branded cursor with hover-state pointer variant (desktop only)
Hero parallax slideshow (4 images), pulsing 33-year heritage badge, marquee scroller of 7 location names
Comprehensive dark mode (40+ scoped overrides), full schema.org markup (FAQPage + SportsActivityLocation)
Layout-shift prevention: reserved scrollbar gutter, language-width compensation on nav CTA, non-breaking-space tuning
AI-friendly llms.txt + llms-full.txt, structured data, OpenGraph meta tags

8 pages, all in Greek

All page filenames in Greek (gymnastiria, proponisi, pilates, dokimastiki, epikoinonia) reflecting the local market focus. Each specializes in one service while sharing navigation and footer.

  • Homepage: hero, services, locations finder, video tour, pricing, trainers, FAQ
  • Locations directory: 7 gym exterior shots + Fitness Club vs EXCLUSIVE comparison
  • Group Personal Training: TRX, MEGA ZONE, MEGA CAGE, SKILLMILL programs
  • Personal Training & Transformation: 45-day and 90-day programs at EXCLUSIVE centers
  • Pilates Studio: split intro, full equipment slideshow, accessories
  • Trial booking + contact pages with translated forms and side-by-side map+list rebuild

Locations finder

Side-by-side card list and Leaflet map (sticky on scroll, 600px each on desktop). Custom teardrop SVG pins (black body, yellow border, M-logo overlay) with HQ Kifissia distinguished by a larger size + permanent drop-shadow glow filter.

  • Hover a card: matching pin scales up and glows
  • Hover a pin: matching card highlights and scrolls into view
  • Click a pin: map flyTo + popup with address, phone, tags, and Google Maps directions
  • Pop-ups translate live when language switches via custom mg:langchange event

Equipment carousel

Pilates page features a 7-slide carousel with three visible at once: active in full focus, prev/next as blurred peek cards. Smooth 0.55s cubic-bezier transitions, staggered content fade-in, edge-fade gradients on container ::before/::after to hide cutoffs. The prev card is flipped on the X-axis for visual symmetry.

Attention to detail (the polish)

Beyond the headline features, the build invests heavily in the small things that make a site feel premium.

  • overflow-y: scroll on html prevents layout shift between scrollable and non-scrollable pages
  • min-width on nav CTA prevents reflow on language switch (Greek text is wider than English)
  • Non-breaking spaces in translations keep brand phrases like 'ΖΩΗ ΜΟΥ' on one line
  • display: inline-flex on Services dropdown maintains baseline alignment with sibling links
  • Service card buttons use margin-top: auto so different content lengths still align
  • Preloader gated to first-visit-per-session via sessionStorage (skip on internal navigation)
  • Lazy-loaded images, semantic HTML, OpenGraph + Twitter card tags, custom 404 page

Tech Stack

HTML5
CSS3
Vanilla JS
Leaflet.js
Custom i18n
Intersection Observer
Schema.org
GitHub Pages