Taskem is a way to browse and maintain your tasks and goals on any iPhone device. Keep an eye on your tasks with the ability to view everything. The project’s goal is to show practices of using VIPER architecture and Unit Testing in iOS using swift 5. In addition, the app has an example of code with Unit Test coverage.
This project's code follows the VIPER pattern, first introduced by Mutual Mobile. VIPER is an implementation of Clean Architecture to iOS apps. The word VIPER is a backronym for View, Interactor, Presenter, Entity, and Routing. Additionally, the app uses ViewModels to represent screens data.
The app has an example of Unit Testing which includes more than 500+ test cases. Nimble is a framework which was used in unit testing. For the most of Test Doubles structures as mock, stub, dummy and spy was used code generation utility.
Firebase is Google's real time NoSQL Backend as a Service (BaaS) platform that can ## stream data to millions of users at the same time through the power of Websocket.
This app demonstrates basic actions which can be made without any backend code.
Also, for ease of coding, there were used code generation utilities:
- Generamba - generation of all VIPER skeletons,
- Sourcery - creating auto generated Equatable protocol realizations,
- Swiftgen - conversion of images, colors into swift structures,
- SwiftMockGeneratorForXcode - utility for Test Doubles generation.
The project uses CocoaPods and Carthage for dependencies management. In case you don't use any of the mentioned above:
sudo gem install cocoapods
brew install carthage
or use another method
In order to compile Taskem you need to do the following:
pod install
carthage update --platform iOS
The app uses firebase services, so you have to create your own firebase project in the Firebase Console and generate a .plist
file. The projects has two types of these .plist
files which are used in Production and Development schemes.
Also there are two files of color palettes. Which need to drop into ~/Library/Colors
folder.
For debugging use the Development scheme.
Please use GitHub issues to report any bugs or file feature requests. If you want fix it yourself or suggest a new feature, feel free to send in a pull request.
Pull requests should include information about what has been changed. Also, try to include links to issues in order to better review the pull request.
- Email: alexvelikotckiy@gmail.com
- GitHub: alexvelikotckiy
Taskem is available under the MIT license.