This application has the following functional capabilities:
-
Input Points. On the first screen, the user has the ability to enter a certain number of points.
-
Loading and Displaying Points. After entering the points, data is loaded over the network, and then the points are displayed on the next screen.
Note: The network part has been mocked to allow the application to run without a configured backend, but the network stack is fully functional.
screen_demo.mp4
-
SwiftUI iOS 15.0+
-
Written from scratch without the use of third-party libraries and external dependencies.
-
Examples of writing Unit tests are provided (PointService classes, HTTPRequester, including the view model - InputPoints).
-
Handling of network disconnection, interruption, timeout, and backend errors.
-
Localization in English and Russian languages.
-
Support for landscape mode.
-
For pinch + pan gestures (when viewing points on the graph), input data obtained from UIScrollView is used through UIViewRepresentable. However, the drawing is implemented through SwiftUI.
MainScene
└── TwoSceneNavigation ── ProcessPoints
├── InputPointsView ── ├── InputPoints
└── DisplayPointsView ── └── DisplayPoints
InputPoints ── PointService ── HTTPRequester ── URLSession
InputPoints is responsible for inputting points. DisplayPoints is responsible for displaying points. ProcessPoints is the coordination part between the two screens.