Slide 1

Slide 1 text

No content

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

!

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

" # $ % & '

Slide 6

Slide 6 text

1 000 videos/month 800 M views/month 10 M followers

Slide 7

Slide 7 text

Team CTO Lead Dev Mobile Lead Dev Web DevOps Dev iOS Contractor Dev Web Contractor Dev Web Contractor

Slide 8

Slide 8 text

OpenAPI backend back office iOS brut.media … API contract

Slide 9

Slide 9 text

SwagGen SwiftLint

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

master dev → Pull requests must be rebased on dev before merging → Merge on the master branch are done using a script to release a new build Git strategy

Slide 12

Slide 12 text

( → Merge on master generates a TestFlight build → Build number is Travis CI job number
 Version number is updated manually → Generates a changelog with merge commits → Uploads symbols to Sentry Release process

Slide 13

Slide 13 text

Bradel Carthage Dependencies Native Binary

Slide 14

Slide 14 text

Logger Application Other projects? Analytics LoadMore Brut Backend Notification extensions Architecture

Slide 15

Slide 15 text

→ Views → View controllers → View models → Networking code → CoreData entities → Data fetching routines Main project Backend

Slide 16

Slide 16 text

Core Data

Slide 17

Slide 17 text

→ Native solution → UI tool to create the App model layer → Manage caching for us → High learning curve → Black box with potential pitfalls + - Core Data

Slide 18

Slide 18 text

→ Open-source error reporting tool → Privacy-compatible alternative to Fabric → Flexible → Covers all our needs

Slide 19

Slide 19 text

→ Lokalise to update and manage the localization strings → fastlane lane to download the strings/stringsdict files and install them in the project → SwiftGen to have strongly-typed identifiers "' Localization %

Slide 20

Slide 20 text

Bindings ?

Slide 21

Slide 21 text

SwiftGen Bindings ?

Slide 22

Slide 22 text

SwiftGen SwagGen Bindings ?

Slide 23

Slide 23 text

SwiftGen SwagGen Bindings ✍ *

Slide 24

Slide 24 text

SwiftGen SwagGen Bindings ✍ !

Slide 25

Slide 25 text

SwiftGen SwagGen Bindings ✍ !

Slide 26

Slide 26 text

SwiftGen SwagGen Bindings ✍ !

Slide 27

Slide 27 text

SwiftGen SwagGen Bindings ✍ !

Slide 28

Slide 28 text

SwiftGen SwagGen Bindings ✍ !

Slide 29

Slide 29 text

SwiftGen SwagGen Bindings ✍ +

Slide 30

Slide 30 text

API Models API EndPoints SwagGen OpenAPI file CoreData Model SwiftGen CoreData Entities + Sourcery Annotations API to CoreData Bindings Sourcery API & model 
 bindings

Slide 31

Slide 31 text

No content

Slide 32

Slide 32 text

Product

Slide 33

Slide 33 text

Create a label with a red background that follows text Now open-source: github.com/brutmedia/labelrouge

Slide 34

Slide 34 text

,

Slide 35

Slide 35 text

Slide 36

Slide 36 text

.

Slide 37

Slide 37 text

@liquidseb @adhumi Questions?