In-house project · eSports club platform
xFive Club
- Next.js
- Supabase
- eSports
- i18n
- SEO
- GEO
What we did
xFive Club is a Spanish eSports club and content creator community (teams, competition, streamers). This isn’t a showcase site: it’s a platform driven by live data (matches, results, rosters, creators, news) that updates through an admin panel and grows in phases.
It’s an in-house project, and we treat it as one. We build and operate it: Next.js architecture, Supabase database, deployment on Vercel, ES/EN internationalization, technical SEO and ongoing maintenance as the club adds competitions, teams and content.
Blocks we operate:
- Next.js platform deployed on Vercel, with server-side rendering and prerendered pages so content loads fast and stays indexable.
- Supabase database (PostgreSQL) as the source of truth for teams, matches, results, creators and news. The calendar and scores are served from structured data, not laid out by hand.
- ES/EN internationalization with properly resolved
hreflang(es, en, x-default) and per-languageog:locale. Every piece of content exists in both versions without duplicating URLs or cannibalizing rankings. - Club modules: teams with rosters, match calendar with a live countdown, latest results linked to their VOD, creator/streamer profiles, a news blog and YouTube channel integration.
- Shop / merchandising integrated into the same platform, consistent with the club’s brand.
- Technical SEO and GEO: per-page metadata, full Open Graph, and a structure built so the club’s content (teams, results, news) is citable by Google and by generative engines like ChatGPT, Perplexity and Gemini.
How we built it
Stack: Next.js (React) with a PostgreSQL database on Supabase, deployed on Vercel. Images optimized with next/image. Native ES/EN internationalization.
Technical decisions that shape the project:
- Next.js on Vercel, not a heavy CMS. An eSports club runs on data that changes daily (matches, results, rankings). Serving it from an SSR + prerender app gives better performance and control than a WordPress loaded with plugins.
- Supabase as the backend. Managed PostgreSQL for teams, matches, creators and news. Adding a competition, a result or a player means updating data, not touching templates. That’s what lets the site grow in phases without rebuilding it.
- Live data. The next match shows a real-time countdown; results link to their VOD. Dynamic content is loaded from the database, not hardcoded.
- Real i18n. Two languages (ES/EN) with correct
hreflangandog:locale, so each version ranks in its own market with no duplicate-content conflicts. - Performance. WebP images served through
next/imagewithsrcset, prerendered pages, assets on Vercel’s CDN. The goal is green Core Web Vitals even on pages with embedded video and results tables. - Phased growth. Phase 1 is live. The architecture (data in Supabase, reusable Next.js components) is designed to add games, competitions and modules without rewriting the foundation.
What we didn’t do
- We didn’t build a WordPress site with a page builder. For a platform with live data and phased growth, a plugin-heavy CMS would have cost performance and flexibility.
- We didn’t hardcode the club’s content. Matches, results, rosters and news live in the database: they’re updated as data, not by editing templates.