London Salesforce Dev Meetup – Feb 2015

4273123916_5e3ec7f7a5_z

Photo: Christopher “Rice” 

The February meetup of the London Salesforce Developers took place again back at the Make Positive offices, and this time-out was on the topic of Continuous Integration.

In a world where developer and admin workforces are commonly remote and often working on many features that are to be bundled into larger releases the idea and practice of continuous integration is one that can deliver real results for quite minimal investment.

There were two speakers due to talk on the matter, so rather than I spout on about the topic myself I’ll cover their presentations as best I can.

Klea Kolaric – Using Bamboo to enable CI

Klea is a technical consultant at a Salesforce implementation partner and talked about how they are using Bamboo within their CI workflow at the company. Bamboo is a CI and Build Server tool from Atlassian (who also make the Confluence and Jira tools).

Klea started off by talking about the options for deploying to Salesforce; Using Changesets, an IDE or CI tools. She listed the pitfalls of the first two options and how the CI route removes a lot of risk from human error as well as giving huge speed improvements.

Using tools such as Bamboo you also get a nice controlled process for rolling back deployments, useful if something goes wrong (as it sometimes does). Another big benefit, in my eyes at least, is the auditing ability that tools such as Bamboo can give you. Klea told us how you get the important WhoWhenWhyWhat and How information through Bamboo’s great integration with the other tools in their toolset. Essentially commit messages from Bitbucket and issues from Jira are all linkable if provided.

One handy tip, that might just save you from a major head-ache might be to not set deploy to production variables by default. Klea has her setup such that if she accidentally runs her deploy process, then the automatic parts will only run a validation build; for her to run an actual deploy to production she has manual steps that need to be fulfilled.

Klea’s slides can be found here.

Sebastian Wagner – Multi Orgs and using Git for CI

Sebastian, a freelance Salesforce Certified Technical Architect was the next and last speaker for the evening. His talk covered how and why Git and CI techniques and tools can be used in Salesforce development. His talk covered some of the same ground as Klea’s but was less Bamboo-centric; again he covered some of the issues that can be resolved (or at least reduced) by using CI, but he also mentioned non-Atlassian tools such as Github and Jenkins. Here, at MobileCaddy we’re using both Atlassian and non-Atlassian tools for our CI. The tools are similar but certainly some are more suited (and free) than others.

There was a lot of content in Sebastian’s slides, and for those that want to dig in he has kindly published them here. One of the key points that was mentioned but I think is worth picking up on is the use of a good git branching model. Sebastian mentioned the GitFlow model which Atlassian have brilliantly written up. I first came across this kind of model through the excellent post by Vincent Driessen called A successful Git Branching Model. Even though this was posted by him over 5 years ago it’s worth a read for sure.

Close

On Continuous Integration: if you’re not doing it, start… today.

On the event: This was the most attended meetup to date I believe and shows how the community is going from strength to strength. I did note though that there were at least 70+ blokes in the room, and less than 5 ladies. I tweeted this and got a reply from April Kyle Nassi (Developer Community Manager at Salesforce) and as you can see in this conversation it looks like there are steps at least to improve this. It also turns out that there was a Women Who Code event on in London on the same night, and this could certainly have played a part.

As usual there was a full supply of beer and pizza, so thanks again to the sponsors.


Ionic UK Meetup – Jan 2015

As per our preview post, some of the MobileCaddy crew headed to the very first Ionic UK meetup… and boy what a fab evening it was. The event was organised by Sani Yusuf and Ryan Hanna and to say their efforts were clear to see would be an understatement.

The meetup took place at the excellent SkillsMatter, and they had everything that could have been asked for from a venue.

IonicUK logo

Sani Yusuf – Kick Off

An introduction to Ionic, it’s past, present and future was the starter dish for the evening. Sani took to the front in his famous Google Glass and took us through what life was like before tools like Ionic arrived on the scene. This was a time when to develop apps for mobiles meant using different languages for the different platforms. A time when these restrictions meant porting apps and having multiple, non-interchangeable teams of developers. He told us how the first wave of Hybrid apps promised to free us from these constraints and how these promises never really delivered… and then came Ionic.

Ionic, for those that don’t know, is a framework/SDK enabling folk to quickly build hybrid mobile apps using HTML5 technologies. Ionic uses the amazing Apache Cordova tools to take advantage of device features (GPS, camera, etc) as well as enabling the apps to be built into suitable formats for submission onto the different app stores (iTunes, Google Play, etc).

With Ionic came a toolset that removed some of the pains that developers were used to when initially building Cordova apps. A focus on performance meant that apps could now be built that had native like experiences… users shouldn’t/wouldn’t need to know if apps were native or hybrid. And this is what we really like about using Ionic ourselves at MobileCaddy. With every release (and keep in mind it’s still in Beta) the performance across all platforms just keeps getting better. Have I mentioned yet that we big fans of Ionic at MobileCaddy?

A quick demo was then rolled out to demonstrate just how quick it is to get started with Ionic… and if you want to see for yourself head over here. Sani joked at how you could have a $1bn app in minutes, in a way there are real serious opportunities available.

Sani and Ryan, organisers of the meetup

And just then not only did the beer and Pizza arrive, but we were also privileged to have Max Lynch (one of Ionic’s founders) join us on a Hangout.

Max Lynch – A Hangout

Max mainly focused on chatting about the new and upcoming features and tools that he and the Ionic folk were working on. Most of the focus was on the upcoming Ionic.IO. He discussed how that even though Ionic was currently enabling devs to build amazing hybrid apps that there were still pain-points and a lot more that could be done. Ionic.IO essentially delivers a platform to sit alongside the actual apps. This would deliver the following types of features;

  • Push Notifications
  • Dynamic Versioning – Being able to update your app without having to go through the app submission rigmarole.
  • Analytics
  • A/B Testing

At MobileCaddy we have already started addressing some of these issues using the Salesforce platform, for example we can already do Dynamic Versioning and have taken the idea even further with a greater level of control.

Max also talked about the recent work they have done with the Crosswalk project, and how this is further pushing increased performance on Android devices. Essentially this allows you to bundle a specific version of webkit with your APK (the binary application file that is installed on people’s devices). This has the effect of meaning, as a developer, you have a known landscape when dealing with your HTML/JS/CSS, as well as of course meaning you can take advantage of newer builds and their feature sets sooner that might otherwise have been possible.

One question came up for Max about Angular 2. His reaction was positive, saying he was excited and that Ionic for Angular 2 would be on the cards. He also mentioned that Angular 2 is pushing towards a component based framework. I’ve not really looked into Angular 2 in any great detail, but this component based framework might play very nicely with Salesforce’s Lightning components. We heard about these from Doug and Skip from Salesforce at the last London Salesforce Developer’s meetup, so see our review for more information.

Ryan Hanna – Showcase

Co-organiser Ryan was next up, with the task of showing off a few apps built with Ionic, but before I get to that I should cover some of Ryan’s background. He’s a self taught developer (using Code Academy) and has only been in the game for three or so years. What’s amazing then is the fact that he’s the sole developer on his own app Sworkit, and the success that this has had… but more about that later.

Zourist

Zourist is “an audio travel Guide to World Famous Monuments, a free mobile app which provides you authentic and reliable information so that you can visit the monument at your own pace”. It is developer by Nancy Goyal using Ionic and at the time of writing has a 5 star rating on Google Play.

Sworkit

Ryan then discussed his own app, a 4.5 star app available on both iTunes and Google Play. This is a real flagship app for Ionic, with over 3m downloads covering both OSs and is available in a Lite and Pro guise. The app is available in 13 languages, and this has been achieved using the Angular Translate module. Modules like this mean that tasks like making your app available for the international market reachable without too much effort, something that will be music to multinational organisations I’m sure.

With such a large user base I was keen to find out what Ryan’s experience had been with the accessibility of hybrid apps built with Ionic. He told me that the feedback he’d gotten so far had been very positive. My understanding is that basic HTML5 good practice pays off in the same way for apps as it does for websites.

Ryan had also mentioned something called localForage, this is a library that gives you a nice API for asynchronous storage (IndexedDB, WebSQL), resulting in an interface more akin to localStorage. We could certainly introduce something like this into our CodeFlow environment.

Todd Halfpenny – MobileCaddy

pres_small

I was up next, and took the meetup attendees on a speedy tour of how MobileCaddy can enable JavaScript developers to build enterprise grade, robust mobile applications for Salesforce. I’ll hopefully post the slides up shortly, but the key takeaways were that MobileCaddy enables;

  • JavaScript developers to build enterprise grade apps for Salesforce
  • (Secure) Offline, Data Synchronisation out the box
  • Salesforce authentication with no coding
  • A controlled application development/deployment lifecycyle, including OTA app updates.

We also demonstrated our Deploy to Salesforce feature for the first time.

Screenshot of MobileCaddy's Deploy to Salesforce Button

This allows developers to deploy new versions of their mobile applications to the Salesforce platform from within the very app they are building. I have to be honest and say that I am very excited about this, and even more so about where we see this heading. Just another tool that we hope will ease enterprise mobile application development.

Richard Sands – Angular Fullstack Ionic

A late entry to the lineup, Richard give us a whirlwind tour of his new Angular Fullstack Ionic project. I think he can explain it better than I can, so this is lifted from the Readme;

The motivation behind Angular Fullstack Ionic is to streamline the development of projects that include an API, Angular webapp and Ionic app. It’s core design principles include sharing code and assets wherever possible, creating an efficient workflow and making it super easy to start off a project with handy components available out of the box (e.g. user signup/login).

It is based on the brilliant Yeoman angular-fullstack project

His enthusiasm and passion shone through, and despite the project be very young I can see that it shows potential.

Closing Notes

The event was a great success, and I look forward to seeing more from this exciting community. And I’m sure that MobileCaddy will continue to be a part of it.


West London Salesforce1 Meetup – Jan 2015

Yesterday Creation Technology hosted the inaugural West London Salesforce1 Users and Developers MeetupPaulJustin and I, on behalf of MobileCaddy, are delighted to have been invited to present alongside the wonderful Peter Chittum.

The meetup was entitled Create Mobile Solutions in a Flash and followed nicely on from the last Salesforce meetup we attended which was focused on Salesforce Lightning (see our blog here).

flash
Image by Creation Technology

Peter Chittum – Salesforce Lightning

Peter was up first; his talk was based on two of the Lightning products, Lightning Components and the Lightning App Builder. As per usual with a Salesforce talk the Safe Harbour slide was then presented and with this in mind informed that the Lightning App builder should be in GA in the Summer ’15 release. It’s currently in pilot so is available to use if you ask your account contact.

Lightning Components

Peter covered a few of the basic points, how SF1 was built using Lightning, how Aura is the open source basis of lightning, etc. We’ve written about these before, so I won’t go into details again. One thing that was mentioned over again though, and I think was the big take-away from this part of the session, was the Event Driven approach of Lightning and how this enables different components to interact with each other, through subscription and firing. Components could be one of three types, and interaction between them all is available and this is the grounding for a component based framework like Lightning. The component types are;

  • Standard – Out of the box from Salesforce
  • Custom – Written by you and your teams
  • AppExchange – Written by third parties and available through the (coming soon) ComponentExchange

Peter then showed us a quick demo based upon the Lightning Quick Start tutorial, but he also added an external component in. He used a FileUpload component (written by Peter Knolle and available on github) and demonstrated how the component could be plugged into his app. There’s further info on the component on Peter Knolles blog.

Further info on on what’s available in Spring ’15 and how to use it can be found in the Spring ’15 Lightning Component Dev Guide.

One final note on components is that within a component, developers can include fully fledged documentation, including code examples, specs etc. This, if pushed correctly, could be a big winner for devs everywhere.

Lightning App Builder

Peter then showed us a quick demo of the Lightning App builder. If you’re not familiar with the App Builder then you could do worse than watch this demo vid.

Peter’s demo showed us that with some boiler plate code Peter Knolles’ FileUpload component could be made available in the App Builder palette. It was a brief demo, but I suppose if something has been made quite simple then it lends itself to being quicker than you might expect.

I’m still not personally sure how much the App Builder will take off among the more hardcore devs, but who knows, I might be pleasantly surprised (I’ve not yet used it myself).

Justin Halfpenny – Delivering Enterprise Mobility

Our CEO Justin was up next discussing Enterprise mobility. The WhoWhy and How of delivering what has become standard for consumer mobile applications.

Justin told us how, inside our organisations, more people are mobile than we think. Just because they’re onsite it does not mean that they’re sitting at their desk. As for Why? there are many answers. Not just increased productivity, but also improved customer service and decreased cost of business. All this lends itself to better business… for yourselves and for your customers. We also need to be aware of the rate of change in technology; A lot of people are now walking around with devices that have many sensors and capabilities. Who knows what will be available on them next year, and the year after.

The How? of course is where MobileCaddy comes in.

demanding_apps

With MobileCaddy we remove all the boring stuff, the functionality that has to be there, the things that as devs we hope will just work so we can get on with building the functionality that are going to make our apps the best they can be. As an app dev you shouldn’t need to worry about monitoring, upgrade rollouts, authentication, etc.

Justin then demoed a Child Healthcare Tracker application that we had built. Showing how each platform interaction can be logged and monitored, and how this can give organisations peace of mind. He also demoed the MobileCaddy Platform Emulator and Codeflow environments that allow for rapid development and testing of mobile apps built for Salesforce.

Justin’s slides can be found over here on SlideShare.

Closing Notes

Huge thanks to the Creation Technology team for putting on an excellent event. For a “first” meetup it was very organised and well attended and I very much look forward to the future ones. A special note should be made on the supplied food and drink, never before have I been offered Rioja and Olives at a techy meetup… and I think Paul was pleased with this situation.

paul

London Salesforce Dev Meetup – Jan 2015

 

lightning

Yesterday myself, Paul and Justin attended the first London Salesforce Developer’s meet-up of 2015. We had all been to many in the past but were particularly excited about this one, as Doug Chasman and Skip Sauls were presenting on the much hyped Salesforce Lightning.

The meetup was hosted for the first time at the dotmailer offices near London Bridge, they provided excellent facilities which were matched only by the quality (and quantity) of pizza and beer supplied generously by the kind folk at MakePositive. So big thanks to both companies.

LonDevSFDC

Doug and Skip (though mainly Doug, as Skip had laryngitis!) talked and demo’d us through the history of Lightning, the architecture of Lightning Component, some examples and a look into the future to see what’s on the roadmap. There was a lot of information passed on, and I have to be honest and say I don’t want to (or maybe can’t) regurgitate it all here… but I will cover what I seem to believe are the main nuggets that got me thinking.

Lightning and Aura

  • Before Lightning became available to developers Salesforce had been using it internally for sometime.
  • In fact SF1 is built using Lightning.
  • Lightning is also known as Aura. Salesforce’s marketeers didn’t want to call it Visualforce2
  • Aura is Salesforce open source UI framework, and can be found on github here.
  • Anyone out there can contribute to Aura through Pull Requests, and with that their work will end up inside Salesforce and powering Lightning.
  • Aura/Lightning is built by the same team that built Visualforce
londevsfdc

Security

Doug also covered (many times) the fact that trust and security were high priorities… obviously that was great to hear. This eye on security has meant a couple of things. 1) lightning components (on the platform) live on a lightning domain. 2) Communication to/from the client/server parts of Lightning components is locked down. This point was one of the very few “guidances” that is put on how components are used.

Here are a few other points on Lightning;

  • There will be a Component Exchange, a-la AppExchange
  • The client/server comms are called Action Services. There are options to box car calls as well as other behaviours (display-last-known-goodauto-refresh, etc).
  • Offline capabilities are limited to read at present. Create and Update are on the roadmap (no dates given).
  • BIG SAFE HARBOUR – Summer ’15 should see the ability to put Lightning Components inside Visualforce pages.
  • As well as Lightning Components being available for use in Visualforce pages, Lightning Out will also enable Lightning components to be used within other containers (websites, etc).
  • The Lightning team are working closely on getting integrations with other JavaScript libraries. These include Angular, Polymer, React, Meteor, and others.

For more information on Lightning, check out the Salesforce developer site.

All-in, the session was excellent. Both guys showed passion for the platform and certainly for Lightning. If you get a chance to see them talk then I’d definitely recommend it.

Big thanks to Anup and Co. for another brilliant meetup.

Want More Salesforce?

If you have a thirst for more Salesforce goodness then come along to the Create Mobile Solutions in a Flash session of the West London Salesforce1 Users and Developers group, where our good selves will be among the presenters.


Ionic Beta.14 Bottom Aligned Tabs In Android

Following the v1.0.0-Beta.14 upgrade you might have noticed that, when running on an Android device, your applications tabs are now aligned to the top of the screen rather than the bottom. If you’d like to have it so that you still have bottom aligned tabs then you need to specify an extra line of config. We’ll detail here what you need to do, and give you some background (and links) as to why this change has occurred.

Ionic Tabs : Android / Ionic 1.0.0-Beta.13

Here you can see the tabs are at the bottom, just as with iOS.

IonicTabsAndroid

Ionic Tabs : Android / Ionic 1.0.0-Beta.14

And here you can see the tabs are at the top. This is how tabs will look on an Android device by default.

IonicTabsAndroid

As defined in the Ionic Tabs documentation and the related $IonicConfigProvider documentation it is possible to specify a tabs.position config item. This can be done as per this code extract;

This $IonicConfigProvider is new to this latest version of Ionic and allows for a huge amount of configuration of the look and behaviour to the apps that can be created.

The change to this alignment of tabs for Android follows the other changes made in the Beta.14 release in terms of trying to follow platform specific design guides and patterns. More information on the 1.0.0-Beta.14 release can be found on the Ionic Blog.

We have put together a quick CodePen of this in action. It was forked from Ionic’s CodePen for tabs, based on their nightly version so should be up-to-date. To see it in action, as if you were on an Android Device then you can use Google Chrome’s Device Mode to emulate it. To see how the tabs look before the extra config, then do the same with Ionic’s vanilla codepen.


Offline Ionicons – Getting them working

ionicons-logo

We’ve heard of several folk having issues getting their Ionic powered mobile applications working offline correctly when using the Ionicons. We’ll show you 2 quick ways that should help you out if you’re having the same issue. Offline ionicons are possible, and not difficult to implement.

The Issue

When using the HTML application cache you define a list of assets to be cached locally, allowing for local serving of them. This gives you performance increases and also offline capabilities. These assets are listed under the CACHE MANIFEST header. This is the section where, if using Ionicons in your Ionic application, you could be tempted to list the following;

You’d then potentially use Sass to process the SCSS files supplied with Ionic and you’d soon see that your icons weren’t displaying offline.

This occurs due to the Ionic SCSS supplying a version number into a query param for the Ionicon font files.

What this means is that the URLs for the font files in the outputted CSS are actually like this;

What has happened here is that the the URLs now have ?v=1.5.2 appended to them… and this means that our CACHE MANIFEST entries will not match and our app cache will not cache them, and so our offline ionicons won’t be there. Sadly this quirk of app cache isn’t mentioned in either the pages over at w3schools.com or HTML5 Rocks, and is therefore quite commonly missed.

Solution 1 : Correct your CACHE MANIFEST

Update your CACHE MANIFEST to include the query parameters that are associated with the version of Ionicons that is being used.

Solution 2 : Modify the Ionicons SCSS

An alternative is to modify the ionicons-font.scss file to remove the code that inserts the query parameter. There can be several reasons to take this approach and for one of the Salesforce projects here at MobileCaddy this was just what we decided to do.

If you want to take this approach then your SCSS should be modified to look like this;

Due to us using bower to bring in Ionic as part of our development setup we also decided that instead of manually having to modify the SCSS (which wasn’t stored in out git repositories) we created a simple Grunt task to do this for us. Then we added this Grunt task into our standard workflow which meant our developers didn’t need to think about this at all. Our Grunt task looks something like this;

Using either of these approaches should help you to get offline ionicons working and hopefully assist you with creating more robust mobile applications.


UK NFP Salesforce User Group Dec 2014

Yesterday I attended my first UK Not-for-profit Salesforce User Group event, and I’m happy to say I hope it won’t be my last. The events are currently organised by Julia Whitehead of Give Clarity and Faith Williams of ShoNet. This particular event was hosted at the lovely dotmailer offices in London Bridge.

The event kicked off with a small pitch from dotmailer, something which I’ve come to expect from meetups and events like this. I can’t begrudge them too much, floor space in the city certainly doesn’t come for free.

Peter Ransom : The Officers’ Association

Up next was Peter Ransom from The Officers’ Association. The OA promote the welfare of those who have held a commission, in HM Armed Services, and their families. Peter gave an enjoyable and informative walk-through of their Salesforce implementation project It included info on why they chose Salesforce in the first instance, some of their results and some lessons that they had picked on their journey.  Before starting their integration project they ran a very paper-based business, with desks piled high with folders and stacks of paper… not the most efficient setup in this day and age. Peter highlighted the following results of their implementation;

  • 70% reduction in printing/photocopying costs
  • 30% reduction in administration costs

As well as talking through some of the architectural decisions Peter also ran through a set of ‘lessons learned;

  • Ensure good communication with end users. Assumptions from management aren’t always true and if end users are involved at an early stage then they tend to feel they also ‘own’ part of the project, and this can greatly help in removing friction and increase acceptance of change.
  • Set aside enough ‘snagging’ time. There will always be things you overlook.
  • Regularly review requirements. Peter said there project used an agile-esq approach and this review of requirements was useful.
  • Ensure SFDC knowledge is up to date.

Justin Halfpenny : MobileCaddy

Our CEO, Justin, was presenting the second talk. This was entitiled Delivering Enterprise Mobility. It was as much about getting the audience to ask themselves about their own views on Enterprise Mobility as it was about anything else. You need to start thinking about some of the issues that are fundamental to delivering an excellent mobile offering, but are often forgotten about when the journey begins. The earlier you’re aware of what factors and pitfalls are present in the mobile ecosystem, the better. People tend to be focused on getting an app up and running, but thinking about it’s lifecycle is equally, if not more, important. How does it work when offline? What happens when the organisation purchases new devices? What happens when the OSs upgrade automatically?

MobileCaddy presenting at the UK NFP Salesforce User Group

Justin started off by addressing these 3 questions;

  1. Who?
  2. Why?
  3. How?

The Who? deals with who are we talking about? Who is mobile and which organisations can take advantage of the move to mobile? The Why? asks what is driving organisations to embark on a mobile strategy and the How? focussed on how to start and how to make it work? The slides can be found here.

Kevin Bromer : NGO Connect Roadmap

Last up was a remote presentation from Kevin Bromer, a Solutions Architect at the Salesforce.com Foundation. This was focused on NGO Connect and the NFP Starter Pack. To be honest the content was somewhat dry and I had really hoped for more. That’s not to say that what you get with NGO Connect and the NFP Starter Pack isn’t pretty amazing, I think it is, it’s just that demoing the standard Salesforce UI is a bit underwhelming. If you’re interested then I suggest you head over to SalesforceFoundation.org to find out more about both products.

Wrap Up

Many thanks go to Julia and Faith and dotmailer for hosting, and the Salesforce foundation who funded the nibbles and drinks. There have historically been about 3 events a year, so keep your eyes peeled as I recommend going to one.


Custom Domain in Salesforce Mobile SDK Solution

When running up an app built with the Salesforce Mobile SDK there is an option to login to a custom domain. This is useful when testing against a sandbox or developer environment. The option, when running on an Android device, is accessible via the Change Server menu item which is available via the hardware menu button.

Screenshot showing menu for setting custom domain in pre 3.0 SDK

The issue comes though if your device doesn’t have a hardware button… what then?

The Solution

If an acceptable option for you is to have this custom domain hard-coded (so that it cant be changed) then you can modify some code to use your defined custom domain as the default. It is as easy as replacing a single line in one file… so let’s have a look. In the below I have commented out one line and replaced it, and in my example I’m setting the default domain to https://test.salesforce.com (as in my case I’m testing against a sandbox environment).

This means next time you run-up you can enter your custom domain login credentials without needing to switch server details.

As I have said, this is just a work-around, and is in fact fixed in the Mobile SDK v3.0. But, if you’re stuck using an older SDK then this may prove useful.

In the v3.0 SDK the login screen now looks like this, with a handy menu in the top bar.

Screenshot showing login screen with menu for setting custom domain/server

Happy coding.


Using ionic without ionic CLI

You may want to use the ionic JavaScript framework without having to use Cordova or the ionic CLI. This was just what we wanted to do in one of our seed applications to demonstrate how to build robust offline mobile applications that use Salesforce as their backend, so it make sense to share how we went about this.

Ionic without the CLI

Not only did we want the nice CSS framework that the (awesome) ionic guys have put together but we also wanted to use their angular directives. The approach we took is pretty simple, at least that’s what I think.

The solution

Our development setup was already using bower to install dependencies for our app… these included the handy Underscore JS JavaScript utility library and our own MobileCaddy SDK which enables full Salesforce offline capabilities. With this in mind we re-used bower to pull in the ionic assets too. Here is the line from our bower.json file that lives in the devDependency section

This line informs bower to download the 1.0.0-beta.13 release of ionic.

The next step is to enhance our existing Grunt tasks to copy the resources into our existing project structure. This is so that the SCSS is included in the Sass processing and the JS and other assets (fonts, etc) end up being included in our deployable code bundle. In our case our bundle is pushed to the Salesforce platform to be used within our mobile application. The below is a modified version of our Gruntfile.js which only includes the copy tasks needed to support this Ionic use.

And that’s it. Our offline mobile Salesforce application can now be built using the ionic Framework, without the use of Cordova or the ionic CLI.


Preparing to code with MobileCaddy Codeflow

Preparing to code with MobileCaddy Codeflow is the next step after being introduced to it’s components.

In this screencast I take you through using the Codeflow tools to set up a development environment, install one of the MobileCaddy seed apps and set it running in the Codeflow Emulator. This last step includes authentication against Salesforce and querying of live data on the platform. This means our application is initiated with live configurations and real platform data.

There are a couple of dependencies that need to be installed before using Codeflow, these are listed here along with links to installation instructions and/or their project homepage. These dependencies only need to be installed once and perhaps you even have one or some already installed.

In this example we’re using the MobileCaddy Time & Expenses demo application written using Ionic and AngularJS. The MobileCaddy SDK and our APIs though are framework agnostic and we’ll be releasing further shell apps using other frameworks such as BackboneJS.

In the next screencast from me we’ll see how we can mobilise some new fields and modify our shell app to support these. We’ll see how our grunt tasks can make our lives easier. Of course feel free to leave us some feedback or get in touch to let us know what else you might be interested in seeing us cover.