Laravel Developer for Boat Rental Website with API Integration

Job ID: 39082511

Budget: €30 – €250 EUR

Project Specification for a Boat Rental Website Using Laravel
1. General Project Description
Project Title:
Development of a Boat Rental Website
Overview:
We require a web platform built with Laravel that allows customers to rent boats (yachts, sailing vessels, etc.). The website should enable customers to search for available boats, view detailed specifications (including images, dimensions, manufacturer details, etc.), make reservations for specific dates, and complete the rental process online. In addition, the system must automatically synchronize its local database with data from the MMK Booking Manager API, ensuring that data (e.g., countries, bases, boats, reservations) is up-to-date.
________________________________________
2. Business Functions & Features
2.1 Customer-Facing Features
• Boat Search:
Customers can search for boats using various criteria such as location, dates, boat type, etc.
• Boat Details:
Each boat should have a detailed page displaying specifications, photos, dimensions, and related information (such as associated base, company, and shipyard details).
• Reservations:
Customers can select dates, make reservations, and, if applicable, complete payments directly through the site.
• User Account Management:
Customer registration and login, with access to reservation history and profile management.
2.2 Administrative (Back-End) Features
• Boat & Reservation Management:
Admins can add, edit, or delete boat listings, manage reservations, and monitor payment statuses.
• Data Synchronization with MMK API:
The system must automatically synchronize data (such as countries, bases, boats, reservations) with the MMK Booking Manager API.
• Reports & Analytics:
The admin panel should provide reports on reservations, boat availability, and financial data.
________________________________________
3. Technical Specifications & Requirements
3.1 Technology Stack
• Backend:
Laravel (version 8 or later)
• Database:
MySQL (or SQLite, as per development environment) using Laravel migrations.
• Frontend:
Blade templates for views; optionally, JavaScript frameworks (React/Vue) may be used for dynamic components.
• API Integration:
Integrate with the MMK Booking Manager API (refer to the Swagger documentation: MMK BM API Swagger).
3.2 Database Schema
The database should include the following tables with proper relationships and foreign key constraints:
• world_regions:
Defines global regions.
• countries:
Contains countries, each linked to a world region.
• sailing_areas:
Lists sailing areas that can be associated with bases.
• bases:
Contains bases (e.g., harbors or headquarters) with details such as city, country, address, and geographic coordinates.
• base_sailing_areas:
A many-to-many table linking bases to sailing areas.
• companies:
Contains companies (such as boat owners or managers).
• shipyards:
Contains shipyard details.
• yachts:
Stores boats with detailed information (model, year, dimensions, etc.) and foreign keys linking to bases, companies, and shipyards.
• skippers:
Stores details about boat captains/guides.
• customers:
Contains customer data for users who make reservations.
• bookings:
Links customers with boats for specific dates (includes start and end dates and reservation status).
Each migration must create these tables with the correct fields (including a unique API identifier, e.g., api_id, where applicable) and define all necessary relationships.
3.3 MMK Booking Manager API Integration
• Service Class:
Create a service class (e.g., MMKBookingService) in the app/Services folder. This class should include methods to retrieve data (such as getCountries, getBases, getYachts, etc.) using Laravel’s HTTP client.
• Artisan Commands:
Develop Artisan commands (for example, SyncMMKCountries, SyncMMKYachts, etc.) that will call the service methods and synchronize the data in the database using Eloquent’s updateOrCreate method.
• Scheduler:
Set up the Laravel Scheduler (in app/Console/Kernel.php) to run these commands periodically (e.g., every 5 minutes) for automatic data synchronization.
Related categories: PHP JavaScript MySQL Laravel React.js Framework