Welcome to the MarketplaceCase iOS project! This project is developed using Xcode and follows a modular architecture. It leverages Swift Package Manager (SPM) for managing modules, making it easy to maintain and extend.
The project is structured into several Swift packages, each serving a specific purpose:
-
Localization 🌍:
- Contains all language support and string localization.
-
DesignSystem 🎨:
- Includes fonts, colors, spacing, radii, images, and asset files used throughout the app.
-
CommonUI 🚀:
- Provides common UI components and elements shared across modules (e.g., Solid Button).
-
Network 🌐:
- Handles all network operations, requests, and responses.
-
MarketplaceCore 🏢:
- Houses shared structures used across modules, such as public interfaces (e.g.,
LoginModuleBuilder
,DiscoveryModuleBuilder
), Alert routable, TabBarController, and TabBarConfigurator. This separation ensures that modules don't have direct dependencies on each other.
- Houses shared structures used across modules, such as public interfaces (e.g.,
-
LoginModule:
- Contains all components related to the login screen, including router, presenter, view, interactor, email and password validators, and login module configurator.
-
DiscoveryModule:
- Encompasses all components for the discovery screen, including router, presenter, view, interactor, email and password validators, and discovery module configurator. The screen utilizes
UICollectionViewCompositionalLayout
andUICollectionViewDiffableDataSource
for listing discover products.
- Encompasses all components for the discovery screen, including router, presenter, view, interactor, email and password validators, and discovery module configurator. The screen utilizes
- Each module follows the VIPER architecture, consisting of ViewController, Presenter, Interactor, and Router.
- Configurators and dependency entities are utilized within each module:
- Dependency: Contains objects needed externally by the module.
- Configurator: Configures the module, including its dependencies, and returns the view controller.
- Unit tests are written for components within the LoginModule:
- EmailValidator
- PasswordValidator
- LoginService
-
Clone the repository to your local machine.
-
Open the Xcode project
MarketplaceCase.xcodeproj
. -
Build and run the project using Xcode.
Contributions to the MarketplaceCase project are welcome! Feel free to open issues and pull requests for bug fixes, features, or enhancements.
Not available.
🚀 Happy coding! 📱🎉