Your friend for zero waste life
My second mature project. The app is to educate, help and motivate user to use Zero/Less waste ideology in everyday life.
The app has three main goals:
- educate about Zero Waste way of life,
- through gamification model motivate user to be more friendly for our earth :),
- eco-map will show nearby places which support zero waste strategies.
Technical goals:
-
used Clean Swift software architecture
-
coding best practices and SOLID principles
-
systematic code review
-
all stages approved by mentor
-
all critical parts of application covered by unit tests with use of Bitrise CI
Prototype stage:
- prototype interactive presentation can be found here
Coding stage:
- initial setup of project, add .gitignore
- setup bundler, cocoapods
- add SwiftLint, R.swift, lottie, Quick, Nimble pods
- create predefined template files for Clean Swift project
- add Ecomap scene
- add ActivityTiles scene
- add AcitivityInfo scene
- add ActivityStats scene
- add Library scene
- add UserAccount scene
- add ...
-
UITabBar
-
Localization
-
Custom fonts, colors, icons
-
Xcode File Templates
-
XCTest
-
CloudKit
-
MapKit
-
UI Animations
-
TouchID/FaceID
-
Keychain
-
Push notifications
-
Xcode 11.3 with iOS SDK (13.2)
-
Bundler
-
CocoaPods 1.8.4
-
Clean Swift - clean architecture
-
Bundler - makes sure Ruby applications run the same code on every machine
-
Cocoapods - cocoa dependency manager
-
SwiftLint - enforce Swift style and conventions
-
R.swift - strong typed, autocompleted resources
-
Lottie-ios - library for Android and iOS that natively renders vector based animations
-
Quick - behavior-driven development framework for Swift and Objective-C
-
Nimble - express the expected outcomes of Swift or Objective-C expressions
-
Gifski - converts videos to GIF animations
-
Typora - a truly minimal markdown editor
-
JetBrains - a typeface for developers
If you want to try creating your own project using Clean Swift guidelines, there is a set of custom templates added in Templates/CleanSwift folder.
Just copy it to your /Users/<username>/Library/Developer/Xcode/Templates/File\ Templates
folder and use it as you like.
-
Scene - creates set of 7 files to use for your scene - use it for every new scene,
-
SceneSupport - creates set of 16 files with predefined functionalities like presenting spinner, presenting alert, networking files, etc - use it once per project,
-
UnitTestsXC - creates set of 8 files needed to test your scene using XCTest (fake files included) - use it for every scene,
-
UnitTestsXCSupport - creates set of 5 files to support tests for your scene - use it once per project tests module
Marek Skrzelowski, mskrzelowski@vandermesis.com
.swift learning month nine