DEV Community

Cover image for I Built a Noodle Shop Landing Page That Throws Food at Your Screen ๐Ÿœ
Sumit Mishra
Sumit Mishra

Posted on • Originally published at tastynoodles.vercel.app

I Built a Noodle Shop Landing Page That Throws Food at Your Screen ๐Ÿœ

Frontend Challenge Perfect Landing Submission ๐Ÿฒ๐Ÿฅง

This is a submission for Frontend Challenge - Comfort Food Edition, Perfect Landing

What I Built

I built SLURP! โ€” Tastiest Noodles on the Planet, a single-page landing page for an imaginary noodle shop. The comfort food theme is ramen and noodle bowls โ€” warm, slurpy, a little chaotic โ€” and I leaned into that with copy, color, and interactions that feel cozy and playful.

The hook: Chef Marco is so confident in her noodles that he literally throws a bowl at your screen. The hero CTA is "TRY AND CATCH THIS! ๐Ÿœ" โ€” miss the catch, get roasted, then explore the rest of the shop.

What's on the page:

  • Noodle Splash Hero โ€” full-screen SVG + CSS animation (sauce smears, flying noodle clusters, garnishes, a frosted-glass "SPLAAAT!" modal). Each replay seeds random extra strands in JavaScript so the splatter feels slightly different every time.
  • The Noodle Vault โ€” six signature bowls in a CollectUI-inspired card grid (Dragon Breath Chili Oil, Midnight Tonkotsu, Garlic Butter Dan Dan, Bombay Street Manchow, Golden Curry Udon, Peanut Crunch Yakisoba) with category filter chips and wavy noodle-strand SVG borders generated at runtime.
  • Build Your Bowl โ€” live CSS plate preview (broth color, thick/thin/broth-only noodles, six toppings). No image swaps โ€” just custom properties, positioned elements, and steam keyframes. Hit "That's My Plate" and it drops into the cart with a generated name.
  • Galactic Slurp โ€” story section with a Three.js spinning globe, alien rider, and twinkling stars (static fallback for prefers-reduced-motion and WebGL failures).
  • Pan India Store Finder โ€” 15 kitchens across 12 cities, searchable by city, area, or pincode, with Google Maps directions.
  • Slurp Squad โ€” eight fake testimonials from regulars who also failed to catch the noodles.
  • Social Feed Preview โ€” Reels/Stories/TikTok-style cards using the same self-hosted bowl photos (platform buttons are visual-only demos).
  • CollectUI Checkout Flow โ€” Alpine.js cart with sticky bar, mobile bottom sheet, and a full client-side order flow.

Stack: one index.html file โ€” HTML, Tailwind CSS (CDN), Alpine.js 3.14, Three.js 0.172, vanilla JS, Lucide icons, Chewy font. No build step. All images self-hosted in /assets. MIT licensed.

Source: github.com/Sumit884-byte/tasty_noodles

Demo

Live site: tastynoodles.vercel.app

Click TRY AND CATCH THIS! on the hero โ€” that's the centerpiece interaction. Append ?splash to the URL if you want to land directly in the splatter overlay.

Screenshots:

SLURP! hero โ€”

Build Your Bowl โ€” live CSS plate preview

Links:

Journey

Why noodles?

The DEV Frontend Challenge prompt was comfort food โ€” not "a nice restaurant site," but something that makes you hungry just thinking about it. Noodles felt right: warm broth, slurping sounds, late-night cravings. I wanted the page to feel like a brand, not a template โ€” chunky typography, an amber/orange/stone palette, and interactions that reward curiosity.

Process

I started with the splash hero because it set the tone. Pure SVG + CSS โ€” no canvas, no video, no Lottie. stroke-dashoffset for smears and strands, staggered keyframes for clusters and garnishes, JavaScript to seed random extra strands on each replay.

From there I built outward: menu cards with runtime-generated wavy SVG borders, the CSS-only bowl builder (my favorite section technically โ€” a well-structured DOM + custom properties replaced a lot of image-swap logic), then the Three.js globe with performance guardrails (IntersectionObserver to pause off-screen, visibilitychange for hidden tabs, adaptive geometry, pixelRatio cap, static fallback for reduced motion).

Alpine.js became the app's brain โ€” one slurpApp() component handles cart, custom plate builder, store locator, menu filtering, splash overlay, mobile nav, and checkout. Accessibility was baked in from the start: skip link, splash dialog with focus management, aria-pressed on builder chips, prefers-reduced-motion disabling splash/globe/steam animations, semantic landmarks, lazy-loaded images with explicit dimensions.

What I'm proud of

  • The splash animation โ€” elaborate, replayable, and still pure SVG/CSS
  • The CSS bowl preview โ€” instant, lightweight, infinitely recombinable
  • Wavy SVG card borders via attachNoodleFrame() โ€” micro-detail that makes the UI feel designed
  • Progressive enhancement for motion and WebGL โ€” fun features that don't punish users who prefer reduced motion or lack WebGL
  • Shipping everything in one file you can open locally without explaining npm

What I learned

Commit to the joke, but ship real craft. The copy is silly; underneath there's form validation, accessible modals, performance-conscious 3D, and responsive layouts.

CSS can do more than I thought. The bowl preview taught me that custom properties + keyframes can replace a lot of asset-heavy UI logic.

Constraints spark creativity. "Comfort food" pushed me toward warmth and interactivity instead of a generic SaaS layout.

Single-file projects are underrated. For a challenge submission or portfolio piece, one index.html felt like a superpower.

What's next?

This was a challenge submission, not a production restaurant platform โ€” but there's room to grow:

  • Extract the splash animation into a reusable Web Component
  • Add sound effects (with mute toggle)
  • Wire up real social links if SLURP! ever becomes a real brand
  • Globe tour of store cities with lat/lon markers

For now, I'm happy with what I shipped: a page that makes people smile, teaches a few frontend tricks, and proves that comfort food deserves better than a stock photo and an "Order Now" button.

If you're participating in the challenge โ€” or you've built something fun for it already โ€” drop a link in the comments. I want to see your comfort food takes.

And if you try to catch the noodles... good luck. Chef Marco doesn't believe in you. ๐Ÿœ


Built with too much chili oil and not enough sleep. MIT licensed โ€” see LICENSE.

Top comments (0)