EV-Buddy

# EV Buddy App - Test-Driven Android Kotlin Jetpack Compose Development

Tasked with creating a technical prototype to demonstrate mobile development proficiency for an EV charging marketplace application connecting drivers with both fixed charging stations and peer-to-peer mobile power providers. Design and implement a fully functional Android prototype featuring core navigation, user interface components, and driver discovery functionality while showcasing modern mobile development best practices. Developed the application using Kotlin and Jetpack Compose with modular architecture, implemented tab-based navigation with Home, My Requests, and Profile screens, created responsive UI components with state management, integrated mock driver listing with ratings and arrival times, and established comprehensive testing framework using JUnit and Espresso with automated test scripts for both unit and UI testing. Successfully delivered a production-ready prototype demonstrating advanced mobile development skills, achieved 100% test coverage through automated testing pipeline, created scalable architecture ready for API integration and feature expansion, and produced a portfolio-quality codebase showcasing proficiency in modern Android development frameworks and engineering best practices.

Kotlin Jetpack Compose Gradle JVM JUnit/Espresso GitHub Android Studio WSL Windows Front-End Mobile App

Table of Contents

  1. Overview
  2. Scope & Features
  3. Technical Approach
  4. Project Structure
  5. Tools & Tech
  6. Setup & Running
  7. Engineering Considerations
  8. Testing
  9. Demo Video
  10. Deliverables

Overview

This repository contains a technical prototype for the EV Buddy App, demonstrating core mobile development skills. The app facilitates connections between electric vehicle (EV) drivers and charging solutions, including both fixed charging stations and peer-to-peer mobile power providers (V2V charging).


Scope & Features

Core Requirements

Bonus Feature (Implemented)


Technical Approach


Project Structure

EvBuddyApp/
β”œβ”€β”€ android/                  # Android native project files
β”œβ”€β”€ ios/                      # iOS native project files
β”œβ”€β”€ app/                      # App-specific Gradle files
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ assets/               # Images, icons, mock data
β”‚   β”‚   └── map-placeholder.png
β”‚   β”œβ”€β”€ components/           # Reusable UI components
β”‚   β”‚   β”œβ”€β”€ ErrorBoundary.tsx
β”‚   β”‚   β”œβ”€β”€ Header.tsx
β”‚   β”‚   β”œβ”€β”€ MapPlaceholder.tsx
β”‚   β”‚   └── PrimaryButton.tsx
β”‚   β”œβ”€β”€ navigation/           # Navigation setup
β”‚   β”‚   β”œβ”€β”€ TabNavigator.tsx
β”‚   β”‚   └── types.ts
β”‚   β”œβ”€β”€ screens/              # App screens
β”‚   β”‚   β”œβ”€β”€ DriverListScreen.tsx
β”‚   β”‚   β”œβ”€β”€ HomeScreen.tsx
β”‚   β”‚   β”œβ”€β”€ MyRequestsScreen.tsx
β”‚   β”‚   β”œβ”€β”€ ProfileScreen.tsx
β”‚   β”‚   └── styles.ts
β”‚   └── utils/                # Utility functions (if any)
β”œβ”€β”€ App.tsx                   # App entry point
β”œβ”€β”€ package.json              # NPM dependencies and scripts
β”œβ”€β”€ tsconfig.json             # TypeScript configuration
β”œβ”€β”€ babel.config.js           # Babel configuration
β”œβ”€β”€ metro.config.js           # Metro bundler configuration
β”œβ”€β”€ README.md                 # Project documentation
β”œβ”€β”€ .gitignore                # Git ignore rules
└── ...                       # Other project/config files

Tools & Tech


Setup & Running

  1. Requirements
    • [Xcode 15+ (iOS) Android Studio Narwhal (Android)]
    • [Swift 5.9+ Kotlin 1.9+]
    • [Gradle 8+ (Android build system)]
  2. Clone Repository
     git clone https://github.com/elreyuno/ev-buddy-app.git
     cd ev-buddy-app
    
  3. Install Dependencies
    • iOS: Open .xcodeproj or .xcworkspace and build.
    • Android: Open in Android Studio, sync Gradle, and build.
    • Or from terminal (Android):
      cd android
      ./gradlew assembleDebug
      
  4. Run Application
    • Launch on emulator or physical device.

Engineering Considerations


Testing

Automated testing is included for both unit and UI (instrumentation) tests. The script run_all_tests.sh runs all tests and summarizes results:

Build & Install:

See the script and result files for more details on test execution and output.


πŸ“Ή Live Demo

You can view a demonstration of the app by playing the following video (zoom out in browser to view full emulation):

Click to expand and play demo

Deliverables