The refreshed login and registration screens feature a gradient-backed layout, inline validation, password-strength guidance, and remember-me support for a smoother onboarding experience.
The GVEI Desktop Application is a Java-based system to support Rwanda’s Green Vehicle Exchange Initiative, allowing citizens to exchange old fuel-powered vehicles for electric vehicles with government support.
It includes citizen and admin dashboards to manage vehicles, exchange offers, and generate reports.
- Citizen registration and login.
- Admin login for system management.
- Role-based access control (citizen/admin).
- Modernized authentication experience with remember-me support and password-strength guidance.
- Citizens can register vehicles:
- Plate number, type, fuel type, manufacture year, mileage.
- List and view owned vehicles.
- Search/filter owned vehicles by plate, type, or fuel.
- Live summary insights (eligible vehicles count and average mileage).
- Export vehicle data to CSV.
- Eligibility check based on:
- Age > 5 years
- Fuel type = Petrol/Diesel
- Citizens can apply for exchange offers.
- Duplicate active-offer prevention per vehicle (no duplicate pending/approved requests).
- Admins can approve/reject offers.
- Bulk approve/reject for multiple selected offers.
- Filter offers by status and search by vehicle plate/owner name.
- Offers display exchange value, subsidy percentage, and status.
- Export currently filtered offer view to CSV.
- Admin dashboard shows:
- Approved exchanges.
- Total subsidies paid.
- Estimated carbon reduction (tons/year).
- Simple charts using AWT Canvas.
- Built with Java Swing & AWT.
- Logout button on top-right returns to login without closing the app.
$##PROJECT STRUCTURE gvei/ ├─ src/ │ ├─ AdminDashboard.java │ ├─ CitizenDashboard.java │ ├─ LoginFrame.java │ ├─ RegisterFrame.java │ ├─ VehicleRegistrationFrame.java │ ├─ OfferApplicationFrame.java │ ├─ DBConfig.java │ ├─ UserDAO.java │ ├─ VehicleDAO.java │ ├─ OfferDAO.java │ ├─ Utils.java │ └─ ChartCanvas.java ├─ lib/ │ └─ mysql-connector-java-9.x.x.jar ├─ gvei.sql # Database schema and sample data └─ README.md
gvei
| Table | Columns |
|---|---|
| users | user_id, name, email, password, role |
| vehicles | vehicle_id, owner_id, plate_no, vehicle_type, fuel_type, year, mileage |
| exchange_offers | offer_id, vehicle_id, exchange_value, subsidy_percent, status |
- Citizens:
role = citizen - Admin:
role = admin
- Install MySQL/MariaDB and create the
gveidatabase. - Import the provided
gvei.sqlfor tables and sample data. - Include MySQL JDBC driver in your project classpath (
lib/mysql-connector-java-9.x.x.jar). - Update
DBConfig.javawith your database credentials. - Compile and run
LoginFrame.java.
- Start with the Login screen.
- Citizens:
- Register vehicles, view owned vehicles.
- Apply for exchange offers.
- Export vehicle lists.
- Admins:
- Manage and approve/reject offers.
- View statistics and export reports.
- Click Logout to return to login without closing the application.
- Java 17+
- MySQL or MariaDB
- JDBC Driver (MySQL Connector/J)
- Application uses Swing for UI and AWT Canvas for simple charts.
- CSV exports allow external reporting and analysis.
- Ensure JDBC driver version matches your Java version.