ios-clean-base-project
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
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