Skip to content

ActivityGoals - Modular iOS app for tracking your daily sports activity

License

Notifications You must be signed in to change notification settings

illuminati1911/activitygoals

Repository files navigation

Activity Goals

Modular iOS app to track daily activity and progress towards goals.

Getting Started

Prerequisites

What things you need to install the software and how to install them

- Cocoapods
- Xcode 11
- iOS 11

Installing

Just run

pod install

and that should be enough.

Running the tests

Each module has its own unit tests. Use Xcode CMD+U to run them.

Architecture

Modular architecture

The app is split into multiple modules

  • Application
  • Core
  • Services
  • Networking
  • LocalStorage
  • Pods

This is to follow Separation of Concerns design principle, keep things reusable and loosely couple and also increase the build time and unit test execution time.

  • All modules are dependent on the Core module (which is dependent on no other module) and Application module only depends on Core and Services modules.
  • Services module will provide interface for using Networking and LocalStorage as needed
  • Core module shares "global" assets such as localizations, domain models, utilities etc.
  • Services module intentionally depends on Networking and LocalStorage modules. (This could be changed in the future to use Core module provided interfaces so that all module only depend on the Core)

MVVM + Coordinator

  • MVVM to keep view controllers clean
  • Coordinator to decouple navigation from view controllers

RxSwift / RxCocoa

  • Reactive functional pipelines for smooth async operations and app events

Coding style

The application uses swiftlint with almost default settings. See .swiftlint.yml for more details.

TODO

  • Add Core data tests and mock the Core Data library or use im-memory storage
  • Move interfaces to Core so that all modules only depend on the Core module

Authors

License

This project is licensed under the MIT License - see the LICENSE file for details

About

ActivityGoals - Modular iOS app for tracking your daily sports activity

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published