A template to create UIKit applications using the MVVM-C (Model-View-ViewModel-Coordinator) architecture pattern. Refer to this project for a full implementation: Anthony-Movie-App
This template provides a robust starting point for developing UIKit applications with a clear separation of concerns, ensuring maintainability and scalability. It leverages MVVM-C architecture to manage the app's flow and dependencies efficiently.
This template utilizes the following technologies and frameworks:
- MVVM-C: Model - View - ViewModel - Coordinator
- RxSwift: Reactive programming in Swift
- Coordinator pattern: Navigation management
- DifferenceKit: High-performance diffing algorithm for data changes
- Moya/Reactive: Network abstraction layer
- Kingfisher: Image downloading and caching library
- Resolver: Dependency injection framework
- Lottie-iOS: Animation library for complex animations
- SwiftEntryKit: Presentation controller for UI elements
├── Models
│ ├── Entities
│ └── Data
├── Views
│ ├── ViewControllers
│ └── CustomViews
├── ViewModels
├── Coordinators
├── Services
│ ├── Network
│ └── Data
├── Resources
│ ├── Assets
│ └── Localizations
├── SupportingFiles
│ ├── AppDelegate.swift
│ └── Info.plist
└── Tests
├── UnitTests
└── UITests
To use this template, follow these steps:
- Clone the repository:
git clone https://github.com/anthony1810/UIKIT_MVVMC_Template.git
- Navigate to the project directory:
sh cd Template
- Install dependencies using CocoaPods:
sh pod install
- Open the .xcworkspace file in Xcode:
sh open Template.xcworkspace
Follow these steps to utilize the template:
- Add Models: Define your data models in the
Models
directory. - Create Views: Design your user interface in the
Views
directory. - Implement ViewModels: Write your business logic in the
ViewModels
directory. - Setup Coordinators: Manage navigation flow in the
Coordinators
directory. - Connect Services: Implement network and data services in the
Services
directory.
Refer to the included example project for detailed usage and examples.
Contributions are welcome! Please follow these steps:
- Fork the repository.
- Create a new branch (
git checkout -b feature/YourFeature
). - Commit your changes (
git commit -m 'Add some feature'
). - Push to the branch (
git push origin feature/YourFeature
). - Open a pull request.
This project is licensed under the MIT License - see the LICENSE file for details.