ios-clean-base-project icon indicating copy to clipboard operation
ios-clean-base-project copied to clipboard

Template for any iOS project, implementing good practices and clean architecture

BaseProject

BaseProject is an iOS app initial template, not only for acelerating every initial project setup, but also for promoting good practices and a scalable architecture. The main objective of opening this project is to constantly grow and improve with the community help. So any suggestion is welcome!

Features

  • Main Navigation (UITabBarController) ✅
  • Multiple Environments ✅
  • Login/Register ✅
  • Basic UI Components ✅
  • Network layer ✅
  • CRUD Example ✅
  • Architecture diagram ✅
  • Code Templates 🔜
  • CI 🔜
  • Tests 🔜
  • Permissions handling 🔜

Objetives

  • Well architectured
  • Avoid spending time, on thinking "where this code should be?"
  • Easy for reusing UI components through different projects
  • Easy for reusing network layer through different projects
  • Avoiding boilerplate
  • Ready for data source changes
  • Easy to distribute
  • Easy for understand
  • Easy to remember
  • Easy for testing
  • Not overkill
  • Fast for developing

Diagram

alt text

How this project could reach the objectives

Well architecture

  • Presentation Layer (MVP)
  • Domain Layer (Clean Architecture)
  • Data Layer

Avoid spending time, on thinking "where this code should be?"

  • Comments on every class , for helping to understand
  • Constants handling approach
  • Permissions handling approach

Easy for reusing UI components through different projects

  • Atomic UI Library

Easy for reusing network layer through different projects

  • Network Library

Avoiding boilerplate

  • Reusable UI Components
  • Native class extentions

Ready for data source changes

  • Dependency inversion on data layer

Easy to distribute

  • Fastlane
  • CircleCI

Easy for understand

  • Comments for understanding architecture components
  • Friendly naming

Easy to remember

  • Friendly naming

Easy for testing

  • Dependency injection
  • Test examples

Not overkill

  • Technicals tries
  • Ready for extention

Fast for developing

  • Templates
  • Basic functionalities implementations (login,register,crudl,navigation)
  • Environments setup