iOS DEV FAQ - PEBMED/ios-base-architecture GitHub Wiki

DEV FAQ aims to give access to decisions that were taken based on best practices inside the project.

Modules

Underneath is listed all main modules that compose the project.

DependencyContainer

It is a central point that manages all dependencies across modules and classes.

Coordinator

Coordinator is an object that handles navigation flow and shares flow’s handling for the next coordinator after switching on the next chain. It means that coordinators should only keep navigation logic between screens.

Models

Models are part of MVVM architecture, they represent the actual data and/or information we are dealing with.

Support

Main files such as AppDelegate, LaunchScreen.storyboard and etc.

Utilities

Utilities to be used across the project such as Enums, Protocols, and Classes.

Api

Api manages the network layer that is required for consumes Services.

Extension

Extension classes used to reduce code inside classes and controllers.

CustomViews

Shared views that are used across the project.

Features

The functionalities are within features in order to be arranged by domain.

Tests

We are using XCTest framework to write unit tests and KIF Framework to test our UI.

GHProjectsTests

Unit tests

GHProjectsUITests

UI tests

Code convention

  • All style code/name conventions will be managed through Swift Lint.
  • ViewCode to build screens

Analytics

  • Snowplow analytics
  • Firebase
  • Facebook
  • Mixpanel

Logs

  • Crashlytics

Remote Config

  • firebase
  • internal API