Fight Fit is a kickboxing, boxing, and fitness gym in Herăstrău, Bucharest. Their old WordPress site was slow and Romanian-only. We rebuilt it: faster, in Romanian and English, and structured so Google, maps, and AI search can read it.
A kickboxing, boxing, and fitness gym in the Herăstrău area of Bucharest, with classes for adults and kids and members who speak Romanian and English.
The old site loaded slowly, existed only in Romanian, and gave Google very little to work with. Good enough to launch on, not to grow on.
A website that loads quickly, works in Romanian and English without becoming two sites to maintain, and shows up clearly in search.
One rebuild across four fronts: two languages, search, speed, and a clean migration off a locked-down host.
Real /en/ URLs, not query strings. Hreflang and per-language canonicals so Google serves the right language and does not treat the two as duplicates. One set of pages and one switcher wired to the translated URLs, so there is no second site to maintain.
Schema for a local gym: business details, services, coaches, opening hours, FAQs, and breadcrumbs, so the site can show up in rich results and on the map. Per-page titles and descriptions, and directions that point to the real Google Business listing.
An llms.txt and llms-full.txt in Romanian and English, linked from every page, listing the gym, coaches, schedule, prices, and location in a format ChatGPT and Perplexity can read and cite. Very few sites do this yet.
A design with a lot of movement that still passes Core Web Vitals. Images in WebP and correctly sized, third-party embeds deferred and removed on mobile, and fonts that do not block the page from rendering.
A dark editorial look with GSAP and Lenis scroll animation, an ASCII hero mark, section reveals, and real gym photography. Built mobile-first, with the same layout logic on every page.
The live WordPress site sat on a shared host with API, FTP, and SSH all blocked. We migrated it with a scoped deploy account and a scripted cutover, after a full backup we verified first. No data lost, no downtime.
Setting up /en/ URLs, hreflang, and canonicals from the start is what keeps a bilingual site from turning into duplicate content later.
Deferring and removing third-party embeds did more for load time than any image tweak. It is usually the first thing to check.
Tricks that hurt the real experience, like hiding content until someone clicks, are not worth the points. The site has to work first.
A plain, machine-readable summary makes a small business easier for AI search to read and mention, and that is a growing part of how people find things.
Accurate business listings, a consistent name and address, and FAQ markup do more for a local site than adding more pages.
The site just launched, so there are no before-and-after numbers to show yet, and we will not make any up. We set a baseline at launch and check it in Search Console at 30, 60, and 90 days, for searches like kickbox in Herăstrău and kids’ classes. Here is what is in place today.
Every page in both languages on real /en/ URLs, with hreflang on all non-blog pages.
Business details, services, coaches, hours, FAQs, and breadcrumbs, checked with Google’s Rich Results test.
An llms.txt and llms-full.txt linked from every page, so AI search can read the gym clearly.
WebP images, deferred embeds, and non-blocking fonts, with Core Web Vitals recorded at launch.
The full build is live and running.