Interaction to Next Paint (INP)
How fast the page reacts to taps and clicks. Sub-100ms feels instant and keeps users moving through the funnel.
About
Client
Year
Scope of Work
View the live LetsGrub landing page
App Router framework powering SSR, Server Actions, and static generation with React 19 and native View Transitions.
Server Components for static content, client-side rendering only for interactive feature cards and animations.
End-to-end type safety from Drizzle ORM schemas to component props, with strict mode and type-aware linting.
Custom fluid token system with clamp-based typography, 4px spacing scale, and semantic color aliases.
All page transitions, scroll-linked reveals, marquee, feature card animations, and spring-physics carousel.
Type-safe ORM powering the whitelist pipeline with atomic upserts and conflict-safe duplicate detection.
Transactional email delivery with custom React Email components matching the neobrutalist brand identity.
Primary data store for the whitelist signup system, running v16 with Docker Compose for local dev.
Full-stack analytics tracking the entire signup funnel from form impression to email delivery.
Complete UI design, interactive prototyping, and component specs before development.
Edge Network hosting with global CDN, automatic preview deployments, and zero-config Next.js integration.
LetsGrub is a social dining app built on a simple premise: the best meals happen with company. Users discover nearby restaurants and people through an interactive map (the GrubVerse™), match with food-minded strangers, break the ice over chat or video, and meet at verified partner restaurants. Every real-world meetup earns rewards.
The product sits at the intersection of social networking, dining discovery, and local commerce, a space with no clear market leader. That's both the opportunity and the problem. When you're creating a new category, you can't rely on existing mental models. You have to build the understanding and the desire simultaneously.
Vean Digital was brought on to design and develop LetsGrub's pre-launch landing page: the single digital touchpoint responsible for converting cold traffic into waitlist signups and restaurant partner leads before a single line of the actual app was public. The page had to solve three problems at once:
The stakes were real. With 480+ restaurant venues already committed for launch, the landing page wasn't a nice-to-have. It was the primary tool for validating consumer demand and onboarding the partner pipeline that would make or break the platform's network effect.
Most pre-launch pages are glorified email forms with a gradient background. We took a different approach: build the landing page with the same technical ambition as the app itself. If LetsGrub's core promise is that meeting people over food should feel effortless and fun, the page had to feel effortless and fun.
The visual direction was rooted in a neobrutalist design language: bold borders, visible box-shadows, vibrant colors, and unapologetically chunky UI elements. This wasn't arbitrary. LetsGrub's audience is anyone who loves food and craves connection, whether that's someone new in town looking for their people, or a lifelong local tired of eating alone. For an app built entirely around real human connection, the design needed to:
That playfulness runs all the way down to the smallest interactions. Even the buttons feel alive. Hover over one and it gives slightly, like it's reacting to your touch. Click it and the content shifts down, scales subtly, and dims as if you're pressing a real physical button into a surface. It's a 3D press effect built purely in CSS and motion, no gimmicks. Try it yourself below.
We paired the display typeface Luckiest Guy (for playful, high-impact headings) with Inter (for clean body text), built a custom token system with brand blues, accent greens, and a complete semantic color palette, and designed buttons with visible shadow offsets that physically respond to hover and press states. The brand mascot, a genie character, appears throughout as a visual anchor reinforcing identity consistency.
The centerpiece of the page is a five-card interactive feature carousel, each card a fully animated micro-demo of a core app feature. These aren't static mockups. They're live, interactive UI sequences that give users a tactile sense of the product before it launches:

The result: visitors understand what LetsGrub does in 30 seconds of scrolling, not 30 seconds of reading. Each demo communicates a core product concept through direct interaction, eliminating the "what is this?" problem that kills most new-category launches.
Behind the signup form is a lead capture pipeline built to the same standard as a launched product. Every submission is validated in real time, duplicates are handled gracefully, and rate limiting prevents abuse without compromising user privacy.
Confirmation emails aren't generic templates. Each one is custom-designed to match the page's neobrutalist card style — visible borders, bold shadows, brand colors — so the first thing a new signup receives reinforces the product's identity. When a submission succeeds, a confetti burst fires. A small detail, but one that turns a transactional moment into a memorable one.
Every step of the signup funnel is instrumented: form visibility, first interaction, submission, outcome, and email delivery. LetsGrub has full conversion visibility from first impression to confirmed signup — the kind of data foundation most startups don't build until months after launch.
The page serves two distinct audiences without fragmenting the experience. The consumer journey flows naturally: hero, feature carousel, immersive text reveal, then waitlist signup. Restaurant partners encounter their own section lower on the page, with messaging that flips the value proposition entirely:
"Social media ads catch people while they're scrolling on the couch. LetsGrub puts your venue in front of people who are already out, hungry, and actively deciding where to eat right now."
This B2B messaging works because it follows the consumer experience. By the time a restaurant owner scrolls to "Capture The Local Crowd Before Your Competitors Do," they've already experienced the product as a user and understand why their venue should be on the platform. The 480+ partner venues committed pre-launch validate that this approach converts.
Heavy animation usually comes with a performance tax. We refused to pay it. The page ships five interactive demos, a full-screen text reveal, an infinite marquee, and spring-physics transitions — and still loads in under 1.5 seconds with zero layout shift.
Every image is served in modern formats and cached for fast repeat visits. The entire site is distributed globally through an edge network, so load times stay consistent regardless of where the visitor is.
Production Core Web Vitals from real user sessions, measured across LetsGrub's live deployment.
How fast the page reacts to taps and clicks. Sub-100ms feels instant and keeps users moving through the funnel.
Time until main content is visible. Every second of delay costs ~7% in conversions.
How quickly the first visual appears. Users who see content in under a second are far less likely to bounce.
How much the layout shifts while loading. Zero shift means every tap lands where the user intended.
Data from PostHog Analytics for Let’sGrub’s production deployment over the last 30 days.
The landing page shipped as a complete pre-launch engine, not a placeholder. Within weeks of going live, it validated LetsGrub's core hypothesis: people will sign up for a product they can feel, even before they can download it.
This project proved a core Vean principle: a pre-launch page isn't a holding page. It's the first product experience. For LetsGrub, that experience communicated a brand-new category, built trust in a product that didn't exist yet, and converted two distinct audiences through a single scroll.
01
02
03
04
Animation state machines, a full-stack signup pipeline, privacy-preserving analytics, and a feature flag system for zero-downtime launch.
Each of the five feature cards runs an explicit animation state machine with configurable timings. Hover and drag interactions interrupt the auto-cycle with debounced resume, so the animation picks back up naturally after the user stops interacting. Every animation respects prefers-reduced-motion throughout.
Notable implementations:
The signup form runs a production-grade lead capture pipeline built to the same standard as a launched product:
PostHog integration tracks every step of the signup funnel: form viewed (via IntersectionObserver), first keystroke, submission, success/failure, and email delivery status. Server-side event tracking in Server Actions supplements client-side instrumentation, with a reverse proxy to bypass ad blockers. Eight granular funnel events give full conversion visibility from first impression to confirmed signup.
Heavy animation doesn't have to mean heavy pages: