football-match is a complete, modern, mobile-responsive ticket-selling website for a single marquee football fixture: Harry Kane's team vs AFC Ajax, played on 5 January 2027 at Talanta Stadium, Nairobi, Kenya, with kick-off at 7:00 PM EAT. The site exists to turn big-match anticipation into a ticket purchase: it presents the fixture with real, licensed photography of Harry Kane, an AFC Ajax star player and Talanta Stadium, carries a live countdown to kick-off, spotlights both players, offers VIP, Premium and Regular ticket tiers priced in KES, shows the venue with a seating map and directions, and walks a buyer through a cart, a buyer-details checkout with a demo/test payment, and a printable confirmation ticket carrying a QR code.
The audience is football fans and event-goers in Kenya and beyond who want spectacle, urgency and trust in the purchase, plus the event organizer who owns the match listing, ticket inventory, venue information, contact details and terms that buyers rely on.
The site is delivered as a first-party web application with a shared backend and database, and is designed for free static-style deployment of the front end on Netlify, Vercel or GitHub Pages, with a README documenting that deployment and sample ticket data included in the project.
The product is a single-fixture ticketing site, not a general marketplace. Every page serves one match and one purchase lifecycle: discover the fixture, understand it (countdown, preview, players, venue), choose tiers and quantities, review a cart, enter buyer details, complete a demo/test payment, and receive a printable ticket with a QR code.
Delivery is first-party: the React front end renders all buyer-facing pages, and a shared FastAPI backend process serves the application APIs and domain modules (match content, ticket tiers and inventory, cart, orders, demo payment, ticket issuance and QR payloads). MariaDB stores application-owned persistent data — ticket tier definitions and prices in KES, sample ticket data, cart contents, buyer details and issued tickets. The front end is deployable for free on Netlify, Vercel or GitHub Pages per the README; the backend and database run as the provisioned services.
Access is public throughout: every page in the current contract is anonymously reachable, and no account, login or identity establishment is required to browse, select tickets, check out or retrieve a confirmation. Payment is explicitly demo/test only — no real payment integration, no card processing, no money movement. Imagery is real and licensed: no placeholders and no illustrations anywhere in the product.
Current scope is the match site and its purchase lifecycle. Future ideas (for example real payment processing or multi-match listings) are not part of this delivery and appear only in the future section.
Removed from scope
FR-1 — Split hero with match block and Buy Tickets CTA (explicit) As a Ticket buyer I should see a full-width hero banner with Harry Kane on one side and the AFC Ajax star player on the other, showing the match title, the date 5 Jan 2027, the venue Talanta Stadium, and a bold "Buy Tickets" button, so that I immediately understand the fixture and can start buying.
FR-2 — Real, licensed cover imagery (explicit) As a Ticket buyer I should see real, high-quality, properly licensed photographs of Harry Kane and one AFC Ajax star player as the main cover images, so that the page shows real people rather than placeholders or illustrations.
FR-3 — Match info with countdown, date/time, venue photo and preview (explicit) As a Ticket buyer I should see a countdown timer to kick-off, the date and time, the venue with a real Talanta Stadium photo, and a short match preview, so that I know exactly when and where the match happens.
FR-4 — Player spotlight cards (explicit) As a Ticket buyer I should see cards for Harry Kane and the AFC Ajax star player with their real photos, names, positions and short bios, so that I can connect the fixture to the players on the pitch.
FR-5 — Ticket tiers with KES prices, quantity selectors and Add to cart (explicit) As a Ticket buyer I should see VIP, Premium and Regular tiers with prices in KES, quantity selectors and "Add to cart" buttons, so that I can choose and add the tickets I want.
FR-6 — Cart review with KES totals (required_inference) As a Ticket buyer I should review my selected tiers, quantities and KES totals in a cart and proceed to checkout, so that I can confirm my order before paying.
FR-7 — Checkout with buyer details and demo/test payment (explicit) As a Ticket buyer I should enter my buyer details and complete a demo/test payment, so that I can finish my purchase without a real charge.
FR-8 — Printable ticket with QR code (explicit) As a Ticket buyer I should receive a printable confirmation ticket with a QR code after the demo payment, so that I have a ticket to show at the match.
FR-9 — Venue section with real stadium images, seating map, location and directions (explicit) As a Ticket buyer I should see real Talanta Stadium exterior and interior/pitch images, a seating map, the location and directions, so that I know how to get there and where I will sit.
FR-10 — Footer with contact info, social links and terms (explicit) As a Ticket buyer I should find contact info, social links and terms in the footer, so that I can reach the organizer and understand the terms.
FR-11 — Responsive, fast-loading, accessible presentation (explicit) As a Ticket buyer I should use the site comfortably on mobile, tablet and desktop with fast loading and accessible contrast, so that I can buy tickets on any device.
FR-12 — SEO-friendly meta tags (explicit) As an Event organizer I should have SEO-friendly meta tags on the site, so that the fixture is discoverable in search.
FR-13 — Sample ticket data and deployment README (explicit) As an Event organizer I should have sample ticket data and a README covering free deployment on Netlify, Vercel or GitHub Pages, so that the site can be deployed and demonstrated.
FR-14 — Match listing and ticket inventory ownership (required_inference) As an Event organizer I should have the match details, ticket tiers and KES prices, venue, seating map, directions, contact and terms content defined as the listing buyers rely on, so that the site presents one consistent fixture.
Product context. A football fan or event-goer who has heard about Harry Kane's team vs AFC Ajax on 5 January 2027 at Talanta Stadium, Nairobi, and lands on the site to decide whether to go and to buy tickets. They may be on a phone in Nairobi traffic or on a desktop at home, and they expect a big-match feel with real faces and a real stadium.
Primary goal. Secure tickets to the match at a tier and price in KES that suits them, with a printable ticket they can show at the gate.
Distinct accepted responsibilities. The buyer is the sole human actor in the purchase lifecycle: they read the hero and match info, watch the countdown, look at the player spotlight, compare VIP, Premium and Regular tiers and prices in KES, set quantities, add to cart, review the cart, enter buyer details, complete the demo/test payment, and print the confirmation ticket with its QR code. They also use the venue section to plan travel and seating.
Relevant inputs or decisions. Which tier and how many tickets; their buyer details (name, email, phone); whether to proceed from cart to checkout; whether to print the ticket.
Interactions with other accepted participants. The buyer consumes the Event organizer's listing — match details, tiers and KES prices, venue, seating map, directions, contact and terms — and relies on it being consistent. The buyer does not interact with the organizer directly through the site beyond the footer contact info.
Observable success. A printable ticket with a QR code for the chosen tier and quantity, showing the match, date, venue and buyer details, reached without a real charge.
Product context. The party responsible for the match listing and ticket inventory for Harry Kane's team vs AFC Ajax at Talanta Stadium. They define what buyers see and rely on: the match details, the ticket tiers and prices in KES, and the venue, seating map, directions, contact and terms content.
Primary goal. Present one consistent, trustworthy fixture listing that lets buyers purchase confidently and arrive at the right place.
Distinct accepted responsibilities. The organizer owns the listing content and inventory facts — match title, date 5 January 2027, venue Talanta Stadium, Nairobi, Kenya, kick-off 7:00 PM EAT, the VIP/Premium/Regular tiers with KES prices, the venue photographs, seating map, location, directions, contact info, social links and terms. They also own the sample ticket data and the deployment README that make the site demonstrable and deployable.
Relevant inputs or decisions. The exact match details, tier names and KES prices, venue content, contact and terms text, and the licensed imagery choices.
Interactions with other accepted participants. The organizer supplies the content the Ticket buyer consumes; the buyer's purchase depends on that content being accurate and consistent across pages.
Observable success. Buyers see a consistent listing across Landing, Match Info, Players, Tickets, Venue and the footer, and can complete a purchase and print a ticket that matches the organizer's listing.
Failure/recovery and continuation. A failed hero or stadium photograph keeps its navy ground and surrounding text readable. An empty cart shows a message with a link back to Tickets. A failed ticket resolution on Confirmation offers a retry. With reduced motion, the floodlight sweep and parallax are removed and dividers remain fully drawn, so the flow works identically.
The creative direction is authoritative: Fluid parametric grandeur for a night under stadium lights, after the muse Zaha Hadid — sweeping continuous curves, luminous surfaces and motion frozen in form, the feeling of a stadium at kick-off.
Mode: dark.
Colour tokens (exact hex by role):
#0A1428 (deep navy — the ground for hero, match info and venue).#12203A (raised surface for player cards, ticket tiers and the checkout panel).#F4F1EA (warm pearl-white, ~13:1 on navy).#E8B44A (gold — the single hot accent: CTAs, countdown digits, price figures, the curved rule between sections).#8FA0BC (secondary labels, ~5.4:1 on #0A1428).#FFFFFF appears only as the printable ticket ground and inside the seating map, never as a page background.Typography: headings and body Jost (wide modern geometric sans, light weights 300–400). Display sizes with tight leading 0.92–0.96 and slight positive tracking on small-caps labels. The match title is set in a single line where possible and breaks into two stacked lines on mobile, always in sentence case with club names in uppercase gold micro-caps above it. Scale is a 1.333 modular scale: display clamp(2.75rem, 9vw, 8.25rem) (44px mobile → 132px desktop), section heads 32px → 64px, card names 24px → 36px, body 16px → 18px, labels 12px uppercase with 0.18em tracking. Countdown numerals use Jost with tabular-figure styling at 40px mobile → 88px desktop.
Shape language: sweeping continuous curves as the structural motif — hero panels clipped by large asymmetric arcs rather than rectangles, curved section boundaries (a shallow gold arc dividing hero from match info, a deeper reverse arc before the venue section), full-capsule buttons, cards with one 40–80px curved corner paired with three tight corners, and the seating map drawn as concentric curved stands. No hard 90° card grids, no floating blobs.
Spacing rhythm: full-bleed vertical sequence with generous section breathing room; curved dividers carry the rhythm between sections.
Imagery style: real photography only — licensed high-resolution portraits of Harry Kane and the AFC Ajax star player cropped tall and lit against dark grounds, a real Talanta Stadium exterior shot full-bleed as the venue band and a pitch/interior shot as the match-info inset, with a subtle navy duotone wash at the edges so images sit inside the palette. No illustrations, no placeholders, no stock-looking cut-outs.
The public entry is a match poster built from a curved gold seam. The Landing hero is a full-width dark-navy composition: Harry Kane's real photograph occupies the left 42% cropped from the waist up, the AFC Ajax star's real photograph occupies the right 42%, and a large sweeping gold arc separates them. That seam is not decoration — it is the navigation idea: it carries the match block, a gold uppercase micro-label, the oversized title "HARRY KANE'S TEAM vs AFC AJAX" at clamp(2.75rem, 9vw, 8.25rem) in light Jost, then "5 JAN 2027", "TALANTA STADIUM, NAIROBI" and "7:00 PM EAT" on one ruled line, with a single gold capsule Buy Tickets button pinned beneath. A soft gold floodlight sweep drifts across the seam on a 14s loop. On mobile the match block sits above two cropped portraits side by side at 50% width each. The same curved seam repeats as the divider between every section, so the confirmation ticket — a pearl-white card with a curved perforation line and a real QR code — feels like the same object as the hero.
Interaction Model: Animated Motion Tempo: cinematic Hero Dimensionality: webgl
Landing Hero Motion Brief
prefers-reduced-motion removes the floodlight sweep and parallax and leaves the dividers fully drawn; the hero, match block and CTA remain complete and readable.Landing Hero 3D Scene Brief — DIRECTION-DERIVED
A real-time WebGL/R3F hero subject: a single crafted curved gold ribbon — the seam — rendered as a luminous parametric surface sweeping between the two portrait planes, with a soft gold floodlight highlight drifting across it on a 14s loop. The scene shows the product's defining state: two real players divided by the arc that carries the match and the CTA. The ribbon is dimensional but never covers readable text or controls; the match block and Buy Tickets button sit above it in the DOM layer. Under reduced motion the ribbon holds a static composed pose with the highlight fixed.
clamp(...) to fit; no element covers readable text or controls.#F4F1EA on navy #0A1428 (~13:1) and muted #8FA0BC (~5.4:1); gold reserved for figures, labels and controls, never long body copy; prefers-reduced-motion removes the floodlight sweep and parallax and leaves dividers fully drawn.No completed page designs yet.
Completed design pages will appear here when they are ready to preview.
No completed page designs yet.
Completed design pages will appear here when they are ready to preview.
No comments yet. Be the first!