Super-Marvel is an iOS app that uses the Marvel API to display a list of Marvel characters and their details. You can browse through hundreds of heroes and villains from the Marvel universe, see their comics, and learn more about their powers and abilities.
This app is created as a personal project to showcase my skills and passion for iOS development. This app demonstrates how to implement Clean Architecture and some of the best practices for iOS app development using UIKIt, Combine, MVVM-C, SwiftLint, SwiftGen, and more.
Report bug
·
Request feature
- Video
- Screenshots
- Setup
- Marvel APIs
- Folder Structure
- Tools & Frameworks Used
- Upcoming Features
- Development Environment
- License
It's recommended that all team members work on a project depending on ruby & ruby gems to have the same project setup in order to avoid any version conflicts and to avoid inconvenience issues. so please everyone, follow the following steps to make sure you have the appropriate setup for the project.
-
Ruby If you use macOS, system Ruby is not recommended. There is a variety of ways to install Ruby without having to modify your system environment. For macOS and Linux, rbenv is one of the most popular ways to manage your Ruby environment. It's recommended to install rbenv via HomeBrew. Install Ruby 2.7.6 by running:
rbenv install 2.7.6
the app supports Ruby versions 2.7.6 or newer. Verify which Ruby version you're using:
ruby --version
result for example-> $ ruby 2.7.6p137 (2022-02-01 revision 5445e04352) [x86_64-darwin19]
-
Bundler It is recommended that you use Bundler and Gemfile to define the dependency of the app.
Install Bundler by running:sudo gem install bundler
-
Install Ruby Gems
in the project directory
by running:sudo bundle install
Note: Try to restart the terminal and open it in the project directory again if you can't install the gems
-
Arkana Environment file
NOTE:To skip step #4 and step #5, check out this branch
quick-startCreate a file called
.env
in the root directory of the project and add the following lines to it:MarvelPrivateKey=your_private_key MarvelPublicKey=your_public_key MarvelHashKey=make_hash_by_MD5 MarvelTimeStamp=current_time_stamp
To get your own keys, look at
Marvel APIs to start using Marvel APIs Keys. -
Run the following command to generate the ArkanaKeys local package that will be used to securely fetch your keys in runtime:
bin/arkana
-
Cocoapods Installation
in the project directory
by running:bundle exec pod install
-
Fastlane (Configured)
As this project uses the Marvel API, you need to get your own API keys to run the project. You can get them by following these steps:
- Go to the Marvel Developer Portal and create an account.
- Once you have an account, go to the Get a Key page and get your public and private keys.
📦SuperMarvel
┣ 📂AppSchems
┣ 📂Core
┣ 📂DataModels
┃ ┣ 📂Mappers
┃ ┣ 📂Character
┣ 📂Networking
┣ 📂APIs
┣ 📂Requests
┣ 📂UseCases
┃ ┣ 📂Character
┃ 📂Repositories
┣ 📂Base
┃ ┣ 📂Config
┃ ┣ 📂Wrappers
┃ ┣ 📂TypeAlias
┃ ┣ 📂Services
┃ ┗ 📂Observers
┣ 📂Coordinators
┣ 📂Scenes
┃ ┣ 📂Splash
┃ ┣ 📂Character
┃ ┃ ┃ ┣ 📂Characters
┃ ┃ ┃ ┗ 📂CharacterDetails
┣ 📂Extensions
┣ 📂Localize
┣ 📂Assets
┣ 📂Helpers
┃ ┣ 📂Toast
┣ 📂SupportFiles
┗ 📜SuperMarvelApp.swift => The app entry point.
Tool | Used for |
---|---|
SwifGen | tool to automatically generate Swift code for resources of your projects |
Arkana | Securely storing secrets and keys |
Kingfisher | Image Loading & Caching |
SwiftLint | Code Linting |
Moya | Networking Layer tool |
NVActivityIndicatorView | collection of awesome loading animations |
L10-Swift | improves localization in swift app, providing cleaner syntax and in-app language switching. |
Mockingbird | Generating mock, stub, and verify objects in Swift unit tests |
- Xcode 14.3.1
- Swift 5.8
- iOS Deployment Target 13.0
- Ruby Version 2.7.6
- Coocapods 1.12.1
This project is licensed under the MIT License - see the LICENSE file for details