Let'sGrub Logo

LetsGrub Landing Page Design & Development

Let'sGrub Project Thumbnail
Let'sGrub Hero Section
Let'sGrub Hero 2 Section
Let'sGrub Features Section
Let'sGrub Our Goal Section
Let'sGrub Partners Section
Let'sGrub Footer Section

About

LetsGrub Landing Page Design & Development

Client

LetsGrub

Year

2026

Scope of Work

Web Design & Development

We built a high-conversion pre-launch landing page for LetsGrub - a social dining app turning solo meals into shared experiences.
letsgrub.app

Live Website

View the live LetsGrub landing page

Technologies Used

Frontend

Next.js 16 icon
Next.js 16

App Router framework powering SSR, Server Actions, and static generation with React 19 and native View Transitions.

React 19 icon
React 19

Server Components for static content, client-side rendering only for interactive feature cards and animations.

TypeScript icon
TypeScript

End-to-end type safety from Drizzle ORM schemas to component props, with strict mode and type-aware linting.

Tailwind CSS v4 icon
Tailwind CSS v4

Custom fluid token system with clamp-based typography, 4px spacing scale, and semantic color aliases.

Motion React icon
Motion React

All page transitions, scroll-linked reveals, marquee, feature card animations, and spring-physics carousel.

Backend

Drizzle ORM icon
Drizzle ORM

Type-safe ORM powering the whitelist pipeline with atomic upserts and conflict-safe duplicate detection.

Resend icon
Resend

Transactional email delivery with custom React Email components matching the neobrutalist brand identity.

Database

PostgreSQL icon
PostgreSQL

Primary data store for the whitelist signup system, running v16 with Docker Compose for local dev.

Analytics

PostHog icon
PostHog

Full-stack analytics tracking the entire signup funnel from form impression to email delivery.

Design

Figma icon
Figma

Complete UI design, interactive prototyping, and component specs before development.

DevOps

Vercel icon
Vercel

Edge Network hosting with global CDN, automatic preview deployments, and zero-config Next.js integration.

From Concept to Waitlist: How Vean Built a Pre-Launch Engine for a Social Dining Startup


I. The Challenge: Making a New Category Feel Inevitable


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:

  1. Category Education: Explain what "social dining" is and why it matters, without feeling like a pitch deck. The concept had to click in under 10 seconds.
  2. Two-Sided Conversion: A single page needed to convert both consumers (waitlist signups) and restaurant partners (partnership inquiries), two audiences with fundamentally different motivations.
  3. Pre-Launch Credibility: Build trust for a product that doesn't exist yet. No app store reviews, no user testimonials, no revenue numbers. The landing page itself had to be the proof of quality.


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.


II. The Solution: Show the Product Before It Ships

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.


A. Neobrutalist Identity: Playful Trust

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:

  • Stand apart from the sea of minimal SaaS landing pages
  • Signal personality and warmth, which is essential for a product about sharing a meal with someone new
  • Feel approachable and inviting to a broad audience, from college students to working professionals


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.

Interaction Demo
Hover & Press

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.

B. Interactive Feature Demos: Don't Tell, Show

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:

  • "Eat Now or Plan Later" features an interactive calendar with a "Quick Meet" button and real-time date rendering, showing users the instant-match vs. scheduled-dinner flow.
  • "Find Your Flavor" presents a custom SVG map with animated user avatars, restaurant pins with cuisine emoji, and an iOS-style location indicator complete with direction cone and pulse ring. This single card communicates the entire GrubVerse concept without a word of explanation.
  • "Break the Ice" is a split-screen comparison slider between chat and video call interfaces, with an auto-cycling animation sequence that pauses on hover and drag. Full chat message animation loops demonstrate the communication flow.
  • "Scan QR, Earn Perks" runs a two-phone animation with a 4-stage state machine (idle, scanning, aligned, notification) and spring physics for phone positioning. Demonstrates the proof-of-meetup verification and rewards system.
  • "Safety Baked In" shows an SOS alert screen with staged animation: ripple pulse, bottom sheet slide-in, sequential option highlighting. It addresses the critical trust question ("Is it safe to meet strangers?") through interaction rather than copy.
Let'sGrub Features Section
Let'sGrub Features Section

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.


C. Built to Convert: Not Just an Email Field

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.


D. Two Audiences, One Page

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.


E. Fast Despite Everything

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.

Speed Vitals

Production Core Web Vitals from real user sessions, measured across LetsGrub's live deployment.

Interaction to Next Paint (INP)

88ms

How fast the page reacts to taps and clicks. Sub-100ms feels instant and keeps users moving through the funnel.

Largest Contentful Paint (LCP)

1.45s

Time until main content is visible. Every second of delay costs ~7% in conversions.

First Contentful Paint (FCP)

822ms

How quickly the first visual appears. Users who see content in under a second are far less likely to bounce.

Cumulative Layout Shift (CLS)

0ms

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.

III. The Outcome: Pre-Launch That Converts

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.


  • 480+ restaurant venues committed before the app launched, driven entirely through the landing page's B2B partnership funnel. The page didn't just capture interest; it closed deals.
  • Category comprehension without explanation. Five interactive demos replaced pages of copy. Users intuitively understood GrubVerse, Quick Meet, QR verification, and the safety model through direct interaction. The concept landed without a pitch deck.
  • Two audiences, one conversion path. Consumers joined the waitlist. Restaurant owners submitted partnership inquiries. Both funnels operated from a single-scroll experience, with neither feeling secondary.
  • Zero-friction launch transition. One environment variable flips the entire page from pre-launch waitlist to post-launch app store downloads. No code changes, no redeployment rush. The page was built to evolve with the product.


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.

Results

01

480+
Venues Pre-Committed
Restaurant partners signed before the app launched, validated entirely through the landing page's B2B funnel

02

5
Interactive Product Demos
Live, hands-on feature previews that communicate the full product concept in 30 seconds of scrolling

03

2
Audiences Converted
Consumer waitlist and restaurant partnerships served through distinct messaging funnels on a single page

04

0
Code Changes to Launch
One environment variable switches the full experience from waitlist capture to app store downloads
Under the Hood

Animation state machines, a full-stack signup pipeline, privacy-preserving analytics, and a feature flag system for zero-downtime launch.

Animation Architecture

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:

  • "Scan QR, Earn Perks" uses a 4-stage state machine (idle, scanning, aligned, notification) with spring physics for phone positioning
  • "Break the Ice" runs an auto-cycling animation sequence between chat and video interfaces, with pause-on-hover and drag interruption
  • "Safety Baked In" uses staged animation: ripple pulse, bottom sheet slide-in, and sequential option highlighting
  • GPU-accelerated infinite marquee with ResizeObserver-based copy calculation, contain: layout style paint, and content-visibility: auto
  • Scroll-linked text reveal using Motion React's useScroll and useTransform for a full-screen sticky word-by-word reveal tied to scroll progress

Waitlist Pipeline

The signup form runs a production-grade lead capture pipeline built to the same standard as a launched product:

  • Server Action pipeline: Zod validation, email normalization, SHA-256 IP hashing (truncated, salted) for privacy-preserving abuse detection, atomic PostgreSQL upserts via Drizzle ORM with conflict-safe duplicate handling
  • Custom confirmation emails: Hand-built with React Email components and delivered via Resend. Neobrutalist card style with visible borders and shadows, crafted for accessibility and consistent rendering across all major email clients
  • Celebration UX: Confetti burst on successful signup with animated state transitions (idle, submitting, success, error) keeping the user informed without layout shifts

Full-Stack Analytics

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.

Performance & Launch System

Heavy animation doesn't have to mean heavy pages:

  • AVIF/WebP images with 30-day cache TTL and Next.js image optimization for all food photography and app mockups
  • Feature flag architecture swaps the entire page between pre-release (waitlist) and post-launch (app store download) modes via a single environment variable, with all content strings centralized in a typed content store
  • Deployed on Vercel with Edge Network distribution, automatic preview deployments for every branch, and zero-config Next.js build integration