All Projects → synesthesia-it → Boomerang

synesthesia-it / Boomerang

Licence: MIT license
Swift micro-framework for MVVM (Model-View-ViewModel) native applications.

Programming Languages

swift
15916 projects
ruby
36898 projects - #4 most used programming language
objective c
16641 projects - #2 most used programming language

Projects that are alternatives of or similar to Boomerang

Cyanic
Declarative, state-driven UI framework
Stars: ✭ 32 (-5.88%)
Mutual labels:  rxswift, viewmodel
Rxviewmodel
ReactiveViewModel-esque using RxSwift
Stars: ✭ 392 (+1052.94%)
Mutual labels:  rxswift, viewmodel
Superhero-App
🦸🏻‍♂️🦹🏻‍♀️Superhero app built with Kotlin, ViewModel, LiveData, ViewBinding, Room, and Hilt
Stars: ✭ 27 (-20.59%)
Mutual labels:  viewmodel
Monotone
An Unsplash Application for iOS.
Stars: ✭ 181 (+432.35%)
Mutual labels:  rxswift
GithubApp-android-architecture
Let's learn a deep look at the Android architecture
Stars: ✭ 16 (-52.94%)
Mutual labels:  viewmodel
globrex
Glob to regular expression with support for extended globs.
Stars: ✭ 52 (+52.94%)
Mutual labels:  pattern
ComposeMovie
Movie app that built with Jetpack Compose
Stars: ✭ 96 (+182.35%)
Mutual labels:  viewmodel
Simple-Note-App-with-Online-Storage
✍️ Simple Note Making App use Sqllite Room 🧰 for caching the notes and 📥 Firebase Database for online storage
Stars: ✭ 42 (+23.53%)
Mutual labels:  viewmodel
smtplib-bruteforce
bruteforcing gmail (TLS/SSL)
Stars: ✭ 26 (-23.53%)
Mutual labels:  pattern
CNeptune
CNeptune improve productivity & efficiency by urbanize .net module with meta-code to lay foundation for frameworks
Stars: ✭ 30 (-11.76%)
Mutual labels:  pattern
designpattern
Design pattern code example in Java
Stars: ✭ 48 (+41.18%)
Mutual labels:  pattern
Swift-VIPER-Rx
VIPER architecture model. Show a single class of responsibility.
Stars: ✭ 19 (-44.12%)
Mutual labels:  rxswift
ViewModel
Android Architecture Component - ViewModel example
Stars: ✭ 18 (-47.06%)
Mutual labels:  viewmodel
WWDCast
The unofficial WWDC application for iOS
Stars: ✭ 22 (-35.29%)
Mutual labels:  rxswift
SwiftObserver
Elegant Reactive Primitives for Clean Swift Architecture #NoRx
Stars: ✭ 14 (-58.82%)
Mutual labels:  rxswift
WanAndroidJetpack
🔥 WanAndroid 客户端,Kotlin + MVVM + Jetpack + Retrofit + Glide。基于 MVVM 架构,用 Jetpack 实现,网络采用 Kotlin 的协程和 Retrofit 配合使用!精美的 UI,便捷突出的功能实现,欢迎下载体验!
Stars: ✭ 124 (+264.71%)
Mutual labels:  viewmodel
Jetpack Compose News
基于Jetpack Compose实现的一款集新闻、视频、美图、音乐、天气等功能的资讯App,持续完善中...
Stars: ✭ 58 (+70.59%)
Mutual labels:  viewmodel
DaggerExoPlayer
This repository demonstrates ExoPlayer injection with Dagger2
Stars: ✭ 58 (+70.59%)
Mutual labels:  viewmodel
Imomoe
樱花动漫第三方安卓Android客户端,不含广告,免费开源,目的是学习Android开发。Discord:https://discord.gg/MyaRtRGEzr
Stars: ✭ 996 (+2829.41%)
Mutual labels:  viewmodel
swift-boilerplate
Clean Architecture for iOS projects (Swift + Programmatically UI + MVC + RxSwift + Auto Layout Visual Format + REST + JWT)
Stars: ✭ 14 (-58.82%)
Mutual labels:  rxswift

Boomerang

Boomerang is a library for MVVM in Swift applications

Due to the lack of ViewModel concepts in UIKit, Boomerang defines a set of scenarios through protocols and shares a common, reusable way to build screens in the app.

On top of that, it provides a set of extensions for common components like UICollectionView, UITableView, UIViewController so that they can become compatible with a ViewModel.

Used with RxSwift (and RxDataSources) bindings (not required, but highly recommended), Boomerang can really improve project workflow and help keeping things simple and light.

Key Features / TLDR

  • Concept of ViewModel for all your app.
  • ListViewModel to handle lists of ViewModels. Each item in the list represents contents for a view (a "cell" in a table/collection view)
  • NavigationViewModel to handle business logic for navigation through the app
  • Route protocol to design and encapsulate how a scene should navigate to another. Write pushViewController only once for your app :)
  • Never write datasource and delegate for your collection/table views again!
  • Automatic sizing for table view and collection views. Painless.
  • TDD-ready: use RxBoomerangTest with your test target to quickly write tests around your code.

Installation

Boomerang is available through Cocoapods.

Add this to your Podfile

pod 'Boomerang'

To use RxSwift integration, use

pod 'RxBoomerang`

We used to integrate Rx extensions with pod Boomerang/RxSwift This is still available at the moment but differs in how Rx extensions needs to be integrated in your project files: in this old scenario, import RxBoomerang is not needed in every file with Boomerang extensions because import is handled by cocoapods; however, we believe that package managers should be interchangeable as much as possible; therefore, we suggest to use the new separated pod as it's more "futureproof".

Contributing

To integrate new features in the library, you can open the Package.swift file and edit the source folder.

Examples

You can find some integration examples in the Examples folder.

We use XcodeGen to easily maintain xcodeproj files.

To install XcodeGen it, run brew install xcodegen

To setup each example project, run xcodegen in each folder.

Table of contents (WIP)

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].