My demo submission to Babylon Health

Overview

Hello Babylon

Thank you for taking the time to consider my demo during the recruitment process for the Remote Senior iOS Developer position at your company. I'd be more than happy to join your impressing team.

Initially I prepared the demo as an assignment in the interview process for Babylon Health. I actually passed the demo stage and scored "very well", but the company decided to pause on hiring new remote engineers just a day before my Skype interview. Well 🤷🏼‍♂️

It's a pretty generic demo though. You may find some interesting bits there if you're interested in SwiftUI, Combine, Playground Driven Development or architecture. I appreciate constructive critique as well 🙂

Demo

As a demo, I've chosen The babylon demo project.

Requirements

Xcode 11 Beta 5, no Catalina needed.

Dependencies

I decided to stick to the native frameworks, so there are no 3rd party dependencies by now. The main frameworks of my choice are:

  • Combine for reactive programming
  • SwiftUI for the View layer
  • Foundation for networking and caching

Architecture

The responsibilities of the app are split across three separate frameworks and the app target itself:

  1. View - leaf framework concerned just about the presentation layer.
  2. Networking - leaf framework concerned about networking.
  3. ViewModel - framework depending on both Networking and View concerned about the bidirectional mapping of data between the View and underlying logic and services.
  4. Babylon app target - main target where dependency injection takes place via the Coordinator

There is a subtle difference between classic MVVM and my approach. In classic MVVM the View layer depends on ViewModel and in my approach, the ViewModel depends on the View.
Such dependency graph makes View a decoupled, leaf framework making it easy to compile, develop and test independently. Thanks to it I've been able to leverage the Playground Driven Development technique to implement and troubleshoot both view's implementations (see *.playground in the project).
The frameworks are additionally extracted into separate projects. This makes presumable cross-team development less prone to merge conflicts.

Tests

I've written two, taking PostListViewModel under test (see PostListViewModelTests or Cmd + U on the Babylon scheme).
I've been trying to incorporate snapshot testing as well (see snapshot_testing branch) using FBSnapshotTestCase by Uber, but it doesn't seem to work well with SwiftUI at the moment.

Known issues

Requirements checklist

Swift 5.1.
The information is available offline by leveraging the URLCache. The quickest-to-implement solution I can imagine.
Reloading available as a navigation bar item in PostListView.
Have a point of synchronization in PostDetailsViewModel.loadData(), I used a Zip for that.
I find the code to be production grade. Not production ready though (uses iOS SDK beta 3).
It compiles and runs.

You might also like...
PowerUp is an educational choose-your-own-adventure game that utilizes a users uploaded curriculum to empower pre-adolescents to take charge of their reproductive health.

PowerUp is an educational choose-your-own-adventure game that utilizes a users uploaded curriculum to empower pre-adolescents to take charge of their reproductive health. This is the iOS version of the game.

A mental health app designed to help users track their emotions with short, tweet-like journals.

Objective The purpose of this project is to create a mental health app where users will input a short journal each day that is no longer than a tweet

Health Care gives tips to people about his/her life to be better.
Health Care gives tips to people about his/her life to be better.

Health Care Health Care gives tips to people about his/her life to be better. How does it do this? This application examines and evaluates the health

Truncate - An app that allows the user to talk with a chatbot about their mental health struggles

Project Description An app that allows the user to talk with a chatbot about the

Israel's Ministry of Health's COVID-19 Exposure Prevention App
Israel's Ministry of Health's COVID-19 Exposure Prevention App

Hamagen Israel's Ministry of Health's COVID-19 exposure prevention app. Hacking You're awesome. See CONTRIBUTING.md. Components HaMagen is based on re

[Accepted] My WWDC21 Swift Student Challenge submission
[Accepted] My WWDC21 Swift Student Challenge submission

My WWDC21 Swift Student Challenge submission I made a playground book that teaches you the basics of ARKit through interactive lessons. It covers posi

WWDC21 Swift Student Challenge Submission
WWDC21 Swift Student Challenge Submission

CircuitPlay Introduction Hello, welcome to Jose Adolfo Talactac's submission for WWDC21 Swift Student Challenge, CircuitPlay! CircuitPlay is an inter

[Accepted] WWDC21 Swift Student Challenge Submission

Hear See Tell us about the features and technologies you used in your Swift playground. Swift Playground Author Template: providing the general struct

My submission for WWDC'21 Swift Student Challenge which was selected.
My submission for WWDC'21 Swift Student Challenge which was selected.

Double Spending This is my submission for Swift Student Challenge - WWDC2021. This playgrounds aims to teach you basics of Double Spending Attack. Thi

My WWDC21 Swift Student Challenge Submission

Swift3D A 3D framework for everyone. I love SwiftUI. I have been using it constantly since it came out in 2019 and its power and ease of use are what

[Accepted] My WWDC2021 Swift Student Challenge submission chosen as one of the 350 winners!
[Accepted] My WWDC2021 Swift Student Challenge submission chosen as one of the 350 winners!

Genetic Algorithms | WWDC21 This project was entirely built with SwiftUI. To direct download this Playground and run it on your Mac or IPad, click he

My Winning Submission for Apple's WWDC 2021 Swift Student Challenge
My Winning Submission for Apple's WWDC 2021 Swift Student Challenge

Symmetries This playground book gives a quick insight into the symmetry groups of 3-dimensional objects like the platonic solids. The user can play ar

My WWDC22 Swift Student Challenge submission [Submitted]
My WWDC22 Swift Student Challenge submission [Submitted]

WWDC22 Swift Student Challenge Submission An educational iPad app teaching some fundamental rules of typography in a fun and interactive way. Created

Loopy Carousel: Submission to the SwiftUI Series **Workarounds** challenge
Loopy Carousel: Submission to the SwiftUI Series **Workarounds** challenge

Loopy Carousel Submission to the SwiftUI Series Workarounds challenge. Workaround details In order to create the illusion of looping through the cards

My submission for the SwiftUISeries' Workarounds & Hacks challenge
My submission for the SwiftUISeries' Workarounds & Hacks challenge

SwiftUISeries Workarounds & Hacks My submission for the SwiftUISeries' Workarounds & Hacks challenge Problem Description For a list in an app I'm work

'The Particle Binder' - Winning WWDC22 Swift Student Challenge submission!

The Particle Binder 'The Particle Binder' - Winning WWDC22 Swift Student Challenge submission! Welcome to The Particle Binder, the particle accelerato

 My WWDC 2022 swift student challenge submission - GradientDescend
My WWDC 2022 swift student challenge submission - GradientDescend

GradientDescend Welcome to GradientDescend! This is my submission for the WWDC 2022 Swift Student Challenge. If you'd like, you can check out Gradient

My submission for the SwiftUISeries' speed run challenge
My submission for the SwiftUISeries' speed run challenge

SwiftUICameraAppSpeedrunChallenge My submission for the SwiftUISeries' speed run challenge Speedrun video: https://www.youtube.com/watch?v=N9L8XfZaIv8

Releases(0.0.1)
Owner
Maciek Czarnik
iOS Developer, Musician, Maker
Maciek Czarnik
iOS native app demo with Xcode and Swift using MVVM architecture and Apple's Combine framework for functional reactive programming, all with UIKit

iOS (Swift 5): MVVM test with Combine and UIKit MVVM and functional reactive programming (FRP) are very used in iOS development inside companies. Here

Koussaïla BEN MAMAR 2 Dec 31, 2021
A demo demonstrates how to use combine and MVVM in the SwiftUI app

SwiftUI-MVVM-Combine A demo demonstrates how to use combine and MVVM in the Swif

Asa. Ga 7 Jul 5, 2022
MVVM-RXSWIFT-COMBINE- - Demo application populating posts from network request using

MVVM => RXSWIFT + COMBINE Demo application populating posts from network request

Amr Al-khayat 0 Jan 2, 2022
This is Github user search demo app which made by many variety of design patterns.

iOSDesignPatternSamples This is Github user search demo app which made by many variety of design patterns. Application Structure SearchViewController.

Taiki Suzuki 679 Dec 11, 2022
An app to demo networking with SwiftUI/MVVM

Network Demo An app to demonstrate how network calls can be implemented in a SwiftUI/MVVM app. Motivations Apple's introductory tutorial is a great st

Tatsuya Kaneko 6 Oct 7, 2022
Small iOS app to show some COVID-19 health, data, news and tweets ⚡

covid19.swift Small iOS app to show some COVID-19 health, data, news and tweets ⚡ Requirements Xcode 12, iOS 14 Credits API: COVID-19 API: News Tweets

null 26 Nov 30, 2022
:globe_with_meridians: Small iOS app to show some COVID-19 health, data, news and tweets

covid19.swift Small iOS app to show some COVID-19 health, data, news and tweets ⚡ Requirements Xcode 12, iOS 14 Credits API: COVID-19 API: News Tweets

null 26 Nov 30, 2022
A simple health assistant app built in Swift5 for iPhone 📱

Health-Habit-Assistant A simple habit forming app build for iPhone in Swift 5 (iOS 11+) (This Project is designed to be used in China 4C Computer Comp

Masayuki Inamori 381 Dec 27, 2022
Health Sample app using Swift, RxSwift, Anchorage, Charts

HealthSample First run pod install, then build the project and run in your devices or simulators. This project has used RIBs, Swift, RxSwift, Anchorag

null 4 Feb 11, 2022
CareKit is an open source software framework for creating apps that help people better understand and manage their health.

CareKit CareKit™ is an open source software framework for creating apps that help people better understand and manage their health. The framework prov

CareKit 2.3k Dec 27, 2022