A modern, responsive web application for Little Lemon restaurant featuring online table reservations, dynamic booking management, and a seamless user experience.
- π½οΈ Online Table Reservations - Easy booking system for restaurant tables
- π Dynamic Booking Times - Available time slots based on date selection
- π₯ Guest Management - Select number of guests and special occasions
- β Form Validation - Robust client-side validation for booking details
- π± Fully Responsive Design - Works perfectly on desktop, tablet, and mobile devices
- π Booking Confirmation - Instant confirmation after successful reservation
- π§ͺ Comprehensive Testing - Unit tests with React Testing Library
- π¨ Modern UI - Clean and user-friendly interface
- Node.js (version 14 or higher)
- npm or yarn
# Clone the repository
git clone https://github.com/jwafaDev/Restaurant-Little-Lemon.git
# Navigate to the project folder
cd Restaurant-Little-Lemon
# Install dependencies
npm install# Start the development server
npm start
# The application will automatically open at http://localhost:3000The app is now ready to use! You can start making table reservations.
# Create an optimized production build
npm run build
# This creates a `build` folder optimized for production deployment# Run the test suite
npm test
# Run tests in watch mode
npm test -- --watch| Technology | Version | Purpose |
|---|---|---|
| React | ^19.2.7 | UI library and component framework |
| React Router | ^7.18.0 | Client-side routing and navigation |
| React Testing Library | ^16.3.2 | Component testing utilities |
| Jest | - | Test runner (included with React Scripts) |
| JavaScript (ES6+) | - | Programming language |
| HTML5 | - | Markup language |
| CSS3 | - | Styling and responsive design |
- JavaScript: Primary language
- HTML5: Markup
- CSS3: Styling
Restaurant-Little-Lemon/
βββ public/ # Static files
β βββ index.html # Main HTML file
βββ src/ # Source code
β βββ components/ # React components
β β βββ Header.js # Header navigation
β β βββ Nav.js # Navigation bar
β β βββ Footer.js # Footer section
β β βββ BookingForm.js # Reservation form
β β βββ BookingPage.js # Booking page
β β βββ ConfirmedBooking.js # Confirmation page
β β βββ ...
β βββ styles/ # CSS files
β βββ App.js # Main App component
β βββ App.test.js # App tests
β βββ index.js # React entry point
βββ package.json # Project dependencies
βββ package-lock.json # Dependency lock file
βββ README.md # Project documentation
- Navigate to the Reservations or Booking section
- Select your desired date and time
- Specify the number of guests
- Choose an occasion (if applicable)
- Enter your personal details
- Submit the form
- Receive a booking confirmation
The booking form includes validation for:
- Valid date selection (no past dates)
- Available time slots
- Guest count (typically 1-10)
- Required personal information
Handles user input for reservation details with validation and error handling.
Main page for managing reservations with date/time selection.
Displays confirmation details after successful booking.
Uses React Router for smooth navigation between different pages.
| Script | Command | Description |
|---|---|---|
| Start | npm start |
Runs the app in development mode on port 3000 |
| Build | npm run build |
Creates an optimized production build |
| Test | npm test |
Launches the test runner in interactive mode |
| Eject | npm run eject |
Ejects configuration (irreversible) |
Note: npm run eject is a one-way operation. Once you eject, you can't go back!
- Chrome (latest)
- Firefox (latest)
- Safari (latest)
- Edge (latest)
The application is built with a mobile-first approach ensuring:
- Optimal viewing on mobile devices (320px+)
- Tablet-friendly layouts (768px+)
- Desktop optimization (1024px+)
Contributions are welcome! To contribute:
- Fork the repository
- Create a feature branch (
git checkout -b feature/YourFeature) - Make your changes
- Write or update tests as needed
- Commit your changes (
git commit -m 'Add YourFeature') - Push to the branch (
git push origin feature/YourFeature) - Open a Pull Request
- Follow React best practices and hooks patterns
- Write meaningful commit messages
- Test your changes with
npm test - Ensure responsive design works on all screen sizes
- Keep components small and focused
If port 3000 is already in use:
PORT=3001 npm startIf you encounter dependency conflicts:
rm -rf node_modules package-lock.json
npm installMake sure Jest is properly configured:
npm test -- --clearCache
npm testThis project is licensed under the MIT License. See the LICENSE file for details.
This project was developed as part of the Meta Front-End Developer Capstone Project, demonstrating proficiency in:
- React development
- Component-based architecture
- Client-side routing
- Form handling and validation
- Responsive web design
- Testing and quality assurance
Potential features for future versions:
- Backend integration for persistent data
- User authentication and accounts
- Email confirmation notifications
- Admin panel for managing reservations
- Payment integration
- Advanced filtering and search
- Cancellation and modification options
jwafaDev - Visit Profile
For questions, issues, or suggestions, feel free to:
- Open an issue on the GitHub repository
- Contact via GitHub
Created with β€οΈ using React
Enjoy using Little Lemon Restaurant Reservation App! π