Mobile apps 
                    Made and managed in AEM 
                     
                     
                     
                    
                         
                    
                    
                 
                
                
                
                
                    Takeaways 
                    
                        
                            | 
                            | | 
                            | | | 
                         
                        
                            
                                AEM + proven open source tech
                             
                            
                                Developers apply existing web + AEM skills
                             
                            
                                Authors leverage tools they use everyday
                             
                         
                    
                    
                 
                
                
                    Agenda 
                    
  `-- <root>
      |-- Problem? 
      |-- Architecture
      |   |-- PhoneGap
      |   |   |-- CLI
      |   |   `-- Plugins
      |   |-- Content Sync
      |   `-- AngularJS
      |-- Dev Workflow
      `-- Author Workflow
 
                     
                    
                        
                            address the problem 
                            tasked with building an app... 
                         
                     
                 
                
                
                    
                        “Don’t download, its not worth your time just go on the website or your phone browser or computer”
                     
                     
                    
                        
                            "Don’t download, its not worth your time just go on the website or your phone browser or computer" 
                            performance expectations - despite identical hardware 
                         
                     
                 
                
                    
                        “Sticking to paper as it is a reliable source of getting what I need”
                     
                     
                    
                        
                            "Sticking to paper as it is a reliable source of getting what I need" 
                            stability - can't count on browser 
                            bad reviews are bad for business 
                         
                     
                 
                
                    Mobile apps are hard 
                    
                        
                            point is... 
                            number of reasons 
                         
                     
                 
                
                    
                    
                        
                            different platforms 
                            different programming languages 
                         
                     
                 
                
                    Content re-use across mediums 
                    
                        
                            mobile, web, now app 
                            enable reuse - not via email 
                            Manage that content efficiently 
                            Keep it relevant 
                         
                     
                 
                
                    Constraints 
                    
                        Performance 
                        Battery 
                        Connectivity 
                     
                    
                 
                
                    Opportunities 
                    
                        Touch 
                        Sensors 
                        Notifications 
                     
                    
                        
                            features available to mobile devices 
                            Manage constraints 
                            Including performance, battery, connectivity 
                         
                     
                 
                
                    AEM Apps 
                     
                    
                        
                            VP drew an interesting parallel: 1995 
                            Manage customer experience from one place 
                            give marketing control
                                
                                    like over their web content 
                                    reduce burden on IT 
                                    focus on dev new experiences instead of simply maintaining old ones 
                                 
                             
                         
                     
                 
                
                    Now 
                    
                        Modify app content w/o writing code 
                        Re-use author & business workflows 
                        Deliver 'Over the air' content updates 
                     
                    
                        
                            same tools used to author sites 
                            ACLs, workflows 
                            highlight store hours use case 
                         
                     
                 
                
                    Analytics 
                    
                        
                            Mobile services 
                            AEM makes analytics easy 
                            instrument our apps 
                         
                     
                 
                
                    
                    
                        
                            devices 
                            app versions 
                            launches 
                            session length 
                            ecom: shopping cart completion & abandonment 
                            session length 
                         
                     
                 
                
                
                    Agenda 
                    
  `-- <root>
      |-- Problem?
      |-- Architecture 
      |   |-- PhoneGap
      |   |   |-- CLI
      |   |   `-- Plugins
      |   |-- Content Sync
      |   `-- AngularJS
      |-- Dev Workflow
      `-- Author Workflow
 
                     
                 
                
                
                    Proven tech 
                    
                    
                        
                            AEM - 12 years 
                            PhoneGap - 5 yrs 
                            AngularJS - 5 yrs 
                            CS - since 5.4 
                         
                     
                 
                
                
                
                    Apps built with web tech 
                    you know and love 
                    
                        
                            web browser 
                            augmented with JS bridge 
                            access to device level 
                         
                     
                 
                
                    Platforms 
                    
                        iOS 
                        Android 
                        WP7, WP8, Windows 8 
                        BB10 
                        Amazon Fire OS 
                        Tizen 
                        and more... 
                     
                    
                 
                
                
                    CLI commands 
                    
  create <path>
  build <platform>
  install <platform>
  run <platform>
  local [command]
  remote [command] 
  platform [command]
  plugin [command]
  help [command]
  version
 
                     
                    
                        
                            manage, automate builds 
                            remote 
                         
                     
                 
                
                
                    PhoneGap Build 
                     
                    
                        
                            build apps without native SDKs 
                            integrates with github 
                         
                     
                 
                
                    Hooks 
                    
                        
                            tie in to any part of the build 
                            install plugins, copy assets, etc. 
                         
                     
                 
                
                    Phases 
                    
                        build 
                        compile 
                        docs 
                        emulate 
                        plugin_ls 
                        plugin_rm 
                        plugin_add 
                        platform_ls 
                        platform_rm 
                        platform_add 
                        prepare 
                        run 
                     
                    
                 
                
                    Plugins 
                     
                    
                 
                
                    Device-level APIs 
                    
                        Camera 
                        Accelerometer 
                        File system 
                        Contacts 
                        Events 
                        Connection 
                        Notification 
                        <your plugin here> 
                     
                    
                        
                            Features *not* avail to sites 
                            roll your own: reuse existing code 
                         
                     
                 
                
                    Demo time 
                    
                        
                            PG CLI 
                            open up dir, show Xcode project 
                         
                     
                 
                
                
                
                
                    Why Angular? 
                     
                    
                 
                
                    Why Angular? 
                     
                    
                 
                
                    AngularJS 
                    
                        Opinionated 
                        Two-way data binding 
                        Components (aka Directives) 
                        Single page apps 
                        Dependency injection 
                        Community 
                     
                    
                 
                
                    AngularJS Projects 
                    
                        
                            Ionic Framework
                         
                        
                            Angular Snap.js
                         
                        
                            angular-phonegap-ready
                         
                     
                    
                        
                            open source projects built on angular 
                         
                     
                 
                
                    Angular + AEM Challenges 
                    
                        Bring SPA paradigm to CMS 
                        Author mode VS. client side templating
                            
                                Access control 
                                Model & view separation 
                                Reusability of author’s skills 
                             
                         
                        Performance 
                     
                    
                 
                
                    Angular + AEM 
                    Routing 
$routeProvider
    .when('/content/phonegap/geometrixx/apps/ng-geometrixx-outdoors/en/home', {
        templateUrl: 'home.template.html' + cacheKiller,
        controller: 'geometrixxoutdoorsenhome'
    })
 
                    
                 
                
                    Angular + AEM 
                    Controllers 
// Controller for page 'home'
.controller('geometrixxoutdoorsenhome', 
    ['$scope', '$http',
        function($scope, $http) {
            var data = $http.get('home.angular.json' + cacheKiller);
            /* swipe_carousel component controller */
            data.then(function(response) {
                $scope.playSpeed = 
                    response.data["content-par/swipe_carousel"].playSpeed;
                $scope.contentparngswipecarousel = 
                    response.data["content-par/swipe_carousel"].items;
            });
            
        }
    ])
 
                    
                 
                
                
                
                
                    Handlers – new in 6.0 
                    
                        mobileapprootpage 
                        mobileapppages 
                        mobilepageassets 
                        mobilecontentlisting 
                     
                    
                 
                
                
                    Agenda 
                    
  `-- <root>
      |-- Problem?
      |-- Architecture
      |   |-- PhoneGap
      |   |   |-- CLI
      |   |   `-- Plugins
      |   |-- Content Sync
      |   `-- AngularJS
      |-- Dev Workflow 
      `-- Author Workflow
 
                     
                 
                
                
                
                    Agenda 
                    
  `-- <root>
      |-- Problem?
      |-- Architecture
      |   |-- PhoneGap
      |   |   |-- CLI
      |   |   `-- Plugins
      |   |-- Content Sync
      |   `-- AngularJS
      |-- Dev Workflow
      `-- Author Workflow 
 
                     
                 
                
                
                
                    Takeaways 
                    
                        
                            | 
                            | | 
                            | | | 
                         
                        
                            
                                AEM + proven open source tech
                             
                            
                                Developers apply existing web + AEM skills
                             
                            
                                Authors leverage tools they use everyday
                             
                         
                    
                    
                 
                
                    Q & A 
                    bit.ly/aem-pg 
                     
                 
                
                    Thank you 
             _, . '__ . 
          '_(_0o),(__)o().
        ,o(__),_)o(_)O,(__)o
      o(_,-o(_ )(),(__(_)oO)_
      .O(__)o,__).(_ )o(_)Oo_)
  .----|   |   |   |   |   |_)0
 /  .--|   |   |   |   |   |,_)
|  /   |   |   |   |   |   |o(_)
|  |   |   |   |   |   |   |_/`)
|  |   |   |   |   |   |   |O_) 
|  |   |   |   |   |   |   |
|  \   |   |   |   |   |   |
 \  '--|   |   |   |   |   |
  '----|   |   |   |   |   |
       |   |   |   |   |   |
  jgs  \   \   \   /   /   /
        `"""""""""""""""""`
 
                    
                        @brucelefebvre