An android assignment project with Jetpack Compose, Coroutines, ViewModel, LiveData, Retrofit, Hilt and based on MVVM by using Foursquare Places API and Google Maps Compose.
It is about a demonstration application with Foursquare Places API. You get places(venues) information from Foursquare Places API service, then shows them on Google Maps. When you click on a place(marker on map), get details about the place. It starts with Adyen location, if you want see your current location places, you can click my location button and get them.
Hardware Requirements
- A computer that can run Android Studio.
- An Android phone for debugging.
Software Requirements
- Android SDK package
- Android Studio 4.X
- Get location permissions
- Get user current location
- Show nearby places on Google Map
- Show places information on Google Map
Go to the Releases to download the latest APK.
- 100% Kotlin based, including Gradle files
- MVVM Clean & Single-Based Architecture
- Repository Pattern
-
Minimum SDK level 21 + based on Kotlin
-
Coroutines - Perform asynchronous operations
-
Hilt - for dependency injection
-
Jetpack Libraries
-
Retrofit Client - Execute network service calls
-
Splash API - Customize your Splash without effort
-
Timber - Log your messages
- Foursquare API Service - FourSquare Places API πΊπ
- Google Maps Compose - Google Maps with Jetpack Compose π
Register here and get your own Foursquare API key for your builds. You should add your API key to local.gradle.
Register here and get your own Google Maps API key for your builds. You should add your API key to as a meta-data under the AndroidManifest.xml file.
Implement logic of cash register module. It gets two parameters with price and amountPaid. Cash register also has change values. The arithmetic operation calculate the minimal result of change operation.
For more information, please check test cases.
This repository contains the coding challenge for candidates applying for a Senior Android role at Adyen. It consists of two unrelated parts:
Your first task is to implement a cash register. See the cashregister
module.
Criteria:
- The
CashRegister
gets initialized with someChange
. - When performing a transaction, it either returns a
Change
object or fails with aTransactionException
. - The
CashRegister
keeps track of theChange
that's in it.
Bonus points:
- The cash register returns the minimal amount of change (i.e. the minimal amount of coins / bills).
Your second task is to implement a small app using the Foursquare Places API. See the app
module.
The app should show a list of venues around the userβs current location. Decide yourself which venue details should be relevant to the user. You have full freedom on how to present data on screen. We've already added some code to make it a bit easier for you, but you are free to change any part of it. We are going to check your implementation for understanding Android specifics (like handling configuration changes), UX choices, and overall architecture. You are free to add any feature or code you want, but we also value quality over quantity, so whatever you decide to do, try to show us your best.
Add your Foursquare client ID and secret to local.gradle
. See local.gradle.example
for details.
Tip: You can verify your credentials with src/test/java/com/adyen/android/assignment/PlacesUnitTest.kt