GithubHelp home page GithubHelp logo

isoguzay / foursquareapicompose Goto Github PK

View Code? Open in Web Editor NEW
7.0 2.0 3.0 2.62 MB

πŸ‘¨β€πŸ’» An android assignment project with Jetpack Compose, Coroutines, ViewModel, LiveData, Retrofit, Hilt and based on MVVM by using FourSquare Place API and Google Maps Compose 🌍 πŸ“

Kotlin 100.00%
android jetpack-android jetpack-compose jetpack-lifecycle-components kotlin-android kotlin-coroutines livedata-viewmodel hilt-android retrofit2 foursquare-api

foursquareapicompose's Introduction

Adyen Android Assignment - Ismail Oguzhan Ay

πŸ“ Foursquare Places API - Android Application

Latest Version Kotlin Minimum SDK Version Android Gradle Version Gradle Version

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.

β„Ή Introduction

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.

What You Will Need

Hardware Requirements

  • A computer that can run Android Studio.
  • An Android phone for debugging.

Software Requirements

  • Android SDK package
  • Android Studio 4.X

πŸ›  Features

  • Get location permissions
  • Get user current location
  • Show nearby places on Google Map
  • Show places information on Google Map

πŸ“± Screenshots

πŸ“² Download

Go to the Releases to download the latest APK.

πŸ— Tech Stack

Architecture

  • 100% Kotlin based, including Gradle files
  • MVVM Clean & Single-Based Architecture
  • Repository Pattern

Libraries

  • Minimum SDK level 21 + based on Kotlin

  • Coroutines - Perform asynchronous operations

  • Hilt - for dependency injection

  • Jetpack Libraries

    • Compose - Build modern declarative Android UI
    • Lifecycle - Observe lifecycle state changes
    • ViewModel - Store UI related data
  • Retrofit Client - Execute network service calls

  • Splash API - Customize your Splash without effort

  • Timber - Log your messages

Services

πŸ“ How to get the Foursquare API key?

Register here and get your own Foursquare API key for your builds. You should add your API key to local.gradle.

🌍 How to get the Google MAPS API key?

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.

πŸ’³ Cash Register App

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.

Adyen Android Assignment - Requirements

This repository contains the coding challenge for candidates applying for a Senior Android role at Adyen. It consists of two unrelated parts:

1. Cash Register

Your first task is to implement a cash register. See the cashregister module.

Criteria:

  • The CashRegister gets initialized with some Change.
  • When performing a transaction, it either returns a Change object or fails with a TransactionException.
  • The CashRegister keeps track of the Change that's in it.

Bonus points:

  • The cash register returns the minimal amount of change (i.e. the minimal amount of coins / bills).

2. App

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.

Setup

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

foursquareapicompose's People

Contributors

isoguzay avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.