Slide 1

Slide 1 text

Introduction to

Slide 2

Slide 2 text

Realtime Backend for your App

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

The Full Stack Creating an app requires managing complex infrastructure.

Slide 5

Slide 5 text

But the full stack is never that simple

Slide 6

Slide 6 text

… and neither is the client side Clients: ● Web ● iOS ● Android

Slide 7

Slide 7 text

… the truth is The users don’t care about your backend

Slide 8

Slide 8 text

The User Expects ● Speed ● Offline ● Multi-platform ● Simple Autentification

Slide 9

Slide 9 text

Firebase Backend

Slide 10

Slide 10 text

And forget the server Firebase apps can run on client-side code only

Slide 11

Slide 11 text

REALTIME DATABASE ● NoSQL JSON data-store ● Cross-platform client-side SDKs ● Offline out-of-the-box ● Auto-scaling ● RESTful API

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

REALTIME DATA Whenever data is updated in Firebase, it sends the update down to every listening client

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

Cross-platform

Slide 16

Slide 16 text

Storing Data Firebase ref = new Firebase(“https://.firebaseio.com/message”); ref.setValue(“All the things”);

Slide 17

Slide 17 text

Storing Data { “location”: { “city”: “Ternopil”, “country”: “Ukraine” } }

Slide 18

Slide 18 text

Sync Data Firebase ref = new Firebase (“https://.firebaseio.com/message”); ref.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshop snapshot) { System.out.println(snapshot.getValue()); } @Override public void onCancelled(FirebaseError error) { } });

Slide 19

Slide 19 text

{ "messages": { "message1": { "text": "Hello, world", "country": "USA" }, "message2": { "text": "Bonjour monde", "country": "France" }, "message3": { "text": "Hello, world", "country": "England" }, "message4": { "text": "你好世界", "country": "China" }, "message5": { "text": "γειά σου κόσμος", "country": "Greece" }, ... } }

Slide 20

Slide 20 text

Offline

Slide 21

Slide 21 text

Intermittent Offline What happens when you go through a tunnel? Firebase clients store a local cache of your data. When the user goes offline, the app still works as expected with the local cache.

Slide 22

Slide 22 text

Extended Offline What happens when you go on a flight? On mobile, Firebase persists data to a local store. The app will continue to work even across app restarts.

Slide 23

Slide 23 text

One Line Of Code Firebase.getDefaultConfig().setPersistenceEnabled(true);

Slide 24

Slide 24 text

Autentification ● Email & Password ● Google ● Twitter ● Facebook ● Github ● Anonymous ● Custom

Slide 25

Slide 25 text

Autentification ref.authWithOAuthToken("google", "", new Firebase. AuthResultHandler() { @Override public void onAuthenticated(AuthData authData) { // the Google user is now authenticated with your Firebase app } @Override public void onAuthenticationError(FirebaseError firebaseError) { // there was an error } });

Slide 26

Slide 26 text

Security ● Declarative rules language ● JavaScript-like syntax ● Executed server-side ● Authorization ● Schema validation

Slide 27

Slide 27 text

Security By default everyone can write and read { "rules": { ".read": true, ".write": true, } }

Slide 28

Slide 28 text

Security Everyone can read, but no one can write { "rules": { ".read": true, ".write": false, } }

Slide 29

Slide 29 text

Security Secure specific parts of your Firebase { "rules": { ".read": true, "message": { ".write": false } } }

Slide 30

Slide 30 text

Security Special variables to power autentification { "rules": { ".read": true, "message": { ".write": "auth !== null", ".validate": "newData.isString() && newData.val().length < 100" } } }

Slide 31

Slide 31 text

User-based Security Use $wildcards as route parameters { "rules": { ".read": false, ".write": false, "users": { "$userid": { ".read": "true", ".write": "auth.uid === $userid" } } } }

Slide 32

Slide 32 text

Hosting ● Free static asset hosting ● SSL certificate ● Global CDN ● Single command deploys ● One-click rollbacks ● Custom domains

Slide 33

Slide 33 text

Hosting Demo

Slide 34

Slide 34 text

And More ... ● Angular, React, Ember, Backbone bindings ● GeoFire (realtime geolocation) ● Firepad (realtime text editing) ● Open Data Sets ● More coming soon...

Slide 35

Slide 35 text

Let’s Code

Slide 36

Slide 36 text

Thank You!