Skip to content

AlexeyOrlovsky/TestProject-abz.agency

Repository files navigation

Logo-2

Test task for the company ABZ.agency. The project also serves as an example of my code.

Make sure to read the documentation and follow all recommendations

Swift Platforms Dependencies

🚀 Getting started

  • 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!

📦 Dependencies

  • 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.

🧩 Project Details

  • 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.

    📂📁 Project structure

  • 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.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages