/counters-ios

An app that uses remote and local datasources to keep counters synced.

Primary LanguageSwiftMIT LicenseMIT

CI Xcode Swift 5.3.2 iOS

Counters, the app who store your counters 🤖

The architecture was built using the concepts of Clean Architecture and the SOLID principles. The modularization was composed by:

  • CounterCore: Domain layer composed by counter model and all use cases.
  • CounterAPI: Data layer composed by remote implementation of domain use cases.
  • CounterStore: Data layer composed by local implementation of domain use cases.
  • CounterPresentation: Presentation layer composed by the presenters and view models.
  • CounterUI: UIKit interfaces that interact with presentation layer.
  • CounterTests: Add extra behaviours specific for unit tests.
  • CounterApp: The main module, that create features and inject the dependencies, control the navigation flow, add new behaviours trough decorators and adapters.
counters-ios.mov

Getting Started

  1. Install Xcode.
  2. Clone this repository.
  3. Open Counters.xcworkspace:
open Counters.xcworkspace

Xcode will do all the hard work for you 👨‍💻

Features

  • Load counters
  • Cache Counters
  • Create Counter
  • Increment Counters
  • Decrement Counters
  • Search Counters
  • Erase Counters
  • Share Counters

Non-functional features

  • Clean Architecture
  • SOLID Principles
  • Unit Tests using TDD
  • Modularity using Swift Package
  • Design Patterns (Strategy, Proxy, Decorator and Adapter)
  • UITableViewDiffableDataSource
  • View Code
  • Dark Mode
  • HTTP requests
  • Error Handling
  • CoreData
  • CI using GitHub Actions