Skip to content

A React.js web application for a fictional Mediterranean restaurant in Chicago; Little Lemon, developed as a capstone project for the Meta Front-End Developer Certification.

Notifications You must be signed in to change notification settings

CameronCarlyon/LittleLemon

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

140 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Little Lemon Restaurant Website

A sophisticated, responsive Mediterranean restaurant website built with React, demonstrating advanced frontend development skills, modern web technologies, and meticulous attention to user experience design.

πŸš€ Live Demo

Experience the full application: cameroncarlyon.com/littlelemon


πŸ“‹ Project Overview

Little Lemon represents a complete modern web application for a family-owned Mediterranean restaurant. This project demonstrates proficiency in contemporary web development practices, advanced React patterns, bespoke iconography using industry-standard design tools, sophisticated animations using GSAP and Lottie, and enterprise-level code architecture.


πŸ› οΈ Technical Architecture

Core Technologies

  • Frontend Framework: React 18.2+ with functional components and hooks
  • Routing: React Router v6 with nested routing and dynamic navigation
  • Animations: GSAP (GreenSock) with timeline-based motion graphics + Lottie integration
  • Styling: Vanilla CSS with CSS custom properties, Flexbox, and Grid
  • Build System: Create React App with custom webpack optimisations
  • Testing: Jest and React Testing Library with unit and integration tests
  • Icons & Assets: Custom-designed iconography created in Illustrator/After Effects, exported as SVG/Lottie animations

Development Environment

  • Node.js: v18+ with npm package management
  • Version Control: Git with conventional commit messages
  • Code Quality: ESLint, Prettier, and custom linting rules
  • Performance: Lighthouse CI integration and Core Web Vitals monitoring

πŸ“ Project Structure

Root Directory Organization

LittleLemon/
β”œβ”€β”€ public/                          # Static assets and index.html
β”‚   β”œβ”€β”€ index.html                   # Main HTML template
β”‚   β”œβ”€β”€ manifest.json                # PWA configuration
β”‚   └── favicon.ico                  # Brand favicon
β”‚
β”œβ”€β”€ src/                             # Source code directory
β”‚   β”œβ”€β”€ components/                  # Reusable UI components
β”‚   β”‚   β”œβ”€β”€ Header.js                # Navigation with mobile menu
β”‚   β”‚   β”œβ”€β”€ Footer.js                # Site footer with links
β”‚   β”‚   β”œβ”€β”€ HeroButton.js            # GSAP-animated CTA button
β”‚   β”‚   β”œβ”€β”€ MenuFilters.js           # Dynamic filtering system
β”‚   β”‚   β”œβ”€β”€ MenuItem.js              # Individual menu item card
β”‚   β”‚   β”œβ”€β”€ Promotion.js             # Newsletter signup banner
β”‚   β”‚   β”œβ”€β”€ ReservationForm.js       # Multi-step reservation form
β”‚   β”‚   β”œβ”€β”€ Cart.js                  # Shopping cart with validation
β”‚   β”‚   └── __tests__/               # Component unit tests
β”‚   β”‚
β”‚   β”œβ”€β”€ pages/                       # Route-based page components
β”‚   β”‚   β”œβ”€β”€ Home.js                  # Landing page with hero video
β”‚   β”‚   β”œβ”€β”€ About.js                 # Restaurant information
β”‚   β”‚   β”œβ”€β”€ Menu.js                  # Menu with filtering & cart
β”‚   β”‚   β”œβ”€β”€ Reservations.js          # Booking system
β”‚   β”‚   β”œβ”€β”€ Cart.js                  # Checkout flow
β”‚   β”‚   └── SuccessPages/            # Confirmation pages
β”‚   β”‚
β”‚   β”œβ”€β”€ context/                     # React Context providers
β”‚   β”‚   β”œβ”€β”€ CartContext.js           # Shopping cart state management
β”‚   β”‚   └── MenuContext.js           # Menu data and filtering logic
β”‚   β”‚
β”‚   β”œβ”€β”€ assets/                      # Static assets and media
β”‚   β”‚   β”œβ”€β”€ images/                  # Optimized photography
β”‚   β”‚   β”‚   β”œβ”€β”€ hero-video.webm      # Hero background video
β”‚   β”‚   β”‚   β”œβ”€β”€ hero-video.mp4       # Video fallback
β”‚   β”‚   β”‚   β”œβ”€β”€ hero-poster.jpg      # Video poster image
β”‚   β”‚   β”‚   └── menu-items/          # Food photography
β”‚   β”‚   β”œβ”€β”€ icons/                   # Custom SVG iconography
β”‚   β”‚   β”œβ”€β”€ animations/              # Lottie JSON files
β”‚   β”‚   └── fonts/                   # Local .woff2 font files
β”‚   β”‚
β”‚   β”œβ”€β”€ utils/                       # Utility functions and helpers
β”‚   β”‚   β”œβ”€β”€ api.js                   # API simulation functions
β”‚   β”‚   β”œβ”€β”€ validation.js            # Form validation helpers
β”‚   β”‚   └── constants.js             # Application constants
β”‚   β”‚
β”‚   β”œβ”€β”€ App.js                       # Main application component
β”‚   β”œβ”€β”€ App.css                      # Application-wide styles
β”‚   β”œβ”€β”€ index.js                     # React application entry point
β”‚   └── index.css                    # Global CSS reset and variables
β”‚
β”œβ”€β”€ .github/                         # GitHub configuration
β”‚   β”œβ”€β”€ copilot-instructions.md      # Development guidelines
β”‚   └── workflows/                   # CI/CD automation
β”‚
β”œβ”€β”€ package.json                     # Dependencies and scripts
β”œβ”€β”€ README.md                        # Project documentation
β”œβ”€β”€ LICENSE.md                       # Custom licensing terms
└── .gitignore                       # Git exclusion rules

Key Component Architecture

Core Navigation Components

  • Header.js: Responsive navigation with GSAP mobile menu animations
  • Footer.js: Site-wide footer with contact information and social links

Interactive Features

  • MenuFilters.js: Dynamic filtering system with Lottie animations
  • MenuItem.js: Individual menu items with add-to-cart functionality
  • Cart.js: Complete shopping cart with form validation and checkout flow
  • ReservationForm.js: Multi-step reservation system with date/time selection

User Experience Components

  • HeroButton.js: Reusable CTA button with GSAP hover animations
  • Promotion.js: Newsletter signup with session-based dismissal
  • SuccessPages/: Confirmation pages for reservations and orders

State Management

  • CartContext.js: Shopping cart state with persistence and validation
  • MenuContext.js: Menu data management and filtering logic

✨ Advanced Features & Capabilities

🎨 Frontend & Design

  • Mobile-First Responsive Design: Pixel-perfect layouts across all device sizes
  • Advanced CSS Architecture: Component-scoped styling with maintainable methodologies
  • Bespoke Iconography: Designed and animated brand assets integrated seamlessly
  • Hero Background Video: Seamlessly looping, compressed .webm with .mp4 and poster .jpeg fallbacks
  • Accessible Typography: Local optimised .woff2 fonts replacing CDN bottlenecks

🍴 Interactive Functionality

  • Dynamic Menu Filtering: Sort items by dietary preference, calories, and price
  • Cart & Checkout Flow: State-managed shopping cart with validation
  • Reservation System: Multi-step reservation form with confirmation pages
  • FAQ Section: Interactive collapsible questions with smooth animations

β™Ώ Accessibility

  • ARIA attributes across interactive components
  • WCAG 2.2 AA compliance
  • Keyboard Navigation: Full accessibility without a mouse
  • Reduced Motion Support: Respects OS-level motion preferences

πŸ—οΈ Architecture & Performance

  • Component-Based Design: Reusable, composable React components
  • State Management: Context API with optimised re-rendering
  • Performance Optimisation: Lazy loading, code splitting, and bundle reduction
  • Cross-Browser Compatibility: Chrome, Firefox, Safari, Edge, iOS Safari, Android Chrome

πŸ“Š Performance & Quality Metrics

Google Lighthouse Scores (v2.0)

  • Performance: 100
  • Accessibility: 100
  • Best Practices: 100
  • SEO: 100

Technical Specifications

  • Bundle Size: < 500KB gzipped
  • Time to Interactive: < 2s on 3G networks
  • Core Web Vitals: Excellent ratings across metrics
  • Browser Support: 95%+ global browser compatibility

Testing Coverage

  • Unit Tests: Jest coverage for core functionality
  • Integration Tests: Validation of menu filtering, forms, and state management
  • Accessibility Tests: Screen reader + keyboard navigation support

πŸ† Technical Achievements in v2.0

  • βœ… Bespoke Iconography & Motion Graphics created in Illustrator + After Effects, exported via Lottie
  • βœ… Fluid, brand-consistent animations powered by GSAP timelines
  • βœ… Dynamic Filtering System (dietary, calorie, price-based)
  • βœ… Optimised Hero Video using .webm format with fallbacks
  • βœ… SEO & Social Media Optimisation (meta tags, OpenGraph, structured data)
  • βœ… Improved Accessibility with ARIA attributes + WCAG 2.2 AA compliance
  • βœ… Local Fonts in .woff2 format replacing CDN-hosted bottlenecks
  • βœ… Cross-Browser Performance Improvements validated against modern browsers
  • βœ… Unit Testing with Jest for reliability and maintainability

πŸ“ž Professional Contact

Cameron Carlyon – Frontend Developer & Designer


Note: This project is intended solely as a portfolio piece to demonstrate technical capabilities. The Little Lemon brand originates from the Meta Front-End Developer Certificate and has been adapted for educational and demonstration purposes. All original animated and static Little Lemon iconography are the intellectual property of Cameron Carlyon.

About

A React.js web application for a fictional Mediterranean restaurant in Chicago; Little Lemon, developed as a capstone project for the Meta Front-End Developer Certification.

Topics

Resources

Stars

Watchers

Forks