I need a website to be built for multi-tenants to support companies to optimize their vehicle routes and display the results on maps and export them to CSV and Excel files.
You are not required to write programs to optimize the routes. This software is available. You are required to interface with it.
You are not required to write the software that displays maps. You are required to embed it in the application and communicate with it.
The website should allow users to perform the following activities:
1. Subscribe to and renew services
2. Upload data in Excel or CSV and store it under their account to access when optimizing
3. Download optimization results in Excel or CSV
4. Perform unattended optimization by calling REST APIs, uploading files, triggering the optimization and downloading results
7. The page that displays the results in a map will display vehicles and orders on those vehicles. The user is allowed to drag and drop orders to move them from one vehicle to another or move unassigned orders to specific vehicles. Vehicles are displayed in a list and orders are displayed in another list. The orders list is linked to vehicles. When a vehicle is selected the orders assigned to the list display. Orders unassigned will be displayed when the "unassigned" virtual vehicle is selected.
8. The user should be able to show and hide specific vehicles, routes and stops from the map.
9. Need a function to generate a report in html, pdf, and excel with a map with the route and stops for a specific truck along with driving directions and a list of orders and stop sequences. The list should show driving time, wait time, and other properties to be provided at a later stage.
10. Need a page to update the status of deliveries and truck positions using imported GPS data from the trucks using REST APIs. This data should update the position of the truck on the map. A summary of progress of all trucks and another for the selected truck should be visible.
11. The application should track per tenant, all actions performed, including, user name or id (multiple users can be associated with multiple tenants), date and time, action performed, type of action, duration for action to complete, etc...
All authentication and authorization should be performed on the server using the PHP APIs.
Data structures will be provided later during the project.
Laravel and PHP should be used to develop the APIs and web application.
Use Bootstrap is required for the front-end display.
All code should be commented with the purpose of each class, function, and critical flows or conditions within a function or if a function has more than 20 lines of code.
MySQL will be used to store all data, user data and application configuration, except the uploaded files.
Uploaded files will be stored in directory structures matching the tenant name, the username and the function (import, export, report, etc...)
TDD should be used.
Application development should follow agile principles and testing by us should be done in parallel with development after the framework is setup.
Communication with the optimization engine will occur via REST APIs. The response from the optimization engine will be in REST format.
Data capture from GPS devices will be provided by calling a REST API in the application you are developing. It will have a timestamp, truck id, longitude and latitude data.
Orders, customer addresses, and truck information will be sent in Excel files or CSV files. These will be uploaded by users of the system.
You will use the latest OpenLayers library to draw maps from Google in the web page and to manipulate trucks and orders displayed by icons on the map. The OpenLayers map should have an option to expand and fill the screen and another option to close the full screen version without leaving the page with the map and truck to order assignment.
Please aim to have the user interface similar to myrouteonline.com. But as you can read from the description of the project the data will come from import mostly.
Users should be able to move orders from one truck to another. When the user clicks finalize, the application will call the optimization engine and get back the updated results of the routes refreshing data on this screen.
The user can force the optimization engine to return the results pre-maturely by clicking an option "stop optimization".
Always send the tenant-id and user-id with any REST API call to the optimization engine.
Please send your questions for further clarification and narrow the scope as much as possible.
Example similar sites (data structure and look and feel shouldn't be the same):