Build, Deploy, and Scale your Mobile Backend with Node.js and Modulus

Taron Foxworth

@anaptfox

Lead Sales Engineer

  • Overview
  • Generating a Mobile App with Telerik
  • Building an API
  • Deploying the API with Modulus
  • Bridging the Gap
  • What's Next?

Agenda

Overview

Login

Mobile App

View Trips

API

User API

Flight API

Airlines Application

Generating a Mobile App

index.html

var seatMapDrawing = new seatMapDrawing();
var airData = new airlinesData(2000);
var airlines = new airlinesApp();
airlines.run();

main.js

    _initHome = function(){
        if (!_login) {
	    	$.mobile.changePage("#logon", { transition: "flip" });
	    	$('#login').submit(function () {
	    		$(this).hide();
	    		_login = true;
	    		airData.logOn($('#userName').val(), $('#pwd').val(),_handleLogOn);
	    		return false;
	    	});
	    }
    },
        
    _handleLogOn = function (ff, success) {
		if (success) {
			_ffNum = ff;
			airData.getDataforFF(_ffNum,_handleDataForFF);
		}
     },

airlinedata.js

Building an API

Yeoman

sudo npm install -g yo bower grunt-cli gulp

Installing Yeoman

sudo npm -g install git+https://github.com/brianviveiros/generator-rest-express.git

mkdir mobile-backend && cd mobile-backend

yo rest-express

yo rest-express:resource flight

Scaffolding our App

var flight = require('../resources/flight.js');

app.post('/flights', flight.create);		// Create
app.get('/flights/:id', flight.get);		// Read
app.put('/flights/:id', flight.update);		// Update
app.del('/flights/:id', flight.delete);		// Delete
app.get('/flights', flight.list);	        // List

Our Rest API

{
    "cNum": "ABCDED",
    "timeToCheckIn": true,
    "currentSegment": 0,
    "segments": [
        {
            "from": "BOS",
            "to": "SEA",
            "departDate": "6/11/2012",
            "time": "4:00PM",
            "flightNum": "122",
            "seat": "5D",
            "gate": "A1"
        },
        {
            "from": "SEA",
            "to": "BOS",
            "departDate": "6/1/2012",
            "time": "5:00PM",
            "flightNum": "111",
            "seat": "5A",
            "gate": "C10"
        }
    ]
}

Add Flights 

Deploying the API

Fix Mongo

	
// Connect to mongo
var mongoURL = 'mongodb://127.0.0.1/myApp';
mongoose.connect(process.env.MONGO_URL || mongoURL);

Fix CORS

var cors = require('cors');


app.use(cors());

Install Modulus

Create Project

Deploy

sudo npm i -g modulus
modulus deploy
modulus project create

Signup/ Login

modulus signup

4 Simple Steps

Bridging the Gap

Bridging the Gap

getDataforFF = function(id, callback) {
	getAllFlights(function (data) {
        ffInfo.flights = data;
		callback(ffInfo);
	}, 'getting your data ...', this);
},
getAllFlights = function getAllFlights(func, text, thisObj) {
    $.mobile.loading('show', { theme: 'a', textVisible: true, text:text });
    $.get("http://teleriktalk-46134.onmodulus.net/flights", function( data ) {
      $.mobile.loading('hide');
	  func(data);
    });
}
  • Generating a user API
  • Using that User API 
  • Testing
  • Validation

What's Next?

Take the Survey

Win Prizes!

Build, Deploy, and Scale your Mobile Backend with Node.js and Modulus

By Taron Foxworth

Build, Deploy, and Scale your Mobile Backend with Node.js and Modulus

  • 2,178