Select Interactive
Tech Stack & Tools4 min read

Building select-interactive.com: How We Put Our Own Stack to the Test

A look behind the curtain at how we designed and built our own website using AI-powered prototyping, Claude Code, Cursor, the TanStack ecosystem, Shadcn/UI, Tailwind CSS, TypeScript, and Firebase.

Jeremy Burton

Partner, Select Interactive

When we sat down to rebuild select-interactive.com, we made a deliberate decision: use this as an opportunity to validate the very approach we advocate for our clients. That meant assembling a stack built around speed, type safety, and AI-assisted workflow from day one, and documenting what it actually felt like to ship with it.

The result is a site that reflects how we believe modern web products should be built. Here's a breakdown of the tools that made it happen.

Design Prototyping with Claude Design

We started every major page and component with Claude Design, Anthropic's AI-assisted design prototyping tool. Rather than spending hours in traditional tools iterating on layouts before writing a line of code, Claude Design let us rapidly explore visual direction, layout structures, and component hierarchy in conversation.

The output isn't production-ready code, but that's not the point. Claude Design compressed the gap between concept and feedback loop. We could explore three or four layout directions in the time it would previously take to fully flesh out one. That speed directly improved the quality of our final decisions.

By the time we moved to implementation, we had high-confidence directional decisions, not exploratory guesses, which means less rework and tighter alignment between intent and output.

AI-Assisted Development: Claude Code and Cursor

On the engineering side, we pair Claude Code and Cursor as our primary development tools. Claude Code, Anthropic's CLI-based coding assistant, handles heavier agentic tasks: implementing full features from a spec, refactoring across files, enforcing code standards, and reviewing complex logic. Cursor acts as our day-to-day coding environment, with inline AI assistance deeply integrated into the editor.

The workflow is genuinely different from traditional development. Rather than writing every line, we spend more time describing intent, reviewing output, and directing implementation. That shift doesn't reduce our engagement with the code, it raises it. We catch more edge cases, review architectural decisions more carefully, and maintain higher-level awareness of the system as a whole.

Strict code standards, automatically enforced

To keep AI-assisted output consistent and high quality, we lean on Ultracite, a zero-config Biome preset that enforces linting and formatting across the entire codebase. With AI writing a larger share of the code, automated quality gates become even more important. Ultracite catches style drift, accessibility issues, and common anti-patterns before they make it to review.

The TanStack Ecosystem: Start, Form, and AI

The application layer runs on TanStack Start, a full-stack React framework built on top of TanStack Router. It gives us file-based routing, server functions, streaming SSR, and deep TypeScript integration, without the abstractions of heavier frameworks that obscure what's actually happening at the network layer.

Forms are handled by TanStack Form, which brings the same type-safe, headless philosophy to form state management. Validation, async submission, and field-level error handling all work without any runtime magic, just TypeScript types that give you confidence at every layer.

The newest addition to the ecosystem is TanStack AI, which provides composable primitives for building AI-powered interfaces, streaming responses, conversation state, and model integration, in the same headless, framework-agnostic style the TanStack family is known for.

UI Foundation: Shadcn/UI, Tailwind CSS, and TypeScript

Our UI is built with Shadcn/UI, a collection of accessible, composable components built on Radix UI primitives. The key insight of Shadcn is that you own the components: they live in your codebase and can be modified, extended, or replaced without fighting a third-party library. That ownership matters when designs need to deviate from defaults.

Styling is handled by Tailwind CSS v4, which moves configuration directly into CSS and eliminates the separate config file. Utility classes map directly to design tokens, fast to work with, predictable in output, and the new v4 architecture is meaningfully leaner than its predecessor.

Everything is written in TypeScript, from data models to API boundaries to component props. TypeScript pays its largest dividend at scale, when the codebase is large enough that you can't hold it all in your head. Even on a project like this, the safety net it provides (especially when working alongside AI tooling) makes the investment worthwhile from day one.

Accessibility built in

Shadcn/UI's Radix primitives handle many accessibility behaviors out of the box, focus trapping, ARIA attributes, keyboard navigation, which lets us spend our accessibility effort on semantic structure and UX writing rather than reimplementing primitives we'd otherwise have to build ourselves.

Infrastructure: Firebase

On the infrastructure side, we use Firebase, Google's application development platform. Firebase handles our backend data and service needs in a way that keeps operational overhead minimal, giving us more time to focus on product and less time managing infrastructure.

The combination of a well-typed frontend stack and Firebase's managed backend keeps our footprint lean. We're not running servers we don't need to run, and we're not building plumbing that already exists.

What We Learned

Building our own site with this stack confirmed what we tell clients: the quality of the tooling directly affects the quality of the output. AI-powered prototyping compresses the design phase. AI-assisted development shifts engineering effort toward higher-level thinking. Type safety catches classes of bugs before they exist. Owned UI components adapt to designs instead of constraining them.

We didn't pick these tools because they're new, we picked them because they removed friction at the exact points where friction costs the most. If you're planning a new web product or rebuilding an existing one, we'd be glad to talk through how this stack might fit your goals.

Work With Us

Have a project in mind?

We build the web’s most demanding applications. Let’s talk about yours.

Get in Touch