open source VIPER application

Overview

Overview

Travis CI

Rambler&IT is an open source application, which highlights the basic approaches to mobile application architecture used in Rambler&Co. You can download it from the AppStore.

The design map: Design map

Key Features

  • The application is divided into three layers: Presentation, BusinessLogic and Core.
  • The Presentation layer is built using VIPER architecture.
  • The BusinessLogic layer is built using SOA.
  • The Core layer is built using compound operations concept.
  • We extensively use Typhoon framework for dependency injection.

Usage

The application uses staging API which is not available outside our private network at the moment. We'll make it public really soon.

Installation

Install Carthage before launching the project. You can use Homebrew and install the Carthage tool on your system simply by running brew update and brew install carthage. (note: if you previously installed the binary version of Carthage, you should delete /Library/Frameworks/CarthageKit.framework). More info about Carthage installation you can find here.

Run pod install before launching the project. All of inner dependencies are public.

License

MIT

Authors

Egor Tolstoy, Artem Karpushin, Konstantin Zinovyev and the rest of Rambler.iOS Team.

Comments
  • Можно ли взаимодействовать с сервисами не только через интеракторы?

    Можно ли взаимодействовать с сервисами не только через интеракторы?

    У меня есть AuthorizationService. Мне нужно вызвать у него unathorize когда от сервера на любой мой запрос придет статус 401. За запросы у меня отвечает NetworkManager(он находится в core layer). Будет ли верно если я вызову метод unathorize прямо из NetworkManager?

    opened by krasnodar95 8
  • Licensing

    Licensing

    I'm a little bit confused about licensing this (and others) our open source project. Will we provide any? P.S. Github rules to clarify https://help.github.com/articles/open-source-licensing/ P.P.S. And what about this?

    //
    //  ApplicationConfigurator.h
    //  Conferences
    //
    //  Created by Karpushin Artem on 04/10/15.
    //  Copyright © 2015 Rambler. All rights reserved.
    //
    
    opened by Brain89 7
  • Crash in EventInteractor

    Crash in EventInteractor

    Xcode 8.2.1 iphone 5s ios 9.3 simulator 2017-01-29 21:11:24.472 Conferences[8779:171343] -[NSUserActivity setMapItem:]: unrecognized selector sent to instance 0x7fa942d0ca20 2017-01-29 21:11:24.522 Conferences[8779:171343] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSUserActivity setMapItem:]: unrecognized selector sent to instance 0x7fa942d0ca20'

    *** First throw call stack: ( 0 CoreFoundation 0x0000000106914d85 __exceptionPreprocess + 165 1 libobjc.A.dylib 0x000000010624adeb objc_exception_throw + 48 2 CoreFoundation 0x000000010691dd3d -[NSObject(NSObject) doesNotRecognizeSelector:] + 205 3 CoreFoundation 0x0000000106863cfa forwarding + 970 4 CoreFoundation 0x00000001068638a8 _CF_forwarding_prep_0 + 120 5 Conferences 0x0000000101ccf6fc -[EventInteractor registerUserActivityForEvent:] + 684 6 Conferences 0x0000000101cb940e -[EventPresenter didTriggerViewReadyEvent] + 462 7 Conferences 0x0000000101ce06ce -[EventViewController viewDidLoad] + 126 8 UIKit 0x000000010485d984 -[UIViewController loadViewIfRequired] + 1198 9 UIKit 0x000000010486393b -[UIViewController __viewWillAppear:] + 120 10 UIKit 0x0000000104893750 -[UINavigationController _startCustomTransition:] + 1203 11 UIKit 0x00000001048a3b9b -[UINavigationController _startDeferredTransitionIfNeeded:] + 712 12 UIKit 0x00000001048a4d0b -[UINavigationController __viewWillLayoutSubviews] + 57 13 UIKit 0x0000000104a53503 -[UILayoutContainerView layoutSubviews] + 248 14 UIKit 0x000000010477d980 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 703 15 QuartzCore 0x0000000104434c00 -[CALayer layoutSublayers] + 146 16 QuartzCore 0x000000010442908e _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 366 17 QuartzCore 0x0000000104428f0c _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 24 18 QuartzCore 0x000000010441d3c9 _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 277 19 QuartzCore 0x000000010444b086 _ZN2CA11Transaction6commitEv + 486 20 QuartzCore 0x000000010444b7f8 _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 92 21 CoreFoundation 0x0000000106839c37 CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION + 23 22 CoreFoundation 0x0000000106839ba7 __CFRunLoopDoObservers + 391 23 CoreFoundation 0x000000010682f7fb __CFRunLoopRun + 1147 24 CoreFoundation 0x000000010682f0f8 CFRunLoopRunSpecific + 488 25 GraphicsServices 0x0000000109563ad2 GSEventRunModal + 161 26 UIKit 0x00000001046c2f09 UIApplicationMain + 171 27 Conferences 0x0000000101c9f428 main + 280 28 libdyld.dylib 0x000000010756792d start + 1 ) libc++abi.dylib: terminating with uncaught exception of type NSException

    opened by ansinyutin 1
  • Как внедряется ServiceComponents

    Как внедряется ServiceComponents

    Доброго времени суток. Я никак не могу понять где происходит внедрение объекта в поле serviceComponetns во все Assemblies всех модулей. Объясните данные момент

    opened by krasnodar95 1
  • Integrate application with iOS App Search engine

    Integrate application with iOS App Search engine

    It would be cool if we integrate our app with App Search engine. Here is a good article on the topic by @CognitiveDisson: https://habrahabr.ru/company/rambler-co/blog/268257/

    enhancement 
    opened by etolstoy 1
  • Split tests into iOS-specific targets

    Split tests into iOS-specific targets

    We have some tests (e.g. FeedbackGeneratorsFactoryTests) that run only on iOS 10 and higher. Interesting point is to divide single test target into different targets

    • main target with not-specific tests
    • iOS 10 and higher specific tests
    • iOS 11 and higher specific tests
    • and so on

    This way we shall get more clear test code.

    Technical debt 
    opened by Brain89 0
  • Fix test passing

    Fix test passing

    Tests failed https://travis-ci.org/rambler-digital-solutions/rambler-it-ios. It is necessary to fix it. We should use our standard workflows for test running but add steps for iOS 9-11 simulators.

    bug Technical debt 
    opened by Brain89 0
  • Enhance registration button behavior

    Enhance registration button behavior

    Registration button is already implemented. We should add the following:

    • If a user is not authorized, show alert that points to authorization screen.
    • If a user is authorized, show spinner and after successful registration change the button state to success.
    enhancement Design needed Event Card Screen Profile 
    opened by etolstoy 0
  • Add new tab

    Add new tab "Profile"

    We should add a new tab - "Profile" with the following logic:

    • If a user is not authorized
    • If a user is authorized we show his profile.
    enhancement Design needed Profile 
    opened by etolstoy 0
Owner
Rambler Digital Solutions
Rambler Digital Solutions
CodeEdit App for macOS – Elevate your code editing experience. Open source, free forever.

CodeEdit for macOS CodeEdit is a code editor built by the community, for the community, written entirely and unapologetically for macOS. Features incl

CodeEdit 15.8k Dec 31, 2022
An open source package for as-you-type formatting in SwiftUI.

DiffableTextViews An open source package for as-you-type formatting in SwiftUI. Features Feature Description ⌨️ Responsive Formats text as you type ??

Oscar Byström Ericsson 46 Dec 5, 2022
This "Calculator" application is a simple one screen design of calculator screen i have made this single screen design application just to practice AutoLayout concepts.

Calculator Layout This "Calculator" application is a simple one screen design of calculator screen i have made this single screen design application j

Chetan Parate 1 Oct 29, 2021
The source of V2er.iOS

V2er-iOS A beautiful V2EX client built for iOS platform. This project is under develop, is not avaiable in App store yet, you could download it from h

v2er.app 203 Jan 5, 2023
Application iOS de l'outil ViteMaDose

Vite Ma Dose pour iOS Présentation du projet Vite Ma Dose est un outil permettant de détecter les rendez-vous de vaccination. Cette application rapide

CovidTracker 32 Feb 9, 2022
A declarative UIKit for improve layout productivity when developing an iOS application

TifoKit A declarative UIKit for improve layout productivity when developing an iOS application Requirements Min. iOS 11 Swift 5+ Installation Currentl

Tifo Audi A.P 22 Aug 9, 2022
This page contains an iOS Application that uses Modelplace.AI Cloud API

Modelplace iOS App This page contains an iOS Application that uses Modelplace.AI

OpenCV.AI 7 Jan 21, 2022
UndrDawg: a sport-betting application for iOS

Table of contents What Is UndrDawg Our Mission Technologies Setup Features What

norman chiflen 0 Dec 26, 2021
A simple game application using SpriteKit, physics, blend modes, radians and CGFloat

Pachinko A simple game application using SpriteKit, physics, blend modes, radian

NIKOLAY NIKITIN 1 Oct 20, 2022
How to build and sign your iOS application using Azure DevOps

How to build and sign your iOS application using Azure DevOps Sample source code

null 0 Dec 29, 2021
Olvid-ios - Olvid client application for iOS

Olvid Olvid is a private and secure end-to-end encrypted messenger. Contrary to

Olvid 42 Dec 6, 2022
Registre-aqui - Mobile Application that displays infrastructure issues that your city may have

Registre Aqui About | Features | Technologies | Requirements About Mobile Applic

Gian Carlo Mantuan Dala Rosa 1 Jan 4, 2022
Breezz: an application with which it is easy and simple to practice breathing exercises and meditation

breezz will help you relax Breezz is an application with which it is easy and si

dumojo 1 Jan 18, 2022
An iOS application enables you explore art works provided by DeviartArt.com with high quality UX.

Iris.iOS Iris is a model mobile application based on iOS. It provides basic functions allow users to explore on DeviantArt and check Daily Arts, Notif

Xueliang Chen 63 Dec 13, 2022
FreeOTP is a two-factor authentication application for systems utilizing one-time password protocols

FreeOTP FreeOTP is a two-factor authentication application for systems utilizing one-time password protocols. Tokens can be added easily by scanning a

FreeOTP 551 Dec 28, 2022
Snitch - A handy library to access useful information about your application from the Home Screen

Snitch Access your app's useful information from Home Screen Table of Contents I

Tamerlan Satualdypov 12 Jan 2, 2023
Bootcamp1000 - Practical application of a design taken from the Dribble website -> For our group in WhatsApp

Bootcamp1000 New Challenge Practical application of a design taken from the Drib

ibrahim almutiry 1 Jun 24, 2022
Super-senha-app - Application made from Eric Brito's Udemy course

super-senha-app Aplicativo feito a partir do curso do Eric Brito da Udemy

Michelli Cristina de Paulo Lima 0 Feb 11, 2022
This is a simple chat application made in Swift using send and receive interface.

Flash Chat ????‍♂️ Overview This is a simple chat application made in Swift using send and receive interface. ⚙️ How it works The user needs to first

Sougato Roy 2 Aug 4, 2022