└── README.md /README.md: -------------------------------------------------------------------------------- 1 | # Speer Technologies Android assessment 2 | 3 | 4 | ## Overview 5 | 6 | The goal of this assessment is to build a basic Android application which demonstrates common tasks such as fetching data, parsing model entities from JSON, UI, and navigation. You may write the app using what you're most comfortable with, whether it's Java or Kotlin. 7 | 8 | ### Requirements 9 | 10 | For this asessment you'll need to familiarize yourself with parts of the [GitHub REST API](https://docs.github.com/en/rest). The required features we'd like to see built are: 11 | 12 | 1. A search bar that enables us to fetch GitHub user profiles by username: 13 | - If no user exists with the username provided, present a "Not found" view 14 | - If the user exists, present a view with that user's: 15 | 1. Avatar 16 | 2. Username 17 | 3. Name 18 | 4. Description 19 | 5. Follower count, i.e. *X followers* 20 | 6. Following count, i.e. *X following* 21 | 2. A view which displays a list of the user's followers, as well as a view for who they're following 22 | - We should be able to navigate to this view by tapping on the follower/following counts 23 | - If a user in this list is tapped, it should navigate us to their profile view 24 | 3. The ability to navigate backwards through the navigation stack 25 | 26 | Show us what you can do in no more than 24 hours. Keep a log of the time spent and include it with your submission. Note that there are no designs to follow for this assessment, so you have creative freedom when it comes to the layout and so on. 27 | 28 | ##### Bonus features 29 | 30 | These features aren't mandatory, but if you have extra time and want to stand out feel free to add any of the following: 31 | 32 | - Skeleton screens 33 | - Pull to refresh 34 | - Profile caching & cache invalidation 35 | 36 | 37 | ### Grading 38 | 39 | This exercise will be graded on a number of criteria including, but not limited to: 40 | - Clean, readable, and well documented code 41 | - Adherence to the SOLID principles 42 | - Utilization of an architectural pattern 43 | 44 | 45 | ### Submission 46 | After you're done with the assignment, please submit a link to the **GitHub/Bitbucket repository** (make sure it's public) with your code. Submissions without a valid repository will be removed from any further consideration. 47 | 48 | #### Goodluck! 49 | --------------------------------------------------------------------------------