At Appcelerator, account managers use an app called “Now”. “Now” is a cross-platform, Salesforce-connected app that gives our sales group an at-a-glance view of their opportunities and what they should focus on right now. Here’s a short video of how it looks on iOS and Android.
The “Now” app is also a great example of what an app built on Appcelerator’s suite of products can achieve for an organization. Here are some quick, technical stats on the app:
- Built 100% on the Appcelerator Platform
- Mobile app built on top of Alloy
- Built in less than 5 weeks
- 3 employees touched the app
- Developer & Designer: Matt Congrove
- QA: Cindy Kao
- Architecture: Rick Blalock
- A little under 5,000 lines of code
- 99.95% code re-use across iOS and Android (only 37 lines of code are OS specific)
- Node.ACS middle tier server to manage the data coming from Salesforce and in to the app
- 15 Appcelerator Automated UI, Test scripts
- CI/CD flow with automatic deployment
The document below shows a more detailed breakdown of the time and resources used for this app, compared with the time/resources required for building it using Objective-C or Java.
The Node app is architected in a way where we can swap out the data source from SalesForce to SAP to even some demo data for our account managers to use so they can show off the app to customers.
While we were demo-ing the app to our account managers this quarter, the SalesForce instance actually went through some changes and broke the data structure. Since we were using Node.ACS, we were able to fix the issue on the server within a few minutes without missing a beat during the demo, or requiring any changes to the actual app! If we hadn’t built the data integration on the Node.ACS tier, we would’ve had to fix it in the app, re-compile, and send out a new app update to everyone.
Analytics and Performance Management
Analytics and performance reporting are a vital part of any serious, enterprise-grade app. The “Now” app leverages the Appcelerator Analytics and Performance Management, so that we can determine what features are being used by our salesforce and how they interact with the sales data.
On High Code Re-use
We were able to achieve 99.95% code reuse because of the unique design of the Now app. Code reuse can be defined in two different ways: Code referring to programming logic, or code referring to programming logic AND user interface code. In the case of the “Now” app, we decided to go with a platform-agnostic design, which allowed us to achieve 99.95% code reuse of both UI and programming logic! The app has very little OS specific API’s used, in fact, only 37 lines of code are platform specific.
It’s important to understand: when you build cross-platform Titanium apps, you can follow several different approaches: 100% native UI/UX, platform-agnostic UI, or a mix of both. If you use 100% the OS specific UI API’s, a lot of your UI code will be platform specific and things like Action Bars, Navigation Windows, etc. won’t be re-usable. If you choose a design route that has a very unique design that isn’t specific to any platform, then you can achieve very high UI code reuse. There isn’t anything wrong with either approach and Titanium can help you achieve either goal.
This app uses a view-based navigation architecture using our core.js boilerplate. There is one window and stacked views are animated in and out on that one window. If you’d like to see a sample app that utilizes this structure, we set one up for you here in the Core.js repo at https://github.com/rblalock/core/tree/master/demo_app/examples/viewNavigation