|
1 |
| -# Weedmaps Android Code Challenge! |
2 |
| - |
3 |
| -Hi there! Thank you for taking the time to conduct the Weedmaps Android code challenge. Please use this as a foundation to help you save time setting up your workspace; this project already contains some common dependencies and frameworks used in most Android projects. |
4 |
| -**If there are other dependencies and/or frameworks that you'd like to introduce/use please feel free to add them!** |
5 |
| - |
6 |
| -# Dependencies |
7 |
| - - Kotlin Ext |
8 |
| - - Kotlin Coroutines |
9 |
| - - Mockito Kotlin |
10 |
| - - Koin |
11 |
| - - Retrofit |
12 |
| - - Moshi |
13 |
| - - Glide |
14 |
| - |
15 |
| -## First Things First |
16 |
| -Register and get a token for the Yelp Fusion API [https://www.yelp.com/developers/documentation/v3/authentication](https://www.yelp.com/developers/documentation/v3) |
| 1 | +# Introduction |
| 2 | +Hi there! Thank you for taking the time to conduct the Weedmaps Android code challenge! A project template has been provided for you. Please focus on meeting the requirements, if you’d like to showcase additional skills you may feel free to do so although it is not expected. Feel free to take any creative liberties with interface design so long as they do not deviate from the requirements of the challenge. |
| 3 | + |
| 4 | +## Expected Time Commitment |
| 5 | +We ask candidates to allocate **4-6 hours** for this assignment. Keep in mind this doesn’t have to be all in one sitting. You may spend no longer than **5 days** to complete this assignment, however if more time is needed please reach out! |
| 6 | + |
| 7 | +# Overview |
| 8 | +Leveraging the [Yelp Fusion API](https://docs.developer.yelp.com/docs/fusion-intro), build an app that displays businesses based on the user’s input in the search field. Follow the [instructions here](https://docs.developer.yelp.com/docs/fusion-authentication) to obtain an API Key for the Yelp Fusion API (don’t be worried about hard-coding the key into your app for this assignment). You may use the [designs here](https://www.figma.com/file/vcfmVmKtPf4hPwIm12jfQ5/Android-Homework?type=design&node-id=2-9&mode=design&t=EXoeVDU6A6rwhxmO-0) as a guideline for your interface. For your UI, please utilize [Jetpack Compose](https://developer.android.com/jetpack/compose) if possible, and avoid using any 3rd party UI frameworks. If you aren’t familiar with Compose, feel free to write in Android XML instead. Do not feel obligated to utilize all the properties and stubs in the project template. |
| 9 | + |
| 10 | +## Dependencies |
| 11 | +- [Kotlin Extensions](https://kotlinlang.org/docs/extensions.html) |
| 12 | +- [Kotlin Coroutines](https://kotlinlang.org/docs/coroutines-overview.html) |
| 13 | +- [MockK](https://notwoods.github.io/mockk-guidebook/docs/quick/android/) (Unit Testing) |
| 14 | +- [Koin](https://insert-koin.io/) |
| 15 | +- [Retrofit](https://square.github.io/retrofit/) |
| 16 | +- [GSON](https://github.com/google/gson) |
| 17 | +- [Jetpack Compose](https://developer.android.com/jetpack/compose) |
| 18 | +- [Coil for Compose](https://coil-kt.github.io/coil/compose/) |
| 19 | +**Note:** You are free to add any other dependencies and/or frameworks that you'd like but we may ask about why you chose to include them. |
17 | 20 |
|
18 | 21 | ## Requirements
|
| 22 | +Requirements will differ based off of the level you are applying for. Please consult with your recruiter if you need clarification on requirements. |
| 23 | +**Important:** The Yelp Fusion API has a **query-per-second limit of 5**, and limited to **500 API requests per 24 hours.** Keep this in mind when configuring your API requests, otherwise you’ll receive a 429 HTTP error code for some of your requests. If you’d like, show us how you’d mitigate the query-per-second issue in your approach. |
19 | 24 |
|
20 |
| - 1. You will be building a simple search expereince using the yelp API. [here](https://www.figma.com/file/vcfmVmKtPf4hPwIm12jfQ5/Android-Homework?node-id=2%3A9). The data will be coming from the Yelp api linked below. Your application should return businesses based on the user's input in the search field. |
21 |
| - |
22 |
| - 2. Each business you show in the list should include: **name of the business**, **an image of the business**, and **the top review of the business(reference [here](https://www.yelp.com/developers/documentation/v3/business_reviews) for how to get the business review)**. |
23 |
| - |
24 |
| - ### If you are apply for a senior role, you must also: |
25 |
| - |
26 |
| - 3. The list must endlessly scroll based on the API's paging functionality. |
27 |
| - 4. Include Unit Tests for parts of your code with important functionality (no need to get 100% code coverage on the whole project). |
28 |
| - |
29 |
| - |
30 |
| -## If you are applying for a senior role, please do at least 2 of the following: |
31 |
| - 1. Requesting the user's location and sending that up in the request |
32 |
| - 2. Save the list of a user's recent searchers and display those to the user as autocomplete suggestions |
33 |
| - 3. Provide integration tests that verify the behavior established above |
34 |
| - 4. Provide caching of the api requests which is invalidated after 15 days |
35 |
| - |
36 |
| -## FAQ: |
37 |
| - - What if a link is broken above? Please reach out and we'll get those fixed. |
38 |
| - - What if I have any questions? Pretend your PM is on vacation, please use your best judgement and be able to speak as to why you made certain decisions. |
39 |
| - - Can I modify the designs? Yes, within reason. Stay as true to them as you can, and be prepared to explain any changes you make |
40 |
| - - Can I use other/additional libraries that aren't listed? Yes, just be ready to talk about them |
41 |
| - |
42 |
| -## Notes |
43 |
| - |
44 |
| - - **Important:** The Fusion API has a **query-per-second limit of 5**. Keep this in mind when configuring your API requests, otherwise you’ll receive a 429 HTTP error code for some of your requests. It would be a good idea to throttle the speed of your subsequent network requests. |
45 |
| - |
46 |
| -## Links |
47 |
| - |
48 |
| - - [Yelp Fusion API Documentation](https://www.yelp.com/developers/documentation/v3) |
49 |
| - |
50 |
| -## Project Submission Instructions |
51 |
| - |
52 |
| -Please submit either of the following to the link from the email containing your coding HW: |
53 |
| -A) your completed .zip file |
54 |
| -B) the link to a public repo with your completed project |
| 25 | +## FAQ |
| 26 | +- What if a link is broken above? Please reach out and we'll get those fixed. |
| 27 | +- What if I have any questions? Pretend your product manager is on vacation, please use your best judgment and be able to speak as to why you made certain decisions. |
| 28 | +- Can I modify the designs? Yes, **within reason.** Stay as true to them as you can, and be prepared to explain any changes you make. |
55 | 29 |
|
| 30 | +# Submission |
| 31 | +Clone the git repository and complete using local IDE (Android Studio). Commits and created branches will show up on HackerRank web repository viewer. Please have the final submission merged into the master branch. Submit on HackerRank when the project is completed. If HackerRank isn't being used for this assessment, either ZIP the project file or provide a link to the public repository with your completed project. |
| 32 | +**Note:** Disregard the "Run Tests" button on the bottom right of the HackerRank project viewer. |
0 commit comments