Skip to content

ngocpd-1250/TCA-The-Composable-Architecture-example

Repository files navigation

TCA (The Composable Architecture) Example App

This example app demonstrates the usage of TCA (The Composable Architecture) to build a SwiftUI application.

Features

  • TCA: Utilizes The Composable Architecture for managing state and side effects.
  • SwiftUI: Declarative UI framework for building modern iOS apps.
  • Dependency Injection: Easy management of dependencies and testability.
  • Unit Tests: Includes unit tests for business logic and use cases.
  • Dark Mode: Supports Dark Mode seamlessly.

Requirements

  • Xcode 15.0+
  • Swift 5.3+
  • Homebrew installed

Installation

  1. Install Homebrew Dependencies:

    brew install xcodegen swiftlint swiftformat
  2. Clone the Repository:

    git clone git@github.com:ngocpd-1250/TCA-The-Composable-Architecture-example.git
    cd TCA_Example
  3. Generate Xcode Project:

    Use xcodegen to generate the Xcode project:

    xcodegen
  4. Open Xcode:

    Open the generated Xcode project:

    open TCA_Example.xcodeproj
  5. Build and Run:

    Build and run the project in Xcode.

Project Structure

The project is structured into the following directories:

  • Config: Contains configuration files and settings.
  • DI: Manages Dependency Injection configurations.
  • Data: Handles data sources, repositories, and networking.
  • Presentation: Contains SwiftUI views, TCA features, and navigators.
  • Resources: Includes assets, localization files, and other resources.
  • Utils: Houses shared utilities, extensions, and helper functions.

Linting (optional)

  1. Linting: SwiftLint
  2. Formatting: SwiftFormat

Packages

  1. FlowStacks: for navigation management
  2. Factory: for dependency injection
  3. Rswift: for resource management
  4. Kingfisher: for loading and caching remote images
  5. Alamofire: for API requests

About

TCA (The Composable Architecture)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages