Architecture

alt tag

Client-Side (Consumer App)

The consumer app is a multi-platform hybrid application packaged with Apache Cordova, enabling easy distribution on the different app stores. It is built as a single page application with AngularJS and Ionic. It runs on iOS, Android, Windows Phone, etc.

Client-Side (Employee-Facing)

Nibs Employees manage the application data (create offers, products, etc) in Salesforce in the browser or in the Salesforce1 mobile app. The employee-facing application is built using Salesforce declarative features with clicks not code.

Server-Side

The server-side of the consumer app runs on Heroku and is built with Node.js, Express, and Postgres.

The server-side application exposes its own REST endpoints. The client application gets its data by invoking these REST services. These are API calls to your own application (the Nibs server), and they don't count towards Salesforce API limits.

Salesforce Integration with Heroku Connect

The application data is maintained in Salesforce. Heroku Connect synchronizes the Salesforce data with a Postgres database running in Heroku.

Heroku Connect synchronizes the following Salesforce objects:

  • Contact (Bidirectional sync)
  • Campaign (Read only)
  • Product2 (Read only)
  • Interaction__c (Bidirectional sync)
  • Store__c (Read only)

Using Heroku Connect:

  • Consumers access the application data in Postgres through the application's own REST services
  • Developers write the data data access layer using SQL against the Postgres database
  • The data is kept in sync using Connect's bi-directional data synchronization

Learn more about Heroku Connect.

ExactTarget Push Notification

Push Notification is implemented using the ExactTarget Mobile Push APIs and is documented on this page

ExactTarget Journey Builder

See instructions for Journey Builder integration to learn how Journey Builder integrates with Nibs.

SOS

SOS is a feature of Service Cloud where you put a Video Help button into your app which enables your app's users to open a video chat directly with a service agent. SOS integrates with your app via an iOS SDK. The SOS functions can be exposed via an Apache Cordova plugin to the Javascript in the Nibs Angular App. Simply connect a new button to invoke the SOS Application:startSession method. The Apache Cordova project used for Nibs, with SOS integration is available here: https://github.com/heroku/nibs-cordova.

alt tag

User Management

  • User can sign up and create an account in the application or login with Facebook.
  • Nibs users are stored as Contacts in Salesforce.
  • User passwords are hashed with bcrypt using a per-user salt.
  • The application generates its own authorization tokens that the client passes in the header of each request.

Facebook Integration

  • Facebook integration is performed using OpenFB.
  • In addition to login, Nibs gets the user's profile picture and email address from Facebook.
  • If that email address is already assigned to a Contact in Salesforce, the two accounts are reconciled. If not, a new contact is created.
  • The Facebook integration also allows users to share application content (offers and products) on their feed.

Camera Integration

  • Profile picture: The user can change his/her profile picture by either taking a selfie on the device, or choosing an existing picture from the device camera roll.
  • Instagram-like feature: The user can take pictures and share them with the community.