Test task for the company ABZ.agency. The project also serves as an example of my code.
- Open
TestProject-abz.agency.xcodeproj.
- Select a development team in the project settings.
- At the moment there are no scripts in the project that need to be run after installing the project. But! Make sure the following is installed on your Mac!
- Make sure you have it installed SwiftGen - is a tool to automatically generate Swift code for resources. If not installed, follow the Instruction
- Also after installing swiftGen, make sure that all Packages are loaded!
- Alamofire - For making HTTP requests and handling network responses.
- Factory - For creating and managing dependencies using Dependency Injection (DI).
- FlowStacks - For managing navigation in SwiftUI with support for screen stacks and deep navigation.
- JWTDecode - For decoding JWT tokens without needing to send them to a server.
- KeychainAccess - For securely storing sensitive data like passwords and tokens in the iOS Keychain.
- This approach was chosen because the project uses
SwiftUI
, and MVVM is a great fit, allowing for a multi-modular application. - The architecture makes it easier to maintain and extend the product in the future. The
Coordinator
pattern, which involves using a separate module responsible for navigation, helps reduce coupling between modules and integrates well with MVVM. App
- Responsible for launching the application + Coordinator.Dependency Injection
- Dependency Injection simplifies object creation, management, and testing by using factories for app modules and coordinators.Common
- Reusable global UI components for consistent app design.Modules
- MVVM implementations for app screens (e.g., Launch, Registration).Networking
- Networking layer handling HTTP requests (GET, POST, etc.).Utils
- Global managers, extensions, and utilities (e.g., Logger).Resources
- SwiftGen outputs, localizations, fonts, assets, and colors.