A modern, responsive café menu experience built with Next.js 15, TypeScript, and Tailwind CSS.
This project recreates the digital menu experience for Cardamom House, a fictional brunch café in Lisbon. The application focuses on clean design, accessibility, responsive layouts, smooth interactions, and a premium user experience.
-
Responsive Hero Section
-
Open / Closed Status Indicator
-
Today's Special Banner
-
Menu Categories
- Brunch
- Sandwiches & Toasties
- Drinks
- Sides & Extras
-
Active Navigation Highlight
-
Search Menu Items
-
Dietary Filters
- All
- Vegetarian
- Gluten Free
-
Sold Out State Handling
-
Opening Hours Section
-
Footer with Contact Information and Map
-
Mobile-Friendly Navigation
- Sticky Navigation Bar
- Smooth Scrolling Between Sections
- Search Integrated Into Navbar
- Hover Animations on Menu Cards
- Interactive Menu Cards
- Quantity Selector
- Mock Order Placement
- Random Token Generation
- Semantic HTML Structure
- Keyboard Navigable Navigation
- Focus States
- Responsive Design
- Accessible Form Controls
- Premium Café Inspired UI
- Warm Color Palette
- Responsive Card Layouts
- Food Image Support
- Smooth Transitions & Micro Interactions
- Next.js 15
- React
- TypeScript
- Tailwind CSS
- Lucide React Icons
- Tailwind CSS
- Custom Animations
- Responsive Design Principles
src/
├── app/
│ ├── page.tsx
│ └── globals.css
│
├── components/
│ ├── Navbar.tsx
│ ├── Hero.tsx
│ ├── SpecialBanner.tsx
│ ├── MenuContent.tsx
│ ├── MenuSection.tsx
│ ├── MenuItem.tsx
│ ├── HoursBlock.tsx
│ ├── Footer.tsx
│ └── Tag.tsx
│
├── data/
│ └── menu.ts
│
├── hooks/
│ └── useActiveSection.ts
│
├── lib/
│ └── menuHelpers.ts
│
└── types/
└── menu.ts
The application is optimized for:
- Mobile Devices
- Tablets
- Laptops
- Desktop Screens
The application supports the following states through URL parameters:
//?state=closed/?state=special-sold-outgit clone <repository-url>npm installNEXT_PUBLIC_EMAILJS_SERVICE_ID
NEXT_PUBLIC_EMAILJS_TEMPLATE_ID
NEXT_PUBLIC_EMAILJS_PUBLIC_KEYnpm run devnpm run buildnpm start- Order placement is a frontend-only mock implementation.
- Token numbers are randomly generated for demonstration purposes.
- Menu data is stored locally in a TypeScript data file.
- Images fall back to a placeholder when unavailable.
- Backend Order Management
- Real-Time Kitchen Queue
- User Authentication
- Online Payments
- Multi-Language Support
- Reservation System
- CMS Integration
- Admin Dashboard
This project was created as part of a frontend engineering assignment and is intended for educational and evaluation purposes.