A sophisticated, responsive Mediterranean restaurant website built with React, demonstrating advanced frontend development skills, modern web technologies, and meticulous attention to user experience design.
Experience the full application: cameroncarlyon.com/littlelemon
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.
- 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
- 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
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
Header.js: Responsive navigation with GSAP mobile menu animationsFooter.js: Site-wide footer with contact information and social links
MenuFilters.js: Dynamic filtering system with Lottie animationsMenuItem.js: Individual menu items with add-to-cart functionalityCart.js: Complete shopping cart with form validation and checkout flowReservationForm.js: Multi-step reservation system with date/time selection
HeroButton.js: Reusable CTA button with GSAP hover animationsPromotion.js: Newsletter signup with session-based dismissalSuccessPages/: Confirmation pages for reservations and orders
CartContext.js: Shopping cart state with persistence and validationMenuContext.js: Menu data management and filtering logic
- 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
.webmwith.mp4and poster.jpegfallbacks - Accessible Typography: Local optimised
.woff2fonts replacing CDN bottlenecks
- 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
- 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
- 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: 100
- Accessibility: 100
- Best Practices: 100
- SEO: 100
- Bundle Size: < 500KB gzipped
- Time to Interactive: < 2s on 3G networks
- Core Web Vitals: Excellent ratings across metrics
- Browser Support: 95%+ global browser compatibility
- Unit Tests: Jest coverage for core functionality
- Integration Tests: Validation of menu filtering, forms, and state management
- Accessibility Tests: Screen reader + keyboard navigation support
- β 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
.webmformat with fallbacks - β SEO & Social Media Optimisation (meta tags, OpenGraph, structured data)
- β Improved Accessibility with ARIA attributes + WCAG 2.2 AA compliance
- β
Local Fonts in
.woff2format replacing CDN-hosted bottlenecks - β Cross-Browser Performance Improvements validated against modern browsers
- β Unit Testing with Jest for reliability and maintainability
Cameron Carlyon β Frontend Developer & Designer
- Portfolio: cameroncarlyon.com
- Email: chat@cameroncarlyon.com
- LinkedIn: linkedin.com/in/cameroncarlyon
- GitHub: github.com/CameronCarlyon
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.