Online Booking App is a restaurant reservation system built with Symfony following the hexagonal architecture for better maintainability, scalability, and flexibility. The application allows users to reserve meals in advance, while restaurant administrators can manage bookings efficiently.
- 📅 Meal Reservations – Book meals at restaurants with real-time availability.
- 🔐 Secure Booking & Confirmation – Ensures reliability and fraud prevention.
- 📊 Admin Dashboard – Manage reservations, tables, and availability.
- 📍 Restaurant Search & Filtering – Users can find and book restaurants based on location, cuisine, and availability.
- 📢 Notifications & Reminders – Automatic alerts for upcoming bookings.
- 🏗 Hexagonal Architecture – Ensuring modularity, testability, and clean separation of concerns.
- Backend: Symfony 7.2 (PHP 8.2+)
- Architecture: Hexagonal
- Database: PostgreSQL
- API: RESTful API
- Frontend: API-ready (compatible with React, Vue, Angular)
- Testing: PHPUnit
- Deployment: Docker
Make sure you have the following installed:
- PHP 8.2+
- Composer
- Symfony CLI
- Docker (optional for containerized development)
-
Clone the repository:
git clone https://github.com/mth-bou/online-booking-app.git cd online-booking-app
-
Install dependencies:
composer install
-
Set up the environment variables:
cp .env.example .env
Update
.env
with your database credentials. -
Set up the database:
symfony console doctrine:database:create symfony console doctrine:migrations:migrate
-
Run the development server:
symfony server:start
-
Or without Symfony CLI:
php -S 127.0.0.1:3000 -t public
The application follows a hexagonal architecture, dividing the system into:
- Domain Layer: Business logic, entities, and domain services.
- Application Layer: Use cases and DTOs.
- Infrastructure Layer: Database, repositories, external services, and controllers.
This structure ensures a clean separation of concerns and facilitates testing and maintainability.
Contributions are welcome! Feel free to fork the repository and submit a pull request.
This project is licensed under the MIT License.
🚀 Efficient, scalable, and easy to extend. Enjoy coding! 😊