DEV Community

Cover image for Grandma's Recipes: Building a Cozy Recipe Landing Page with React & Vite
Thiago Fogaca
Thiago Fogaca

Posted on

Grandma's Recipes: Building a Cozy Recipe Landing Page with React & Vite

Frontend Challenge Perfect Landing Submission 🍲🥧

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

What I Built

Grandma's Recipes Site

Grandma's Recipes Site mobile

For this challenge, I created Grandma's Recipes, a responsive landing page inspired by handwritten family cookbooks and the comfort of homemade food.

Rather than building a traditional restaurant website, I wanted to capture the feeling of opening a recipe notebook that's been passed down through generations. The interface uses warm colors, subtle animations, illustrated recipe cards, and a notebook-inspired aesthetic to create a cozy experience.

Features

Recipe Gride

  • Responsive design
  • Light/Dark mode
  • Live recipe search
  • Category filters
  • "Surprise Me!" random recipe button
  • Favorite recipes saved with Local Storage
  • Accessible recipe modal
  • Scroll reveal animations using the Intersection Observer API
  • Fully responsive layout
  • Semantic HTML and accessibility best practices

Tech Stack

  • React 19
  • Vite
  • JavaScript
  • CSS
  • Local Storage
  • Intersection Observer API

Demo

Recipe Modal

Live Demo

GitHub Repository

GitHub logo thiagofogaca25 / Grandma_Recipes-Front_End_Challenge

Este Ă© um projeto enviado ao Frontend Challenge - Comfort Food Edition, Perfect Landing.

Grandma's Recipes

A single-page React app for a family recipe collection — built with React 19, Vite, and plain CSS (no UI libraries).

Run it

npm install
npm run dev
Enter fullscreen mode Exit fullscreen mode

Build for production:

npm run build
Enter fullscreen mode Exit fullscreen mode

Output goes to dist/, ready to deploy to GitHub Pages, Vercel, or Netlify.

What's inside

  • Hero with an illustrated, hand-pinned recipe index card as the signature visual element
  • 8 full recipes (ingredients + steps + a short story note each) across Breakfast, Lunch, Dinner, Dessert, Snack
  • Live search by title and category filters
  • "Surprise Me!" button that opens a random recipe from the current filter
  • Favorites, saved to localStorage
  • Recipe detail modal with full ingredients and steps, keyboard-accessible (Escape to close, focus trap on open)
  • Light/dark theme toggle, persisted to localStorage and defaulting to the system preference
  • Scroll-reveal animations via IntersectionObserver — no animation library
  • Fully responsive: 4 → 2 →…

Development Journey

My goal was to build a polished frontend experience while keeping the project lightweight and free of unnecessary dependencies.

The application includes complete recipe details displayed in an accessible modal, a dark mode with persistence, recipe search, category filters, favorites, and smooth scroll animations—all implemented without additional UI or animation libraries.

To speed up the creative process, I used AI as a supporting tool in a few specific areas:

  • Generating the recipe illustrations used throughout the interface.
  • Brainstorming fictional recipes and their content.
  • Helping organize ideas and structure the project during development.

The implementation itself—including the React components, application logic, styling, responsive layout, accessibility, state management, and overall frontend development—was built by me.

One of my goals was to spend less time creating assets and more time focusing on what this challenge evaluates most: frontend development, user experience, accessibility, and code quality. Using AI for visual assets and creative inspiration allowed me to dedicate more time to building and refining the application.

I also enjoyed keeping the project dependency-light. Features like the scroll reveal animations were built with the native Intersection Observer API, while favorites are persisted using Local Storage, resulting in a fast and simple application.

Before publishing, I completed a production build to verify everything compiled successfully and tested the interface in both light and dark themes.

This challenge was a great opportunity to practice React component architecture, responsive design, accessibility, and creating a polished user experience.

Thanks for reading! I'd love to hear your feedback.

Top comments (0)