Table of Contents
We examine a new, upcoming generation of vehicles that run on electric power supplied by onboard batteries in a smart city environment. Charging at home and in public areas are the best recharging option. As charging stations are shared resources, Cooperating EVs have the potential to avoid unbalanced use of charging stations and long wait times.
India has seen a significant increase in the number of electric vehicles (EVs) since the past year. Yet the EV owners still face trouble while trying to recharge their vehicles.
Suppose you are a EV owner, you are out on a trip and you suddenly realise that you have to recharge your EV. You are not sure where to recharge your EV. You are not sure if the EV charging station is open or has the suitable charger for your vehicle. This is where EV-Sathi comes in.
Our application uses a cost-effective solution for EV owners to find the nearest charging station and recharge their vehicles. It also supports booking of charging stations for those who want to recharge their vehicles at a scheduled time.The dynamic nature of the application makes it easy to manage multiple vehicles from one device.
-
Awesome UX and easy to use friendly interface
-
Manage multiple vehicles from one device
-
Find the charging stations near you in a Built-in Map with real-time location updates
-
Get status of EV charging stations along with distance, chargers, etc.
-
Get a dyanamic price while booking slot for your EV based on currently free slots.
-
Navigation system to help you find the charging station in a short time using Direction and Places API.
-
View booking history of your EV
-
Estimate cost and time for your EV in a journey with an awesome Pricing Calculator.
Mobile Applicaton:
- Flutter
- Firebase
- Firestore Database
- Google Cloud Platform
- Google Maps API
- Places API
- Direction API
Dynamic Pricing:
- ML Model used- Multi-Regression Model, Genetic Algorithm
- Dataset used- EV Station pricing dataset, Real-time Queue at the EV Station based on Maps API data.
You can test EV Sathi in your own development environment. This section shows you how:
You'll need to set up the IDE and mobile device emulator, or any mobile testing device on your local system.
You'll need to set up the IDE and mobile device emulator, or any mobile testing device on your local system.
Flutter Environment: You'll need to have the following installed:
Ensure you are testing the app using Flutter version 2.10.3 and above.
For checking flutter version:
- Run flutter --version in terminal
If your version is not upto date, follow these steps to upgrade:
- flutter channel stable to switch to the channel having stable version of flutter updates
- flutter upgrade to get the latest flutter version
-
Clone this repository after forking using git clone https://github.com/pnkr01/EV-Sathi.
-
cd into
EV-Sathi
-
Check for flutter setup and connected devices using
flutter doctor
-
Get all the dependencies using
flutter pub get
-
Go Inside
lib --> screen --> contsant
. -
Place your Google Map API Key.
-
How To Get Google Map API Key? For setting the Map, follow the steps given below.
- Sign In to Google Account.
- Go To Google Console.
- Enable Direction Api.
- Enable Places Api.
- Go to Credentials
- Click on create credentials.
- Copy the API Key.
-
Run the app using
flutter run
For help getting started with Flutter, view our online documentation, which offers tutorials, samples, guidance on mobile development, and a full API reference.
This project structure:
EV-Sathi/lib/
├── components/ # resuable widget i.e buttons,card,error dialog,loading dialog, marker design, text field.
├── button.dart
├── button_nav_route.dart
├── card.dart
├── errordialog.dart
├── loading_dialog.dart
├── on_marker_tap.dart
├── textfiled.dart
└── progress_bar.dart
├── models/
└── nearby_ev_station_results.dart # model class for fetching the near by ev station.
├── otp/ # Widgets Involved in Designing OTP Screen, Sending OTP To user,verifying otp and logging them sucessfully.
├── components/
└── ....
├── newuser/
└──....
└── olduser.dart
├── screen/ #Various screen involved.
├── auth/
└── .... #screen involved in authorization i.e, login, sign in.
├── constant/
└── ... #constant needed by auth screen
├── marker_container/
└── ... # Designing Maker Container.
├── profile_screen/
└── ... #screen involved in Profiling.
├── splash/
└── ... #screen involved in Splash Screen..
├── vechile_add/
└── ... #screen involved in Vechile Addition.
├── dashboard.dart # main part of driving functionality.
└── map_page.dart # Map Page.
├── sidebar/
| ├── components/
└── ... # screen involved in side drawer
| └── drawaer.dart/ # main part of drawer.
├── constant.dart/ #constant needed by splash screen.
├── global.dart/ #global file needed for all Widget.
├── routes.dart #routes for Screens.
├── size_config.dart #size config for reponsivness.
└── main.dart # Heart of this App.
link: Click Here
Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Distributed under the MIT License. See LICENSE
for more information.