@remi_grumeau

Firebase

Plateforme pour applications temps réel

Données
Stocke et synchronise les clients
Hébergement
Fichiers statiques
(via Git)
Authentification
Tokens, sessions, droits, ...

Données

Données objet

soit par défaut un objet égal à null

Données objet

mais qui peut être n'importe quoi...

Données objet

dont un autre objet

Données objet

avec sa propre URL

API JS objet



						
var ref = new Firebase('https://chtijs8.firebaseio.com');
var refPeople = new Firebase('https://chtijs8.firebaseio.com/people');

100% Rest, HTTPS only

API JS objet


ref.set({'talks':['Firebase','RequireJS']}, onComplete);

ref.set({'drinks':'beer', onComplete);

100% JSON

API JS objet


chtiJSRef.on('value', function(dataSnapshot) {
  // Lorsqu'une action vient modifier la structure de l'objet
});
chtiJSRef.on('child_added', function(childSnapshot, prevChildName) {
  // Lorsque l'objet a reçu un event "set"
});
chtiJSRef.on('child_changed', function(childSnapshot, prevChildName) {
  // Lorsque l'objet a reçu un event “update"
});
chtiJSRef.off('child_changed'); // on stoppe l'écouteur

100% orienté écouteurs

Demo :)

bit.ly / chtijschat

Token JWTs


	// Generate a new secure JWT
var FirebaseTokenGenerator = require("./firebase-token-generator-node.js");
var tokenGenerator = new FirebaseTokenGenerator(YOUR_FIREBASE_SECRET);
var token = tokenGenerator.createToken({"app_user_id": 1234, "isModerator": true });
	
Gestion de droits lecture/écriture objet

Régles


{
  "rules": {
    ".read": true,
    ".write": false
  }
}
Open bar

Régles


{
  "rules": {
    ".read": true,
    "talks": {
      "firebase": {
        ".write": true,
      },
      "$other": {
        ".write": false
      }
    }
  }
}
Ecriture que pour ce talk

Régles


{
  "rules": {
    "users": {
      "$user": {
        ".read": "$user == auth.username",
        ".write": "$user == auth.username"
      }
    }
  }
}
Accès uniquement a son propre objet

auth()


var ref = new Firebase('https://chtijs8.firebaseio.com');
//Log me in
ref.auth(AUTH_TOKEN, function(error, result) {
  if(error) {
    console.log("Login Failed!", error);
  } else {
    console.log('Authenticated successfully with payload:', result.auth);
    console.log('Auth expires at:', new Date(result.expires * 1000));
  }
});
	
Prise en compte du token

C'est pas fini...

Hebergement

Angular







	

Open Data Sets

BitCoin / Litcoin / Dogecoin / Trafic / Weather / parking / Earthquake / ...

> Open Data Sets

Des questions ?

La semaine prochaine

WelshDesign


un équivalent du déjà célèbre ChtiJS, mais orienté webdesign


2 talks par @HTeuMeuLeu et @giannipolito

==> bit.ly/welshdesign3