- Please implement incremental search
- Please do not use any libraries
- Please add API request throttling
- The design can be as simple as you like
Various screen shots on different devices - dark mode, japanese language set on phone etc.
- Search name -
- Splash
- Home - show the search feature in gitHub repository names
- Search items details
- Unit Test case
- UI Test cases
- github_repo_search_iOS_appTests
- github_repo_search_iOS_appUITests
- xCode 12.3 (Developed)
- iOS 13 (minimum support version)
- Swift 4.0
- Clone this repo
- Open project in xcode
- Select team signing and capability
- MVVM design pattern
- SwiftUI - used for UI development
- Swift - used for logical part
- Follow below folder structure and use the files
- UI - screens UI
- Splash
- Home
- Search Items Details
- Util - utils file reusable
- Data - Model class and data to be used in app, Network, Repository api calls etc.
- Resources - Image and localization files
- Need to check search result api all keys validations eg. if nil then need to change the declaration of variable as nil/?
- Debug - for development purpose
- Inhouse - for testing purpose
- Release - release on app store
- English
- Japanese
- Light
- Dark
- Design UI to handle / display UI on both portrait and landscape mode properly
- Verified app on iPAD and different small and big size screens
- Verify memory leaks, extra view hierarch etc. - https://developer.apple.com/documentation/xcode/diagnosing-and-resolving-bugs-in-your-running-app
- https://developer.github.com/v3/search/
- GET /search/repositories
- Search for repo name https://api.github.com/search/repositories?q=swift%20in:name&per_page=40&page=1
You need to successfully authenticate and have access to the repositories in your search queries, otherwise, you'll see a 422 Unprocessible Entry error with a "Validation Failed" message. For example, your search will fail if your query includes repo:, user:, or org: qualifiers that request resources that you don't have access to when you sign in on GitHub.
https://api.github.com/search/repositories?q=
{
"message": "Validation Failed",
"errors": [
{
"resource": "Search",
"field": "q",
"code": "missing"
}
],
"documentation_url": "https://docs.github.com/v3/search"
}
https://api.github.com/search/repositories?q=%20in:name
{
"message": "Validation Failed",
"errors": [
{
"message": "None of the search qualifiers apply to this search type.",
"resource": "Search",
"field": "q",
"code": "invalid"
}
],
"documentation_url": "https://docs.github.com/v3/search/"
}
error handling for invalid url, not found, search/repositories/ not valid url, valid is search/repositories
https://api.github.com/search/repositories/?q=%22swiftui%22
{
"message": "Not Found",
"documentation_url": "https://docs.github.com/rest"
}
- Complete all unit test case
- Complete all ui test cases
- Add CI/CD - bitrise/deploygate/fastlane
- Remove all prints statements
- Implement some logger to write logs on file, don't write logs in release mode
- Check gitHub api response format - check for all nil fields
- Implement search items details screen with more info
- Replace attractive app icons
- Dinakar Maurya
- dinkar1708@gmail.com