Skip to content

TouchInstinct/LeadKit

Repository files navigation

LeadKit

LeadKit is the iOS framework with a bunch of tools for rapid app development.

This repository contains the following frameworks:

  • TISwiftUtils - a bunch of useful helpers for Swift development.
  • TIFoundationUtils - set of helpers for Foundation framework classes.
  • TIUIKitCore - core ui elements and protocols from LeadKit.
  • TISwiftUICore Core UI elements: protocols, views and helpers.
  • TIUIElements - bunch of of useful protocols and views.
  • OTPSwiftView - a fully customizable OTP view.
  • TITableKitUtils - set of helpers for TableKit classes.
  • TIKeychainUtils - set of helpers for Keychain classes.
  • TIPagination - realisation of paginating items from a data source.
  • TINetworking - Swagger-frendly networking layer helpers.
  • TIMoyaNetworking - Moya + Swagger network service.
  • TIAppleMapUtils - set of helpers for map objects clustering and interacting using Apple MapKit.
  • TIGoogleMapUtils - set of helpers for map objects clustering and interacting using Google Maps SDK.
  • TIYandexMapUtils - set of helpers for map objects clustering and interacting using Yandex Maps SDK.
  • TIAuth - login, registration, confirmation and other related actions

Playgrounds

Create new Playground

cd TIModuleName
nef plaground --name TIModuleName --cocoapods --custom-podfile PlaygroundPodfile

See example of PlaygroundPodfile in TIFoundationUtils

Rename/add pages to Playground

For every new feature in module create new Playground page with documentation in comments. See nef markdown documentation.

Create symlink to nef playground

cd TIModuleName
ln -s TIModuleName.app/Contents/MacOS/TIModuleName.playground TIModuleName.playground

Add nef files to TIModuleName.app/.gitignore

# gitignore nef files
**/build/
**/nef/
LICENSE

Add new playground to pre release script

project-scripts/gen_docs_from_playgrounds.sh:

PLAYGROUNDS="${SRCROOT}/TIFoundationUtils/TIFoundationUtils.app
${SRCROOT}/TIModuleName/TIModuleName.app"

Exclude .app bundles from package sources

SPM

.target(name: "TIModuleName", dependencies: ..., path: ..., exclude: ["TIModuleName.app"]),

Podspec

  sources = 'your_sources_expression'
  if File.basename(Dir.getwd) == s.name # installing using :path =>
    s.source_files = sources
    s.exclude_files = s.name + '.app'
  else
    s.source_files = s.name + '/' + sources
    s.exclude_files = s.name + '/*.app'
  end

Docs:

Contributing

  • Run following script in framework's folder:
./setup

Installation

SPM

dependencies: [
    .package(url: "https://github.com/TouchInstinct/LeadKit.git", from: "x.y.z"),
],

Cocoapods

source 'https://github.com/TouchInstinct/Podspecs.git'

pod 'TISwiftUtils', 'x.y.z'
pod 'TIFoundationUtils', 'x.y.z'
# ...

Legacy

Code located in root Sources folder and LeadKit.podspec should be treated as legacy and shouldn't be used in newly created projects. Please use TI* modules via SPM or CocoaPods.