Skip to content

vandermesis/ZeroWasteFriendly

Repository files navigation

logo

ZeroWasteFriendly

Your friend for zero waste life

swift platform xcode Build Status

How it looks like

mockup

What is it

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 ...

What new I've learned

  • UITabBar

  • Localization

  • Custom fonts, colors, icons

  • Xcode File Templates

  • XCTest

  • CloudKit

  • MapKit

  • UI Animations

  • TouchID/FaceID

  • Keychain

  • Push notifications

What is needed

  • Xcode 11.3 with iOS SDK (13.2)

  • Bundler

  • CocoaPods 1.8.4

What was really helpful

  • 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

Clean Swift Project Templates

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

Who is who

Marek Skrzelowski, mskrzelowski@vandermesis.com

.swift learning month nine

About

Your friend for zero waste life

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published