Skip to content
This repository has been archived by the owner on Jun 26, 2024. It is now read-only.

AppSci/Words-Booster-iOS-TestTask

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 

Repository files navigation

Words-Booster-iOS-TestTask

Coding challenge for iOS Engineers.

Write a simple application that allows users to see a list of animal categories and read interesting facts about them. You should provide your solution as a link to a public repository on any git hosting service you prefer: GitHub, GitLab, Bitbucket. Please make commits of logical units to evaluate your progress and add comments as you see fit.

Functional Requirements

First of all, on app launching the content should start to load from the link which you can find in the Resources section.

Content stored in JSON format and has the following structure:

[
  {
    "title": “Some title",
    "description": “Some description",
    "image": “image url",
    "order": 1,
    "status": “paid/free",
    "content": [
        {
          "fact": “Some fact",
          "image": “image url"
        }
    ]
  }
]

Application Screens

Animal Categories List

On this screen, users can see a list of animal categories. Please, provide a loading state if the content has not loaded yet. When the content is loaded the list appears. All items should be sorted by the order. Each item view consists of following elements:

  • Image
  • Category name
  • Category description
  • Status(free/paid). This means that you need to provide 2 states for free and paid categories. Also in a case when field content is empty then provide one extra state(for example coming_soon).

Scenarios on Animal Categories List:

  • Tap on the free item -> The navigation to the Facts Screen happens.
  • Tap on the paid item -> The alert with title Watch Ad to continue and Cancel, Show Ad buttons should be shown. By tapping on Show Ad we just show loader for 2 seconds and then navigation to Facts Screen is happening. By tapping on Cancel we just hide alert.
  • Tap on coming_soon item -> The alert with button Ok and appropriate title is shown.

You can find sample of design in Resources and Design Example sections.

Facts Screen

This screen consists of:

  • Navigation bar with the Back button and the title of the category.
  • Horizontal list of fact items that should be implemented in a paging way. Only one item has to be shown on screen at the moment.
  • Each item consists of the Image, Text, Next and Previous buttons.

Scenarios on Facts Screen:

  • Tap on the Back button -> Navigate to Animal Categories List
  • Tap on Next button or Swipe forward -> move to next fact
  • Tap on Previous button or Swipe backward -> move to previous fact

You can find sample of design in Resources and Design Example sections.

Advanced Requirements

Choose only one task:

  • Add local storage for content(Realm is preferred, but decision is up to you)
  • Add possibility to add some facts to the favorites. To simplify this task it can be just additional category in the list and favourite items appears there.
  • Provide possibility to share fact with Apple's share sheet.

Technical Requirements

  • Swift is required.
  • MVVM architectural pattern is preferred.
  • SwiftUI is preferred.
  • Combine is preferred.
  • DI preferred.

Design Example

Here is an example how application might look like, but the final decision is up to you.

Сategories List Example Facts Screen Example

Resources

P.S.

If something is unclear, feel free to ask any question to our Recruitment Team

About

Coding challenge for iOS Engineers.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published