├── android ├── base │ ├── consumer-rules.pro │ ├── .gitignore │ ├── src │ │ ├── main │ │ │ ├── res │ │ │ │ └── values │ │ │ │ │ └── strings.xml │ │ │ ├── AndroidManifest.xml │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── utsman │ │ │ │ └── kemana │ │ │ │ └── base │ │ │ │ ├── NotifyState.kt │ │ │ │ ├── KEY.kt │ │ │ │ ├── view │ │ │ │ └── BottomSheetUnDrag.kt │ │ │ │ ├── rx-class.kt │ │ │ │ ├── Math-Ext.kt │ │ │ │ └── fragmentism.kt │ │ ├── test │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── utsman │ │ │ │ └── kemana │ │ │ │ └── base │ │ │ │ └── ExampleUnitTest.kt │ │ └── androidTest │ │ │ └── java │ │ │ └── com │ │ │ └── utsman │ │ │ └── kemana │ │ │ └── base │ │ │ └── ExampleInstrumentedTest.kt │ ├── proguard-rules.pro │ └── build.gradle ├── app-driver │ ├── .gitignore │ ├── src │ │ ├── main │ │ │ ├── res │ │ │ │ ├── mipmap-hdpi │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ └── ic_launcher_round.png │ │ │ │ ├── mipmap-mdpi │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ └── ic_launcher_round.png │ │ │ │ ├── mipmap-xhdpi │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ └── ic_launcher_round.png │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ └── ic_launcher_round.png │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ └── ic_launcher_round.png │ │ │ │ ├── values │ │ │ │ │ ├── strings.xml │ │ │ │ │ ├── colors.xml │ │ │ │ │ └── styles.xml │ │ │ │ ├── mipmap-anydpi-v26 │ │ │ │ │ ├── ic_launcher.xml │ │ │ │ │ └── ic_launcher_round.xml │ │ │ │ ├── layout │ │ │ │ │ ├── activity_auth.xml │ │ │ │ │ ├── component_splash_screen.xml │ │ │ │ │ ├── activity_main.xml │ │ │ │ │ ├── fragment_main.xml │ │ │ │ │ ├── bottom_sheet_frg_main.xml │ │ │ │ │ ├── bottom_dialog_error.xml │ │ │ │ │ ├── bottom_sheet.xml │ │ │ │ │ └── activity_completion_form.xml │ │ │ │ ├── drawable │ │ │ │ │ ├── ic_end_trip.xml │ │ │ │ │ ├── ic_pin.xml │ │ │ │ │ └── ic_error.xml │ │ │ │ └── drawable-v24 │ │ │ │ │ ├── ic_direction.xml │ │ │ │ │ ├── ic_offer_price.xml │ │ │ │ │ ├── ic_people_find.xml │ │ │ │ │ └── ic_launcher_foreground.xml │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── utsman │ │ │ │ │ └── kemana │ │ │ │ │ └── driver │ │ │ │ │ ├── subscriber │ │ │ │ │ ├── RotationSubs.kt │ │ │ │ │ ├── OrderCancelSubs.kt │ │ │ │ │ ├── TrackerPassengerSubs.kt │ │ │ │ │ ├── LocationSubs.kt │ │ │ │ │ ├── ObjectOrderSubs.kt │ │ │ │ │ └── UpdateLocationSubs.kt │ │ │ │ │ ├── impl │ │ │ │ │ ├── view_state │ │ │ │ │ │ └── IActiveState.kt │ │ │ │ │ ├── view │ │ │ │ │ │ ├── ILocationView.kt │ │ │ │ │ │ ├── ILocationUpdateView.kt │ │ │ │ │ │ ├── IOrderView.kt │ │ │ │ │ │ └── IMapView.kt │ │ │ │ │ └── presenter │ │ │ │ │ │ ├── ActiveStateInterface.kt │ │ │ │ │ │ ├── OrderInterface.kt │ │ │ │ │ │ ├── MapsInterface.kt │ │ │ │ │ │ └── LocationInterface.kt │ │ │ │ │ ├── presenter │ │ │ │ │ ├── OrderPresenter.kt │ │ │ │ │ ├── ActivatedStatePresenter.kt │ │ │ │ │ └── MapsPresenter.kt │ │ │ │ │ ├── ext.kt │ │ │ │ │ ├── services │ │ │ │ │ ├── ConnectorExt.kt │ │ │ │ │ └── RabbitServices.kt │ │ │ │ │ ├── maps_callback │ │ │ │ │ └── MainMaps.kt │ │ │ │ │ └── FormCompleteActivity.kt │ │ │ └── AndroidManifest.xml │ │ ├── test │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── utsman │ │ │ │ └── kemana │ │ │ │ └── driver │ │ │ │ └── ExampleUnitTest.kt │ │ └── androidTest │ │ │ └── java │ │ │ └── com │ │ │ └── utsman │ │ │ └── kemana │ │ │ └── driver │ │ │ └── ExampleInstrumentedTest.kt │ ├── proguard-rules.pro │ └── build.gradle ├── app-passenger │ ├── .gitignore │ ├── src │ │ ├── main │ │ │ ├── res │ │ │ │ ├── mipmap-hdpi │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ └── ic_launcher_round.png │ │ │ │ ├── mipmap-mdpi │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ └── ic_launcher_round.png │ │ │ │ ├── mipmap-xhdpi │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ └── ic_launcher_round.png │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ └── ic_launcher_round.png │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ └── ic_launcher_round.png │ │ │ │ ├── values │ │ │ │ │ ├── strings.xml │ │ │ │ │ ├── colors.xml │ │ │ │ │ └── styles.xml │ │ │ │ ├── mipmap-anydpi-v26 │ │ │ │ │ ├── ic_launcher.xml │ │ │ │ │ └── ic_launcher_round.xml │ │ │ │ ├── xml │ │ │ │ │ └── network_security_config.xml │ │ │ │ ├── layout │ │ │ │ │ ├── activity_auth.xml │ │ │ │ │ ├── activity_maps.xml │ │ │ │ │ ├── activity_main.xml │ │ │ │ │ ├── dialog_finding_order.xml │ │ │ │ │ ├── bottom_dialog_error.xml │ │ │ │ │ ├── bottom_sheet.xml │ │ │ │ │ ├── bottoh_sheet_location_picker.xml │ │ │ │ │ ├── item_location.xml │ │ │ │ │ └── item_loader.xml │ │ │ │ ├── drawable │ │ │ │ │ ├── ic_end_trip.xml │ │ │ │ │ ├── ic_pin.xml │ │ │ │ │ ├── ic_direction.xml │ │ │ │ │ ├── ic_offer_price.xml │ │ │ │ │ └── ic_people_find.xml │ │ │ │ └── drawable-v24 │ │ │ │ │ ├── ic_error.xml │ │ │ │ │ └── ic_launcher_foreground.xml │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── utsman │ │ │ │ │ └── kemana │ │ │ │ │ ├── subscriber │ │ │ │ │ ├── RotationSubs.kt │ │ │ │ │ ├── PaddingMapsSubs.kt │ │ │ │ │ ├── LocationSubs.kt │ │ │ │ │ └── UpdateLocationSubs.kt │ │ │ │ │ ├── impl │ │ │ │ │ ├── view │ │ │ │ │ │ ├── FragmentListener.kt │ │ │ │ │ │ ├── ILocationView.kt │ │ │ │ │ │ ├── IMessagingView.kt │ │ │ │ │ │ ├── IBottomMainView.kt │ │ │ │ │ │ └── IMapView.kt │ │ │ │ │ └── presenter │ │ │ │ │ │ ├── LocationInterface.kt │ │ │ │ │ │ ├── MessagingInterface.kt │ │ │ │ │ │ ├── BottomMainInterface.kt │ │ │ │ │ │ └── MapsInterface.kt │ │ │ │ │ └── presenter │ │ │ │ │ ├── MessagingPresenter.kt │ │ │ │ │ ├── BottomMainPresenter.kt │ │ │ │ │ ├── LocationPresenter.kt │ │ │ │ │ └── MapsPresenter.kt │ │ │ └── AndroidManifest.xml │ │ ├── test │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── utsman │ │ │ │ └── kemana │ │ │ │ └── ExampleUnitTest.kt │ │ └── androidTest │ │ │ └── java │ │ │ └── com │ │ │ └── utsman │ │ │ └── kemana │ │ │ └── ExampleInstrumentedTest.kt │ ├── proguard-rules.pro │ └── build.gradle ├── feature │ ├── rabbitmq │ │ ├── consumer-rules.pro │ │ ├── .gitignore │ │ ├── src │ │ │ ├── main │ │ │ │ ├── res │ │ │ │ │ └── values │ │ │ │ │ │ └── strings.xml │ │ │ │ ├── AndroidManifest.xml │ │ │ │ └── java │ │ │ │ │ └── com │ │ │ │ │ └── utsman │ │ │ │ │ └── featurerabbitmq │ │ │ │ │ ├── Type.kt │ │ │ │ │ └── RabbitInstance.kt │ │ │ ├── test │ │ │ │ └── java │ │ │ │ │ └── com │ │ │ │ │ └── utsman │ │ │ │ │ └── featurerabbitmq │ │ │ │ │ └── ExampleUnitTest.kt │ │ │ └── androidTest │ │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── utsman │ │ │ │ └── featurerabbitmq │ │ │ │ └── ExampleInstrumentedTest.kt │ │ ├── proguard-rules.pro │ │ └── build.gradle │ └── remote │ │ ├── consumer-rules.pro │ │ ├── .gitignore │ │ ├── src │ │ ├── main │ │ │ ├── res │ │ │ │ └── values │ │ │ │ │ └── strings.xml │ │ │ ├── AndroidManifest.xml │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── utsman │ │ │ │ └── kemana │ │ │ │ └── remote │ │ │ │ ├── driver │ │ │ │ ├── IRemoteView.kt │ │ │ │ └── RemoteListener.kt │ │ │ │ ├── place │ │ │ │ ├── PlaceListener.kt │ │ │ │ ├── Model.kt │ │ │ │ ├── PlaceInterface.kt │ │ │ │ └── PlacePresenter.kt │ │ │ │ └── ext.kt │ │ ├── test │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── utsman │ │ │ │ └── kemana │ │ │ │ └── remote │ │ │ │ └── ExampleUnitTest.kt │ │ └── androidTest │ │ │ └── java │ │ │ └── com │ │ │ └── utsman │ │ │ └── kemana │ │ │ └── remote │ │ │ └── ExampleInstrumentedTest.kt │ │ ├── proguard-rules.pro │ │ └── build.gradle ├── buildSrc │ ├── .gitignore │ └── build.gradle.kts ├── .gitignore ├── settings.gradle ├── base-module.gradle ├── build.gradle ├── gradle.properties ├── gradlew.bat └── base-app.gradle └── backend-side ├── settings.gradle.kts ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── src ├── main │ ├── kotlin │ │ └── com │ │ │ └── kemana │ │ │ └── backend │ │ │ ├── model │ │ │ ├── Responses.kt │ │ │ ├── Order.kt │ │ │ ├── AddressHere.kt │ │ │ ├── Driver.kt │ │ │ ├── PlaceHere.kt │ │ │ ├── Direction.kt │ │ │ └── Place.kt │ │ │ ├── RabbitInstance.kt │ │ │ ├── repository │ │ │ ├── OrderRepository.kt │ │ │ ├── DriverRepository.kt │ │ │ └── DriverDbRepository.kt │ │ │ ├── BackendApplication.kt │ │ │ ├── maputil │ │ │ └── Bounding.kt │ │ │ ├── controller │ │ │ ├── OrderController.kt │ │ │ └── PlaceHereController.kt │ │ │ ├── Ext.kt │ │ │ └── JSON-Ext.kt │ └── resources │ │ └── application.properties └── test │ └── kotlin │ └── com │ └── kemana │ └── backend │ └── BackendApplicationTests.kt ├── .gitignore ├── build.gradle.kts └── gradlew.bat /android/base/consumer-rules.pro: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /android/base/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /android/app-driver/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /android/app-passenger/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /android/feature/rabbitmq/consumer-rules.pro: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /android/feature/remote/consumer-rules.pro: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /android/feature/rabbitmq/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /android/feature/remote/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /android/buildSrc/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | .gradle 3 | 4 | -------------------------------------------------------------------------------- /backend-side/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | rootProject.name = "backend" 2 | -------------------------------------------------------------------------------- /backend-side/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/utsmannn/Kemana/HEAD/backend-side/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /android/.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea 5 | .DS_Store 6 | /build 7 | /captures 8 | /gradle 9 | .externalNativeBuild 10 | .cxx -------------------------------------------------------------------------------- /android/app-driver/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/utsmannn/Kemana/HEAD/android/app-driver/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app-driver/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/utsmannn/Kemana/HEAD/android/app-driver/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app-driver/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/utsmannn/Kemana/HEAD/android/app-driver/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app-driver/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/utsmannn/Kemana/HEAD/android/app-driver/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app-driver/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/utsmannn/Kemana/HEAD/android/app-driver/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app-passenger/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/utsmannn/Kemana/HEAD/android/app-passenger/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app-passenger/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/utsmannn/Kemana/HEAD/android/app-passenger/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app-passenger/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/utsmannn/Kemana/HEAD/android/app-passenger/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app-driver/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/utsmannn/Kemana/HEAD/android/app-driver/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app-driver/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/utsmannn/Kemana/HEAD/android/app-driver/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app-driver/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/utsmannn/Kemana/HEAD/android/app-driver/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app-passenger/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/utsmannn/Kemana/HEAD/android/app-passenger/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app-passenger/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/utsmannn/Kemana/HEAD/android/app-passenger/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app-driver/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/utsmannn/Kemana/HEAD/android/app-driver/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app-driver/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/utsmannn/Kemana/HEAD/android/app-driver/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app-passenger/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/utsmannn/Kemana/HEAD/android/app-passenger/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app-passenger/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/utsmannn/Kemana/HEAD/android/app-passenger/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app-passenger/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/utsmannn/Kemana/HEAD/android/app-passenger/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app-passenger/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/utsmannn/Kemana/HEAD/android/app-passenger/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app-passenger/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/utsmannn/Kemana/HEAD/android/app-passenger/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /backend-side/src/main/kotlin/com/kemana/backend/model/Responses.kt: -------------------------------------------------------------------------------- 1 | package com.kemana.backend.model 2 | 3 | data class Responses(val message: String, 4 | val data: Any) -------------------------------------------------------------------------------- /backend-side/src/test/kotlin/com/kemana/backend/BackendApplicationTests.kt: -------------------------------------------------------------------------------- 1 | package com.kemana.backend 2 | 3 | import org.junit.jupiter.api.Test 4 | import org.springframework.boot.test.context.SpringBootTest 5 | 6 | @SpringBootTest 7 | class BackendApplicationTests { 8 | 9 | @Test 10 | fun contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /backend-side/src/main/kotlin/com/kemana/backend/RabbitInstance.kt: -------------------------------------------------------------------------------- 1 | package com.kemana.backend 2 | 3 | import org.json.JSONObject 4 | import java.lang.Exception 5 | 6 | interface RabbitInstance { 7 | fun listen(msg: (from: String, body: JSONObject) -> Unit) 8 | fun publishTo(id: String, msg: JSONObject, error: ((Exception) -> Unit)? = null) 9 | } -------------------------------------------------------------------------------- /backend-side/src/main/kotlin/com/kemana/backend/repository/OrderRepository.kt: -------------------------------------------------------------------------------- 1 | package com.kemana.backend.repository 2 | 3 | import com.kemana.backend.model.OrderData 4 | import org.springframework.data.mongodb.repository.MongoRepository 5 | 6 | interface OrderRepository : MongoRepository { 7 | fun findOrderById(id: String) : OrderData 8 | } 9 | -------------------------------------------------------------------------------- /backend-side/src/main/kotlin/com/kemana/backend/BackendApplication.kt: -------------------------------------------------------------------------------- 1 | package com.kemana.backend 2 | 3 | import org.springframework.boot.autoconfigure.SpringBootApplication 4 | import org.springframework.boot.runApplication 5 | 6 | @SpringBootApplication 7 | class BackendApplication 8 | 9 | fun main(args: Array) { 10 | runApplication(*args) 11 | } 12 | -------------------------------------------------------------------------------- /backend-side/src/main/kotlin/com/kemana/backend/repository/DriverRepository.kt: -------------------------------------------------------------------------------- 1 | package com.kemana.backend.repository 2 | 3 | import com.kemana.backend.model.Driver 4 | import org.springframework.data.mongodb.repository.MongoRepository 5 | 6 | interface DriverRepository : MongoRepository { 7 | fun findDriverById(id: String) : Driver? 8 | fun findDriverByEmail(email: String) : Driver? 9 | } -------------------------------------------------------------------------------- /backend-side/src/main/kotlin/com/kemana/backend/repository/DriverDbRepository.kt: -------------------------------------------------------------------------------- 1 | package com.kemana.backend.repository 2 | 3 | import com.kemana.backend.model.DriverEntity 4 | import org.springframework.data.mongodb.repository.MongoRepository 5 | 6 | interface DriverDbRepository : MongoRepository { 7 | fun findDriverById(id: String) : DriverEntity? 8 | fun findDriverByEmail(email: String) : DriverEntity? 9 | } -------------------------------------------------------------------------------- /backend-side/.gitignore: -------------------------------------------------------------------------------- 1 | HELP.md 2 | .gradle 3 | build/ 4 | !gradle/wrapper/gradle-wrapper.jar 5 | !**/src/main/** 6 | !**/src/test/** 7 | 8 | ### STS ### 9 | .apt_generated 10 | .classpath 11 | .factorypath 12 | .project 13 | .settings 14 | .springBeans 15 | .sts4-cache 16 | 17 | ### IntelliJ IDEA ### 18 | .idea 19 | *.iws 20 | *.iml 21 | *.ipr 22 | out/ 23 | /build/classes 24 | /build/kotlin 25 | /build/reports 26 | /build/resources 27 | /build/test-results 28 | /build/tmp 29 | 30 | ### NetBeans ### 31 | /nbproject/private/ 32 | /nbbuild/ 33 | /dist/ 34 | /nbdist/ 35 | /.nb-gradle/ 36 | 37 | ### VS Code ### 38 | .vscode/ 39 | -------------------------------------------------------------------------------- /backend-side/src/main/kotlin/com/kemana/backend/model/Order.kt: -------------------------------------------------------------------------------- 1 | package com.kemana.backend.model 2 | 3 | import org.springframework.data.mongodb.core.mapping.Document 4 | 5 | @Document(collection = "order_data") 6 | data class OrderData( 7 | val id: String?, 8 | val from: Places?, 9 | val to: Places?, 10 | val attribute: OrderDataAttr?, 11 | val active: Boolean? 12 | ) 13 | 14 | data class OrderDataAttr( 15 | val driver: Driver?, 16 | val passenger: Passenger? 17 | ) 18 | 19 | data class Passenger( 20 | var id: String? = null, 21 | val name: String?, 22 | val email: String?, 23 | val photoUrl: String?, 24 | var position: Position? = null 25 | ) -------------------------------------------------------------------------------- /android/buildSrc/build.gradle.kts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2019 Muhammad Utsman 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | plugins { 18 | `kotlin-dsl` 19 | } 20 | 21 | repositories { 22 | jcenter() 23 | } -------------------------------------------------------------------------------- /android/base/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 18 | Base 19 | 20 | -------------------------------------------------------------------------------- /android/settings.gradle: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Muhammad Utsman 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | include ':app-driver', ':base', ':feature:remote', ':app-passenger', ':feature:rabbitmq' 18 | rootProject.name='Kemana' 19 | -------------------------------------------------------------------------------- /android/app-passenger/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 18 | Kemana 19 | 20 | -------------------------------------------------------------------------------- /android/feature/remote/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 18 | backend 19 | 20 | -------------------------------------------------------------------------------- /android/app-driver/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 18 | Kemana - Driver 19 | 20 | -------------------------------------------------------------------------------- /android/feature/rabbitmq/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 18 | Rabbitmq 19 | 20 | -------------------------------------------------------------------------------- /android/app-passenger/src/main/java/com/utsman/kemana/subscriber/RotationSubs.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Muhammad Utsman 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.utsman.kemana.subscriber 18 | 19 | data class RotationSubs(val double: Double?) -------------------------------------------------------------------------------- /android/app-passenger/src/main/java/com/utsman/kemana/subscriber/PaddingMapsSubs.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Muhammad Utsman 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.utsman.kemana.subscriber 18 | 19 | data class PaddingMapsSubs(val padding: Int) -------------------------------------------------------------------------------- /android/app-driver/src/main/java/com/utsman/kemana/driver/subscriber/RotationSubs.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Muhammad Utsman 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.utsman.kemana.driver.subscriber 18 | 19 | data class RotationSubs(val double: Double?) -------------------------------------------------------------------------------- /backend-side/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2019 Muhammad Utsman 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | 17 | spring.data.mongodb.host=localhost 18 | spring.data.mongodb.port=27017 19 | spring.data.mongodb.database=db_kemane 20 | 21 | server.port=8800 22 | -------------------------------------------------------------------------------- /android/app-driver/src/main/java/com/utsman/kemana/driver/subscriber/OrderCancelSubs.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Muhammad Utsman 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.utsman.kemana.driver.subscriber 18 | 19 | data class OrderCancelSubs(val cancel: Boolean) -------------------------------------------------------------------------------- /android/feature/rabbitmq/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 19 | -------------------------------------------------------------------------------- /android/feature/remote/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 19 | -------------------------------------------------------------------------------- /android/app-driver/src/main/java/com/utsman/kemana/driver/subscriber/TrackerPassengerSubs.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Muhammad Utsman 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.utsman.kemana.driver.subscriber 18 | 19 | data class TrackerPassengerSubs(val email: String) -------------------------------------------------------------------------------- /android/app-passenger/src/main/java/com/utsman/kemana/impl/view/FragmentListener.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Muhammad Utsman 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.utsman.kemana.impl.view 18 | 19 | interface FragmentListener { 20 | fun onDetachMainFragment() 21 | } -------------------------------------------------------------------------------- /android/base/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile 22 | -------------------------------------------------------------------------------- /android/app-driver/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile 22 | -------------------------------------------------------------------------------- /android/app-passenger/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile 22 | -------------------------------------------------------------------------------- /android/feature/remote/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile 22 | -------------------------------------------------------------------------------- /android/feature/rabbitmq/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile 22 | -------------------------------------------------------------------------------- /android/app-passenger/src/main/java/com/utsman/kemana/subscriber/LocationSubs.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Muhammad Utsman 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.utsman.kemana.subscriber 18 | 19 | import com.mapbox.mapboxsdk.geometry.LatLng 20 | 21 | data class LocationSubs(val latLng: LatLng) -------------------------------------------------------------------------------- /android/app-driver/src/main/java/com/utsman/kemana/driver/subscriber/LocationSubs.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Muhammad Utsman 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.utsman.kemana.driver.subscriber 18 | 19 | import com.mapbox.mapboxsdk.geometry.LatLng 20 | 21 | data class LocationSubs(val latLng: LatLng) -------------------------------------------------------------------------------- /android/app-driver/src/main/java/com/utsman/kemana/driver/subscriber/ObjectOrderSubs.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Muhammad Utsman 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.utsman.kemana.driver.subscriber 18 | 19 | import org.json.JSONObject 20 | 21 | data class ObjectOrderSubs(val jsonObject: JSONObject) -------------------------------------------------------------------------------- /android/app-passenger/src/main/java/com/utsman/kemana/subscriber/UpdateLocationSubs.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Muhammad Utsman 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.utsman.kemana.subscriber 18 | 19 | import com.mapbox.mapboxsdk.geometry.LatLng 20 | 21 | data class UpdateLocationSubs(val newLatLng: LatLng) -------------------------------------------------------------------------------- /android/app-driver/src/main/java/com/utsman/kemana/driver/subscriber/UpdateLocationSubs.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Muhammad Utsman 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.utsman.kemana.driver.subscriber 18 | 19 | import com.mapbox.mapboxsdk.geometry.LatLng 20 | 21 | data class UpdateLocationSubs(val newLatLng: LatLng) -------------------------------------------------------------------------------- /android/app-passenger/src/main/java/com/utsman/kemana/impl/view/ILocationView.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Muhammad Utsman 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.utsman.kemana.impl.view 18 | 19 | import com.mapbox.mapboxsdk.geometry.LatLng 20 | 21 | interface ILocationView { 22 | fun onLocationReady(latLng: LatLng) 23 | } -------------------------------------------------------------------------------- /backend-side/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2019 Muhammad Utsman 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | 17 | distributionBase=GRADLE_USER_HOME 18 | distributionPath=wrapper/dists 19 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-bin.zip 20 | zipStoreBase=GRADLE_USER_HOME 21 | zipStorePath=wrapper/dists 22 | -------------------------------------------------------------------------------- /android/app-driver/src/main/java/com/utsman/kemana/driver/impl/view_state/IActiveState.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Muhammad Utsman 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.utsman.kemana.driver.impl.view_state 18 | 19 | interface IActiveState { 20 | fun activeState() 21 | fun deactivateState() 22 | fun getState(): Boolean 23 | } -------------------------------------------------------------------------------- /backend-side/src/main/kotlin/com/kemana/backend/maputil/Bounding.kt: -------------------------------------------------------------------------------- 1 | package com.kemana.backend.maputil 2 | 3 | import kotlin.math.asin 4 | import kotlin.math.cos 5 | 6 | class Bounding(private val radius: Double) { 7 | private val R = 6378000.0 8 | 9 | private var latMax = 0.0 10 | private var latMin = 0.0 11 | 12 | private var lonMax = 0.0 13 | private var lonMin = 0.0 14 | 15 | fun calculate(lat: Double, lon: Double) : Bounding { 16 | val lonD = (asin(radius / (R * cos(Math.PI*lat/180))))*180/Math.PI 17 | val latD = (asin(radius / R))*180/Math.PI 18 | 19 | latMax = lat+latD 20 | latMin = lat-latD 21 | 22 | lonMax = lon+lonD 23 | lonMin = lon-lonD 24 | 25 | return this 26 | } 27 | 28 | fun getLatMax(): Double = latMax 29 | fun getLatMin(): Double = latMin 30 | fun getLonMax(): Double = lonMax 31 | fun getLonMin(): Double = lonMin 32 | } -------------------------------------------------------------------------------- /android/app-driver/src/main/java/com/utsman/kemana/driver/impl/view/ILocationView.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Muhammad Utsman 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.utsman.kemana.driver.impl.view 18 | 19 | import com.mapbox.mapboxsdk.geometry.LatLng 20 | 21 | interface ILocationView { 22 | fun onLocationReady(latLng: LatLng) 23 | fun getNowLocation() 24 | } -------------------------------------------------------------------------------- /android/app-driver/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | #008577 20 | #00574B 21 | #D81B60 22 | 23 | -------------------------------------------------------------------------------- /android/app-passenger/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | #008577 20 | #00574B 21 | #D81B60 22 | 23 | -------------------------------------------------------------------------------- /android/feature/rabbitmq/src/main/java/com/utsman/featurerabbitmq/Type.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Muhammad Utsman 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.utsman.featurerabbitmq 18 | 19 | object Type { 20 | const val ORDER_REQUEST: Int = 101 21 | const val ORDER_CONFIRM: Int = 102 22 | const val ORDER_CANCEL: Int = 103 23 | 24 | const val TRACKING: Int = 201 25 | } -------------------------------------------------------------------------------- /android/app-driver/src/main/java/com/utsman/kemana/driver/impl/presenter/ActiveStateInterface.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Muhammad Utsman 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.utsman.kemana.driver.impl.presenter 18 | 19 | interface ActiveStateInterface { 20 | fun activeState() 21 | fun deactivateState() 22 | fun setState(state: Boolean) 23 | fun getState(): Boolean 24 | } -------------------------------------------------------------------------------- /android/feature/remote/src/main/java/com/utsman/kemana/remote/driver/IRemoteView.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Muhammad Utsman 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.utsman.kemana.remote.driver 18 | 19 | interface IRemoteView { 20 | fun getAllDriver() 21 | fun getDriver(id: String) 22 | fun editDriver(id: String, position: Position) 23 | fun deleteDriver(id: String) 24 | } -------------------------------------------------------------------------------- /android/app-driver/src/main/java/com/utsman/kemana/driver/impl/view/ILocationUpdateView.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Muhammad Utsman 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.utsman.kemana.driver.impl.view 18 | 19 | import com.mapbox.mapboxsdk.geometry.LatLng 20 | 21 | interface ILocationUpdateView { 22 | fun onLocationUpdateOld(oldLatLng: LatLng) 23 | fun onLocationUpdate(newLatLng: LatLng) 24 | } -------------------------------------------------------------------------------- /android/app-driver/src/main/java/com/utsman/kemana/driver/impl/view/IOrderView.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Muhammad Utsman 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.utsman.kemana.driver.impl.view 18 | 19 | import com.utsman.kemana.remote.place.Places 20 | 21 | interface IOrderView { 22 | fun onPickup(places: Places?) 23 | fun onTake(places: Places?) 24 | fun onArrive(places: Places?) 25 | } -------------------------------------------------------------------------------- /backend-side/src/main/kotlin/com/kemana/backend/model/AddressHere.kt: -------------------------------------------------------------------------------- 1 | package com.kemana.backend.model 2 | 3 | 4 | import com.fasterxml.jackson.annotation.JsonProperty 5 | 6 | data class AddressHere( 7 | @JsonProperty("Response") 8 | val response: Response? 9 | ) 10 | 11 | data class Response( 12 | @JsonProperty("View") 13 | val view: List? 14 | ) 15 | 16 | data class Address( 17 | val label: String? 18 | ) 19 | 20 | data class Location( 21 | @JsonProperty("Address") 22 | val address: Address? 23 | ) 24 | 25 | data class ResultAddress( 26 | @JsonProperty("Location") 27 | val location: Location? 28 | ) 29 | 30 | data class MetaInfo( 31 | @JsonProperty("NextPageInformation") 32 | val nextPageInformation: String?, 33 | @JsonProperty("Timestamp") 34 | val timestamp: String? 35 | ) 36 | 37 | data class View( 38 | @JsonProperty("Result") 39 | val result: List? 40 | ) -------------------------------------------------------------------------------- /android/app-driver/src/main/java/com/utsman/kemana/driver/impl/presenter/OrderInterface.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Muhammad Utsman 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.utsman.kemana.driver.impl.presenter 18 | 19 | import com.utsman.kemana.remote.place.Places 20 | 21 | interface OrderInterface { 22 | fun onPickup(places: Places?) 23 | fun onTake(places: Places?) 24 | fun onArrive(places: Places?) 25 | } -------------------------------------------------------------------------------- /android/base/build.gradle: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Muhammad Utsman 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | apply plugin: 'com.android.library' 18 | apply plugin: 'kotlin-android' 19 | apply plugin: 'kotlin-android-extensions' 20 | apply plugin: 'kotlin-kapt' 21 | 22 | 23 | dependencies { 24 | api Design.glide 25 | kapt Design.glideKapt 26 | 27 | implementation Core.notify 28 | } 29 | 30 | apply from: '../base-module.gradle' -------------------------------------------------------------------------------- /android/base/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /android/app-passenger/src/main/java/com/utsman/kemana/impl/presenter/LocationInterface.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Muhammad Utsman 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.utsman.kemana.impl.presenter 18 | 19 | import com.mapbox.mapboxsdk.geometry.LatLng 20 | import com.utsman.kemana.impl.view.ILocationView 21 | 22 | interface LocationInterface { 23 | fun initLocation(iLocationView: ILocationView) 24 | fun onDestroy() 25 | } -------------------------------------------------------------------------------- /android/app-driver/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /android/app-passenger/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /android/app-driver/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /android/app-passenger/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /android/app-passenger/src/main/java/com/utsman/kemana/impl/view/IMessagingView.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Muhammad Utsman 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.utsman.kemana.impl.view 18 | 19 | import com.utsman.kemana.remote.place.Places 20 | import com.utsman.kemana.remote.place.PolylineResponses 21 | 22 | interface IMessagingView { 23 | fun findDriver(startPlaces: Places, destPlaces: Places, polyline: PolylineResponses) 24 | fun orderCancel() 25 | } -------------------------------------------------------------------------------- /android/feature/remote/src/main/java/com/utsman/kemana/remote/place/PlaceListener.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Muhammad Utsman 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.utsman.kemana.remote.place 18 | 19 | interface PlaceListener { 20 | fun search(query: String, from: String, places: (List?) -> Unit) 21 | fun getAddress(from: String, places: (Places?) -> Unit) 22 | fun getPolyline(from: String, to: String, result: (PolylineResponses?) -> Unit) 23 | } -------------------------------------------------------------------------------- /android/app-driver/src/main/java/com/utsman/kemana/driver/impl/view/IMapView.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Muhammad Utsman 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.utsman.kemana.driver.impl.view 18 | 19 | import com.mapbox.mapboxsdk.geometry.LatLng 20 | import com.utsman.kemana.remote.driver.OrderData 21 | 22 | interface IMapView { 23 | fun onLocationReady(latLng: LatLng) 24 | fun onLocationUpdate(newLatLng: LatLng) 25 | fun onPickupPassenger(orderData: OrderData) 26 | } -------------------------------------------------------------------------------- /android/app-passenger/src/main/java/com/utsman/kemana/impl/presenter/MessagingInterface.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Muhammad Utsman 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.utsman.kemana.impl.presenter 18 | 19 | import com.utsman.kemana.remote.place.Places 20 | import com.utsman.kemana.remote.place.PolylineResponses 21 | 22 | interface MessagingInterface { 23 | fun findDriver(startPlaces: Places, destPlaces: Places, polyline: PolylineResponses) 24 | fun orderCancel() 25 | } -------------------------------------------------------------------------------- /android/base/src/main/java/com/utsman/kemana/base/NotifyState.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Muhammad Utsman 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.utsman.kemana.base 18 | 19 | data class NotifyState(val state: Int) { 20 | 21 | companion object { 22 | const val UPDATE_LOCATION = 0 23 | const val STOP_UPDATE_LOCATION = 1 24 | const val READY = 2 25 | 26 | const val DRIVER_READY = 1100 27 | const val DRIVER_UNREADY = 1101 28 | } 29 | } -------------------------------------------------------------------------------- /backend-side/src/main/kotlin/com/kemana/backend/model/Driver.kt: -------------------------------------------------------------------------------- 1 | package com.kemana.backend.model 2 | 3 | import org.springframework.data.mongodb.core.mapping.Document 4 | 5 | @Document(collection = "driver_active") 6 | open class Driver(var id: String? = null, 7 | val name: String, 8 | val email: String, 9 | val photoUrl: String, 10 | var position: Position? = null, 11 | var attribute: Attribute? = null) 12 | 13 | @Document(collection = "driver_db") 14 | open class DriverEntity( 15 | var id: String? = null, 16 | val name: String, 17 | val email: String, 18 | val photoUrl: String, 19 | var position: Position? = null, 20 | var attribute: Attribute? = null 21 | ) 22 | 23 | data class Position(var lat: Double? = 0.0, 24 | var lon: Double? = 0.0, 25 | var angle: Double? = 0.0) 26 | 27 | data class Attribute(var vehiclesType: String? = "", 28 | var vehiclesPlat: String? = "") 29 | -------------------------------------------------------------------------------- /android/feature/remote/src/main/java/com/utsman/kemana/remote/ext.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Muhammad Utsman 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.utsman.kemana.remote 18 | 19 | import com.utsman.kemana.base.loge 20 | import com.utsman.kemana.remote.driver.* 21 | import com.utsman.kemana.remote.place.Places 22 | import org.json.JSONObject 23 | 24 | fun Throwable.printThrow(state: String) { 25 | loge("$state failed --> ${this.localizedMessage}") 26 | this.printStackTrace() 27 | } -------------------------------------------------------------------------------- /android/app-passenger/build.gradle: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Muhammad Utsman 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | apply plugin: 'com.android.application' 18 | apply plugin: 'kotlin-android' 19 | apply plugin: 'kotlin-android-extensions' 20 | apply plugin: 'com.google.gms.google-services' 21 | 22 | ext { 23 | appId = "com.utsman.kemana" 24 | } 25 | 26 | dependencies { 27 | implementation project(":base") 28 | implementation project(":feature:remote") 29 | } 30 | 31 | apply from: '../base-app.gradle' -------------------------------------------------------------------------------- /android/app-driver/build.gradle: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Muhammad Utsman 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | apply plugin: 'com.android.application' 18 | apply plugin: 'kotlin-android' 19 | apply plugin: 'kotlin-android-extensions' 20 | apply plugin: 'com.google.gms.google-services' 21 | 22 | ext { 23 | appId = "com.utsman.kemana.driver" 24 | } 25 | 26 | dependencies { 27 | implementation project(":base") 28 | implementation project(":feature:remote") 29 | } 30 | 31 | apply from: '../base-app.gradle' -------------------------------------------------------------------------------- /android/feature/rabbitmq/build.gradle: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Muhammad Utsman 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | apply plugin: 'com.android.library' 18 | apply plugin: 'kotlin-android' 19 | apply plugin: 'kotlin-android-extensions' 20 | apply plugin: 'kotlin-kapt' 21 | 22 | dependencies { 23 | implementation project(":base") 24 | implementation Message.rabbitmq 25 | implementation Message.logback 26 | } 27 | 28 | androidExtensions { 29 | experimental = true 30 | } 31 | 32 | apply from: '../../base-module.gradle' 33 | -------------------------------------------------------------------------------- /backend-side/src/main/kotlin/com/kemana/backend/controller/OrderController.kt: -------------------------------------------------------------------------------- 1 | package com.kemana.backend.controller 2 | 3 | import com.kemana.backend.model.OrderData 4 | import com.kemana.backend.model.Responses 5 | import com.kemana.backend.repository.OrderRepository 6 | import org.springframework.beans.factory.annotation.Autowired 7 | import org.springframework.web.bind.annotation.* 8 | 9 | 10 | @RestController 11 | @RequestMapping("/api/v1/order") 12 | class OrderController { 13 | @Autowired 14 | lateinit var orderRepository: OrderRepository 15 | 16 | @RequestMapping(value = ["/save"], method = [RequestMethod.POST]) 17 | fun saveOrder(@RequestBody orderData: OrderData): Responses { 18 | orderRepository.save(orderData) 19 | return Responses("ok", orderData) 20 | } 21 | 22 | @RequestMapping(value = ["/delete"], method = [RequestMethod.DELETE]) 23 | fun deleteOrder(@RequestParam("id") id: String): Responses { 24 | val orderData = orderRepository.findOrderById(id) 25 | orderRepository.delete(orderData) 26 | return Responses("OK", "delete ok") 27 | } 28 | 29 | } -------------------------------------------------------------------------------- /android/app-passenger/src/main/java/com/utsman/kemana/impl/view/IBottomMainView.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Muhammad Utsman 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.utsman.kemana.impl.view 18 | 19 | import com.utsman.kemana.remote.place.Places 20 | import io.reactivex.disposables.Disposable 21 | 22 | interface IBottomMainView { 23 | fun onSearchStartLocation(list: (List?) -> Unit): Disposable 24 | fun onSearchDestLocation(list: (List?) -> Unit): Disposable 25 | fun onClickOrder(startPlaces: Places, destPlaces: Places) 26 | } -------------------------------------------------------------------------------- /android/app-passenger/src/test/java/com/utsman/kemana/ExampleUnitTest.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Muhammad Utsman 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.utsman.kemana 18 | 19 | import org.junit.Test 20 | 21 | import org.junit.Assert.* 22 | 23 | /** 24 | * Example local unit test, which will execute on the development machine (host). 25 | * 26 | * See [testing documentation](http://d.android.com/tools/testing). 27 | */ 28 | class ExampleUnitTest { 29 | @Test 30 | fun addition_isCorrect() { 31 | assertEquals(4, 2 + 2) 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /android/base/src/test/java/com/utsman/kemana/base/ExampleUnitTest.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Muhammad Utsman 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.utsman.kemana.base 18 | 19 | import org.junit.Test 20 | 21 | import org.junit.Assert.* 22 | 23 | /** 24 | * Example local unit test, which will execute on the development machine (host). 25 | * 26 | * See [testing documentation](http://d.android.com/tools/testing). 27 | */ 28 | class ExampleUnitTest { 29 | @Test 30 | fun addition_isCorrect() { 31 | assertEquals(4, 2 + 2) 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /android/app-driver/src/test/java/com/utsman/kemana/driver/ExampleUnitTest.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Muhammad Utsman 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.utsman.kemana.driver 18 | 19 | import org.junit.Test 20 | 21 | import org.junit.Assert.* 22 | 23 | /** 24 | * Example local unit test, which will execute on the development machine (host). 25 | * 26 | * See [testing documentation](http://d.android.com/tools/testing). 27 | */ 28 | class ExampleUnitTest { 29 | @Test 30 | fun addition_isCorrect() { 31 | assertEquals(4, 2 + 2) 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /android/app-passenger/src/main/java/com/utsman/kemana/impl/presenter/BottomMainInterface.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Muhammad Utsman 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.utsman.kemana.impl.presenter 18 | 19 | import com.utsman.kemana.remote.place.Places 20 | import io.reactivex.disposables.Disposable 21 | 22 | interface BottomMainInterface { 23 | fun onSearchStartLocation(list: (List?) -> Unit): Disposable 24 | fun onSearchDestLocation(list: (List?) -> Unit): Disposable 25 | fun onClickOrder(startPlaces: Places, destPlaces: Places) 26 | } -------------------------------------------------------------------------------- /android/app-passenger/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 18 | 19 | 20 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /android/feature/remote/src/test/java/com/utsman/kemana/remote/ExampleUnitTest.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Muhammad Utsman 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.utsman.kemana.remote 18 | 19 | import org.junit.Test 20 | 21 | import org.junit.Assert.* 22 | 23 | /** 24 | * Example local unit test, which will execute on the development machine (host). 25 | * 26 | * See [testing documentation](http://d.android.com/tools/testing). 27 | */ 28 | class ExampleUnitTest { 29 | @Test 30 | fun addition_isCorrect() { 31 | assertEquals(4, 2 + 2) 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /android/feature/rabbitmq/src/test/java/com/utsman/featurerabbitmq/ExampleUnitTest.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Muhammad Utsman 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.utsman.featurerabbitmq 18 | 19 | import org.junit.Test 20 | 21 | import org.junit.Assert.* 22 | 23 | /** 24 | * Example local unit test, which will execute on the development machine (host). 25 | * 26 | * See [testing documentation](http://d.android.com/tools/testing). 27 | */ 28 | class ExampleUnitTest { 29 | @Test 30 | fun addition_isCorrect() { 31 | assertEquals(4, 2 + 2) 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /android/app-driver/src/main/java/com/utsman/kemana/driver/impl/presenter/MapsInterface.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Muhammad Utsman 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.utsman.kemana.driver.impl.presenter 18 | 19 | import com.utsman.kemana.driver.subscriber.LocationSubs 20 | import com.utsman.kemana.driver.subscriber.UpdateLocationSubs 21 | import com.utsman.kemana.remote.driver.OrderData 22 | 23 | interface MapsInterface { 24 | fun initMap(locationSubs: LocationSubs) 25 | fun startUpdate(updateLocationSubs: UpdateLocationSubs) 26 | fun pickupPassenger(orderData: OrderData) 27 | } -------------------------------------------------------------------------------- /android/app-passenger/src/main/res/xml/network_security_config.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 20 | 192.168.43.193 21 | 192.168.1.23 22 | 10.1.3.65 23 | 192.168.1.28 24 | 25 | -------------------------------------------------------------------------------- /backend-side/src/main/kotlin/com/kemana/backend/model/PlaceHere.kt: -------------------------------------------------------------------------------- 1 | package com.kemana.backend.model 2 | 3 | 4 | import com.fasterxml.jackson.annotation.JsonProperty 5 | 6 | data class PlaceHere( 7 | @JsonProperty("results") 8 | val results: List? 9 | ) 10 | 11 | data class Result( 12 | @JsonProperty("category") 13 | val category: String?, 14 | @JsonProperty("categoryTitle") 15 | val categoryTitle: String?, 16 | @JsonProperty("distance") 17 | val distance: Int?, 18 | @JsonProperty("highlightedTitle") 19 | val highlightedTitle: String?, 20 | @JsonProperty("highlightedVicinity") 21 | val highlightedVicinity: String?, 22 | @JsonProperty("href") 23 | val href: String?, 24 | @JsonProperty("id") 25 | val id: String?, 26 | @JsonProperty("position") 27 | val position: List?, 28 | @JsonProperty("resultType") 29 | val resultType: String?, 30 | @JsonProperty("title") 31 | val title: String?, 32 | @JsonProperty("type") 33 | val type: String?, 34 | @JsonProperty("vicinity") 35 | val vicinity: String? 36 | ) -------------------------------------------------------------------------------- /android/feature/remote/build.gradle: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Muhammad Utsman 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | apply plugin: 'com.android.library' 18 | apply plugin: 'kotlin-android' 19 | apply plugin: 'kotlin-android-extensions' 20 | apply plugin: 'kotlin-kapt' 21 | 22 | dependencies { 23 | implementation project(":base") 24 | 25 | implementation Retrofit.retrofit 26 | implementation Retrofit.loggingInterceptor 27 | implementation Retrofit.rxAdapter 28 | implementation Retrofit.gsonConverter 29 | } 30 | 31 | androidExtensions { 32 | experimental = true 33 | } 34 | 35 | apply from: '../../base-module.gradle' 36 | -------------------------------------------------------------------------------- /android/feature/rabbitmq/src/main/java/com/utsman/featurerabbitmq/RabbitInstance.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Muhammad Utsman 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.utsman.featurerabbitmq 18 | 19 | import com.rabbitmq.client.Connection 20 | import io.reactivex.Observable 21 | import io.reactivex.disposables.Disposable 22 | import io.reactivex.functions.Consumer 23 | import org.json.JSONObject 24 | import java.lang.Exception 25 | 26 | interface RabbitInstance { 27 | fun listen(msg: (from: String, body: JSONObject) -> Unit) : Disposable 28 | fun publishTo(id: String, msg: JSONObject, error: (Exception) -> Unit): Disposable 29 | } -------------------------------------------------------------------------------- /android/app-driver/src/main/res/layout/activity_auth.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 23 | 24 | 28 | 29 | -------------------------------------------------------------------------------- /android/app-passenger/src/main/res/layout/activity_auth.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 23 | 24 | 28 | 29 | -------------------------------------------------------------------------------- /android/app-driver/src/main/res/layout/component_splash_screen.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 23 | 24 | 29 | 30 | -------------------------------------------------------------------------------- /android/app-passenger/src/main/java/com/utsman/kemana/impl/view/IMapView.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Muhammad Utsman 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.utsman.kemana.impl.view 18 | 19 | import com.mapbox.mapboxsdk.geometry.LatLng 20 | import com.utsman.kemana.remote.driver.OrderData 21 | import com.utsman.kemana.remote.place.Places 22 | import com.utsman.kemana.remote.place.PolylineResponses 23 | 24 | interface IMapView { 25 | fun mapStart(startLatLng: LatLng) 26 | fun mapReady(start: Places, destination: Places, polyline: PolylineResponses?) 27 | fun mapPickup(orderData: OrderData) 28 | fun failedServerConnection() 29 | fun dispose() 30 | } -------------------------------------------------------------------------------- /android/app-driver/src/main/java/com/utsman/kemana/driver/impl/presenter/LocationInterface.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Muhammad Utsman 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.utsman.kemana.driver.impl.presenter 18 | 19 | import com.mapbox.mapboxsdk.geometry.LatLng 20 | import com.utsman.kemana.driver.impl.view.ILocationUpdateView 21 | import com.utsman.kemana.driver.impl.view.ILocationView 22 | import io.reactivex.disposables.Disposable 23 | 24 | interface LocationInterface { 25 | fun initLocation(iLocationView: ILocationView) 26 | fun startLocationUpdate(iLocationUpdateView: ILocationUpdateView): Disposable 27 | fun getNowLocation(): LatLng 28 | fun onDestroy() 29 | } -------------------------------------------------------------------------------- /android/app-passenger/src/main/java/com/utsman/kemana/impl/presenter/MapsInterface.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Muhammad Utsman 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.utsman.kemana.impl.presenter 18 | 19 | import com.mapbox.mapboxsdk.geometry.LatLng 20 | import com.utsman.kemana.remote.driver.OrderData 21 | import com.utsman.kemana.remote.place.Places 22 | import com.utsman.kemana.remote.place.PolylineResponses 23 | 24 | interface MapsInterface { 25 | fun mapStart(startLatLng: LatLng) 26 | fun mapReady(start: Places, destination: Places, polyline: PolylineResponses?) 27 | fun mapPickup(orderData: OrderData) 28 | fun failedServerConnection() 29 | fun dispose() 30 | } -------------------------------------------------------------------------------- /android/app-driver/src/main/res/drawable/ic_end_trip.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 23 | 24 | 27 | 29 | -------------------------------------------------------------------------------- /android/app-passenger/src/main/res/drawable/ic_end_trip.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 23 | 24 | 27 | 29 | -------------------------------------------------------------------------------- /android/app-driver/src/main/res/drawable/ic_pin.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 23 | 24 | 27 | 29 | -------------------------------------------------------------------------------- /android/app-passenger/src/main/res/drawable/ic_pin.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 23 | 24 | 27 | 29 | -------------------------------------------------------------------------------- /android/feature/remote/src/main/java/com/utsman/kemana/remote/place/Model.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Muhammad Utsman 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.utsman.kemana.remote.place 18 | 19 | import com.google.gson.annotations.SerializedName 20 | 21 | data class Places( 22 | val id: String?, 23 | val placeName: String?, 24 | val addressName: String?, 25 | val geometry: List?, 26 | @SerializedName("geometry_draw_url") 27 | val geometryDrawUrl: String? 28 | ) 29 | 30 | data class PlacesResponses( 31 | val size: Int?, 32 | val places: List? 33 | ) 34 | 35 | data class PolylineResponses( 36 | val distance: Double?, 37 | val geometry: String? 38 | ) -------------------------------------------------------------------------------- /android/app-driver/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 23 | 24 | 28 | 29 | -------------------------------------------------------------------------------- /android/app-driver/src/main/res/layout/fragment_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 22 | 23 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /android/app-passenger/src/main/res/layout/activity_maps.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 22 | 23 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /android/app-passenger/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 25 | 26 |