EZBus is a transportation service that is committed to enabling cities, individuals, and businesses to move anywhere. EzBus is tech-driven, fancy, and convenient.
EZBus consists of
- Two Flutter apps for customers and drivers
- Admin panel with a Laravel API system as a back-end and a Vue.js front-end system as a web interface
Features
Demo
- Backend, go to the demo website and log in using
- Admin credentials
- Username: [email protected]
- Password: admin123
- Admin credentials
- Customer Mobile App, click here
- Use [email protected] for email with password 12345678, or sign up with a new email
- Driver Mobile App, click here
- Use [email protected] for email with password 12345678, or sign up with a new email
How to test the system?
- Open the driver app and register for a new driver.
- Go to the admin panel and do the following:
- Approve the driver’s documents.
- Add a new bus.
- Assign the bus to the driver.
- Create a new route.
- Create a trip on that route.
- Assign the trip to the new driver.
- Go to the driver app and start the trip.
- Go to the customer app and try to search for trips in the same geographical area where the start and end stops of the created route are located. Make sure that your wallet balance is sufficient. If not, please charge it. All payments are in the sandbox, so there are no real payments in the demo.
- Select the trip in the customer app and pay for it.
- Track the trip from the customer app.
- Navigate the route as the driver. When your location is close to the customer, an alert will appear in the driver app to slow down. When the driver reaches the customer’s location, a pop-up will appear to allow the driver to scan the customer’s ticket to check him in.
- When the driver reaches the customer’s drop-off point, a pop-up will appear to allow the driver to check him out.
- The driver will see his wallet value increase and the history of this.
Requirements
Please make sure that you have accounts for
- VPS server with root credentials
- Google Maps API with the following APIs enabled
- Geocoding API
- Maps JavaScript API
- Places API
- Directions API
- Maps SDK for Android
- Maps SDK for iOS
- Firebase account
- Braintree SDK. You can test with a sandbox account OR integrate a live account.
Technologies Used
- Flutter – customer and driver apps
- Laravel – backend
- VueJS – admin panel front end
- Socket.io – real-time bus location update for mobile apps and admin panel
- Google Maps SDK – display maps in mobile apps and admin panels
Credits and License
All assets in the item are either created by me or are licensed for use in a commercial application with or without author attribution. I provide the necessary attribution in the ‘About’ section in both the mobile apps and the landing web page.
What if I have an issue?
I completely support this item and will reply within 24 hours if you have any issues. You can just send a message via my CodeCanyon profile page, and I will get back to you right away.
Changelog
The new updates are based on suggestions from comments. Please, if you have any ideas or improvements to the system, share them with me, and I will add them for free if I find them useful to the system in general. Thanks!!
Version 2.0 31/5/2024
- Minor bug fixes.
Version 1.9 16/5/2024
- Allow smart deletion for routes. Old routes will continue to exist for existing trips but will not be shown when the admin creates a new trip.
- The trip’s delay report has been updated to have two entities per stop: one for early arrival and the other for late arrival.
- Vibration and sound are added when the driver scans a ticket.
- Minor bug fixes.
Version 1.8 6/5/2024
- Minor bug fixes for uploading the apps to Apple Store.
Version 1.7 20/4/2024
- Urgent update for the dependency in the pubspec.yaml, so the apps can be uploaded to Google Play.
Version 1.6 21/3/2024
- A new option is added for both the customer and driver app to request account deletion in accordance with the new Google policy that requires this.
- A coupon system is integrated, which allows the admin to set a coupon with an expiration date and a specific discount percentage. The admin can also set a usage limit (the number of times a customer can use the coupon) with an option to make it unlimited. Finally, the admin can set a maximum amount the coupon can deduct from the trip’s price.
- A notification option has been added to the coupon system, allowing the admin to send notifications to customers to announce the coupon.
- A new payment option has been added to the customer app, allowing the customer to pay in cash.
- Minor bug fixes.
Version 1.5 8/2/2024
- A Notification system is added to the drive app. The driver now gets a notification when the admin assigns a new trip or sends a notification to all customers on a trip.
- Allow the passenger to see and call the driver’s mobile number after booking and when the trip is started.
- Adding a pricing factor for each bus to differentiate between different comfort levels of each bus. For example, if the pricing factor of a bus is 1.5, this means that a trip with that bus costs 50% more compared to other buses.
- The customer now gets a notification when the trip is started.
- AdMob ads are integrated into both driver and customer apps. The admin can disable the ads from the settings page in his admin panel.
Version 1.4 15/11/2023
- The update introduces minor bug fixes.
Version 1.3 2/11/2023
- Added RTL support for the apps.
- Added a new option to share the reservation ticket in the customer app.
- Add a notification system to the apps. The admin can send notifications to all customers who reserve a specific trip.
Version 1.2 1/11/2023
- Integrate Braintree, RazorPay, FlutterWave, and Paytabs into the system.
- Add the option to disable payment at all to allow free rides.
Version 1.1 31/10/2023
- Added multi-language support for the Flutter apps. We have added French, Spanish, and German translations.
- Minor bug fixes.
Version 1.0 18/10/2023 – First Release
Support Notes
Due to the heavy load on the work, support and comments are treated twice a day. Right now we receive many emails and requests for support than we can manage quickly. Many times we can answer the same day but others take much longer. Thanks for reading.