A modern, responsive restaurant website showcasing premium dining experiences with elegant design and seamless user interactions.
- π± Fully Responsive β Optimized for mobile, tablet, and desktop
- π¨ Premium Design β Luxurious aesthetic with custom design tokens
- β‘ High Performance β Built with Vite for lightning-fast load times
- π Type Safe β Full TypeScript support for robust development
- π Smooth Animations β CSS animations with scroll-triggered effects
- π SEO Optimized β Meta tags and structured data ready
- π― Accessibility β WCAG compliant components
- π Menu Management β Dynamic menu with categories and filtering
- π Reservation System β Multi-step booking form
- πΈ Gallery β Masonry layout with lightbox viewer
- π§ Contact Integration β Ready for backend connection
| Technology | Purpose |
|---|---|
| React 18 | UI library with hooks |
| TypeScript | Type-safe development |
| Tailwind CSS | Utility-first styling |
| React Router v6 | Client-side routing |
| Vite | Lightning-fast build tool |
| Lucide React | Icon library |
| Intersection Observer | Scroll animations |
src/
βββ components/
β βββ layout/ # Layout wrappers (Navbar, Footer, Layout)
β βββ sections/ # Page sections (Hero, Featured Menu, CTA, etc.)
β βββ ui/ # Reusable components (MenuCard, ReviewCard, etc.)
βββ data/ # Static data & constants
β βββ menuData.ts
β βββ navigationData.ts
β βββ restaurantData.ts
βββ hooks/ # Custom React hooks
β βββ useScrollAnimation.ts
β βββ useScrollPosition.ts
βββ pages/ # Page components (one per route)
βββ styles/ # Global styles
βββ types/ # TypeScript interfaces
βββ App.tsx # Router configuration
βββ main.tsx # Application entry point
| Route | Page | Description |
|---|---|---|
/ |
Home | Hero section, featured menu, story, reviews, CTA |
/menu |
Menu | Filterable menu with all categories |
/gallery |
Gallery | Masonry layout with image lightbox |
/about |
About | Restaurant story, values, team, awards |
/contact |
Contact | Contact form + location map |
/reservations |
Reservations | Multi-step booking form |
- Node.js β₯ 16.x
- npm β₯ 8.x (or yarn/pnpm)
-
Clone the repository
git clone https://github.com/yourusername/restaurant-website.git cd restaurant-website -
Install dependencies
npm install
-
Start development server
npm run dev
The app will open at
http://localhost:5173 -
Build for production
npm run build
-
Preview production build
npm run preview
| Element | Font | Usage |
|---|---|---|
| Headings | Playfair Display | Display headings & titles |
| Body | Cormorant Garamond | Paragraphs & italic text |
| UI | DM Sans | Labels, buttons, UI text |
Primary Color: #c99618 (Gold)
Background: #1a1816 (Charcoal)
Text Primary: #faf6ef (Cream)
Text Secondary: #b0a89c (Warm Gray)
Accent: #e8dcc8 (Light Beige)
- xs: 4px | sm: 8px | md: 16px | lg: 24px | xl: 32px | 2xl: 48px
Create a .env.local file for local development:
VITE_API_URL=http://localhost:3000
VITE_MAPS_API_KEY=your_google_maps_key- Restaurant Info β Update
src/data/restaurantData.ts - Menu Items β Modify
src/data/menuData.ts - Navigation & Contact β Edit
src/data/navigationData.ts - Images β Replace placeholder URLs with actual photos
- Form Submissions β Connect to backend (Formspree, EmailJS, etc.)
- Maps β Add real restaurant coordinates
| Browser | Support |
|---|---|
| Chrome | β Latest |
| Firefox | β Latest |
| Safari | β Latest |
| Edge | β Latest |
| IE 11 | β Not supported |
npm run dev # Start development server
npm run build # Build for production
npm run preview # Preview production build
npm run lint # Run ESLint
npm run type-check # TypeScript type checkingThis project is licensed under the MIT License β see the LICENSE file for details.
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
For support, email support@maison.com or open an issue on GitHub.
Made with β€οΈ by Your Team