Skip to content

This repo has all the boilerplate required to kick start a ios project, have used best industry practices.

Notifications You must be signed in to change notification settings

FiftyfiveTech/ios_sample

Repository files navigation

iOS App Template

Welcome to the Instagram Clone iOS App Template! This template provides a solid foundation for building a feature-rich Instagram-like social media app using modern iOS development techniques. It incorporates various architectural patterns, best practices, and libraries to help you kickstart your project.

Table of Contents

  • Screenshots
  • Features
  • Getting Started
  • Architecture
  • Dependencies
  • Usage
  • Testing
  • Localization
  • Themes
  • Linting
  • SOLID Principles
  • Design Patterns
  • License

Screenshots

Simulator Screenshot - iPhone 14 Pro - 2023-08-23 at 01 52 53 Simulator Screenshot - iPhone 14 Pro - 2023-08-23 at 01 52 46

Features

  • MVVM Architecture Pattern: This project is structured following the Model-View-ViewModel (MVVM) architectural pattern, which separates concerns and promotes code maintainability.

  • HTTP Utility: It includes a robust HTTP utility for making network requests to interact with backend APIs.

  • Threading: Threading is handled efficiently to ensure a smooth user experience, including background tasks and main thread updates.

  • Dependency Injection: The project uses dependency injection to manage component dependencies, improving testability and flexibility.

  • Swift UI: The user interface is built using Swift UI, Apple's modern declarative UI framework.

  • Data Binding and View Binding: Data binding techniques are applied for synchronizing data between the ViewModel and View, enhancing responsiveness.

  • Core Data: Core Data is used for efficient local data storage and management, offering offline capabilities.

  • Reactive Programming using Combine: Combine framework is employed for reactive programming, simplifying asynchronous operations and event handling.

  • Unit Test Cases: Comprehensive unit test cases are written to ensure code quality and reliability.

  • Localization: The app supports localization, making it easy to adapt to different languages and regions.

  • Themes: A theming system is implemented to allow users to customize the app's appearance.

  • Documentation: Thorough documentation is provided to guide developers through the project structure and usage.

  • SwiftLint: SwiftLint is integrated to enforce Swift code style and maintain code consistency.

  • Implementing SOLID Principles: The project adheres to SOLID principles for object-oriented design, enhancing code maintainability and scalability.

  • Protocols: Protocols are used to define abstractions and facilitate adherence to interfaces, promoting code reusability.

  • Implementing Design Patterns: Various design patterns, such as Singleton, Factory, and Observer, are implemented to solve common software design problems.

Getting Started

The app follows the Clean Architecture principles, which divides the codebase into layers:

  • To get started with this template, follow these steps:
  • Clone the repository.
  • Open the project in Xcode.
  • Build and run the app.

Architecture

The project follows the MVVM architecture pattern which stands for Model-View-ViewModel.

Dependencies

The project utilizes two third-party libraries and tools which are SwiftLint and Kingfisher. SwiftLint is used to enforce Swift code style and maintain code consistency. Kingfisher is used for downloading, cacheing and displaying the image.

Testing

Comprehensive unit tests ensure the app's reliability and robustness. Run the tests to check if they are passing and users can also get the idea on how to write test cases for an iOS app.

Localization

Make your app accessible to a global audience by adding support for multiple languages and regions. In this app we support two languages which are English and Hindi.

Themes

Customize the app's appearance by going to your iPhone settings and change your theme. This app supports dark appearnce setting of the iPhone.

Linting

Ensure code consistency and quality by running SwiftLint. We have added SwiftLint as a package dependancy and as a plug in. If you want to change certain rules then you need to access them in .swiftlint.yml file which remains hidden in the project directory.

SOLID Principles

SOLID Principles are applied to this project which are:

  • The Single Responsibility Principle
  • The Open-Closed Principle
  • The Liskov Substitution Principle
  • The Interface Segregation Principle
  • The Dependency Inversion Principle

Design Patterns

Some of the design patterns which are used like singleton and observer are implemented in this project.

License

55 Tech

We are relentlessly focusing on digital transformation. Dive deep into the customer cases to know more about the project which we delivered.

About

This repo has all the boilerplate required to kick start a ios project, have used best industry practices.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages