Travis Rettenmaier
Travis “The Rattlesnake” Rettenmaier played professional tennis for a decade before pickleball existed as a career. Now he is on the PPA Tour and co-owns the Major League Pickleball team he plays for. The site carries all of that — the tennis past, the pickleball present, the ownership stake and the media presence — without reading like four different people.
- Role —
- Design and build, end to end.
- Timeline —
- June 2026 — ongoing
- Stack —
- Next.js, React, Vercel, Schema.org structured data
The problem
We met through Varun, a mutual pickleball friend, and had already built a video-editing backend together before the subject of his website came up. Travis had a site. It was not working for him. Nobody briefed me — I asked what was going on with it, and then proposed replacing it with something that treated him as a brand rather than a player profile: the tour career, the team ownership and the gear all in one place, with a way for people to actually reach him.
What I built
The spine of the site is the turn — two years at UCLA at sixteen, a pro tennis career as a doubles specialist with a career-high world No. 57 in 2010, then a hard left into pickleball, where he turned pro in 2022. That is the thing that makes him different from every other player on tour, so it leads rather than sitting in a bio paragraph nobody scrolls to.
Around that: a stats block (height, handedness, base, college, both turn-pro dates, the tennis ranking), a ventures section splitting the Florida Smash ownership from his PPA Tour play, a gear shop, a gallery wired to his Instagram, and a contact form that goes straight to his inbox.
I proposed the structure and drove the creative direction; Travis approved the designs and the copy. What started as a list of pages — home, about, services, contact, a blog — ended up as one page you scroll, with gear as the only separate route. An athlete’s site has one job, and making someone navigate to find the thing they came for is a good way to lose them.
Decisions worth explaining
The engineering, for anyone who wants it.
The animations fail open
The page reveals itself as you scroll — the hero name, the section blocks, the gallery tiles all animate in. Anything animated in is hidden until something tells it to appear, and that is a bet on JavaScript running. If the bet loses, a visitor gets a blank page rather than an unanimated one. So the site ships a <noscript> block that force-reveals the animated elements: opacity back to 1, transforms cleared. Without JavaScript the page is simply a static page. For an athlete whose site gets opened on conference wifi and in stadium dead zones, degrading to plain beats degrading to empty.
Structured data so search engines know who he is
The site publishes Schema.org Person data — the nickname as alternateName, the job title, his home base, and sameAs links pointing at his PPA Tour athlete page, his Major League Pickleball player page and his Instagram. That is what lets Google connect travrett.com to the Travis Rettenmaier it already knows about from the tours, rather than treating it as an unrelated page that happens to share a name. For an athlete competing for search results against tournament sites and news coverage, being identified as the same entity is most of the battle.
A shop with no store
The gear section lists paddles, bags and training kit with prices, and every link is an affiliate link to Pickleball Central carrying his code. There is no cart, no checkout, no inventory and no payment integration. He gets a revenue path and a genuinely useful page for the people who ask what he plays with; and there is no storefront to operate, no stock to reconcile and no customer service to answer.
The gallery updates itself
The gallery pulls his six most recent Instagram posts rather than holding hand-picked images. A pro athlete already posts constantly — match clips, travel, the mic work — and any gallery he has to remember to update is a gallery that goes stale by the third tournament. Wiring it to the feed he already uses means the site stays current as a side effect of him doing what he was doing anyway. It also keeps the page static: the posts are fetched in the browser, so the HTML still prerenders and the feed is the only thing that has to be live.
Static by default
The site prerenders to static HTML on Vercel and revalidates on a short window rather than rendering per request. Nothing on the page needs to be personalised, and the traffic pattern for a pro athlete is spiky — a good match, a viral clip, a tournament run. Static pages absorb that without a server to fall over, and the first byte is already sitting on the CDN when the spike arrives.
← All work“I am very happy with the website. It is exactly what I wanted and it is working great. I am very happy with the results.”