SlideShare a Scribd company logo
1 of 17
AngularJSMeetup

   Intilery.com
About Me
• Founder and CEO of Intilery.com
• Previously the CIO of The Hut group
• And before that, 10 years as chief architect of
  Moneysupermarket.com
Intilery.com – App Stack
5 parts:
• UI/Web app dashboard (angular)
• UI/Web app email designer (angular)
• App Backend
• A data collector/segmenter/analytics
  &personalisation engine
• An email Sender (think mail chimp)
Intilery.com – Tech Stack
• Web apps – Angular, jQuery, Require (lots of
  libs) talks to Java using JSON
• App backend – Java, Jersey, Spring IOC, Guava,
  Mongo, MySQL
• Collector – Java event pipeline, twitter storm
  (like), rules engine, elastic search, MySQL
• Emailer – Java, Spring Quartz, StringTemplate
• Env - AWS
Intilery.com
• Demo
RequireJS + AngularJS
   Maintainable JavaScript Application = oxymoron?

Apply the same principles of good software engineering
  to angularjs apps.

JavaScript is very flexible, very easy to write
  undisciplined code (and architecture) – be strict!
Principles
Each file should contain one (and one only) component –
  directive, filter, service, controller, view etc.

Split out components into smaller components (each own file).

Spilt out the app into smaller apps – We use our API’s to
   integrate app.

Use RequireJS to manage the dependencies and loading of libs
  and your components
RequireJS Setup
All code at
  https://github.com/cymantic/angular-require-
  testacular
Directory Structure
index.html (the require script tag goes here)
--libs
     --angular
     --jquery
     --require
       require-jquery.js (jQuery loaded here)
     --domReady (needed in some browsers when scripts loaded before dom is ready)
--scripts (your components)
     --controller
     --directives
     --filters
     --resources
     --services
app.js (angular module of app defined here)
bootstrap.js (manual bootstrapping of the app)
main.js (require configuration and route configuration)
--styles
--templates
--views
<script data-main="./scripts/main.js" src="libs/require/require-jquery.js"></script>
(we are not yet optimizing the files into a single file – todo before beta launch)
main.js
app.js – first non-library to load, we define our module here




bootstrap.js – manually start up the application
Configuration
Controller
EditLinkController
                       TextService
(modal)
                        MergeTagSvc
                          DataModelRsrc


                        AlignmentMenuSvc

                        SelectionMgrSvc

                        PasteMgrSvc

                        FormattingMgrSvc
Text Inspector Controller
Text Content Svc – bound to the content editable element we are editing
Merge Tag Service

More Related Content

What's hot

RoR 101: Session 6
RoR 101: Session 6RoR 101: Session 6
RoR 101: Session 6Rory Gianni
 
AngularJs Basic Concept
AngularJs Basic ConceptAngularJs Basic Concept
AngularJs Basic ConceptHari Haran
 
RoR 101: Session 6
RoR 101: Session 6RoR 101: Session 6
RoR 101: Session 6Rory Gianni
 
Pros and Cons of developing a Thick Clientside App
Pros and Cons of developing a Thick Clientside AppPros and Cons of developing a Thick Clientside App
Pros and Cons of developing a Thick Clientside AppRavi Teja
 
Going Serverless with Iron.io
Going Serverless with Iron.ioGoing Serverless with Iron.io
Going Serverless with Iron.ioIsak Rickyanto
 
Intro to emberjs
Intro to emberjsIntro to emberjs
Intro to emberjsMandy Pao
 
RoR 101: Session 2
RoR 101: Session 2RoR 101: Session 2
RoR 101: Session 2Rory Gianni
 
SharePoint Fest Seattle - SharePoint Framework, Angular & Azure Functions
SharePoint Fest Seattle - SharePoint Framework, Angular & Azure FunctionsSharePoint Fest Seattle - SharePoint Framework, Angular & Azure Functions
SharePoint Fest Seattle - SharePoint Framework, Angular & Azure FunctionsSébastien Levert
 
Angular JS, steal the idea
Angular JS, steal the ideaAngular JS, steal the idea
Angular JS, steal the ideaScott Lee
 
Angular patterns
Angular patternsAngular patterns
Angular patternsPremkumar M
 
RoR 101: Session 5
RoR 101: Session 5RoR 101: Session 5
RoR 101: Session 5Rory Gianni
 
RoR 101: Session 3
RoR 101: Session 3RoR 101: Session 3
RoR 101: Session 3Rory Gianni
 
Next.js (almost) in production
Next.js (almost) in productionNext.js (almost) in production
Next.js (almost) in productionJasdeep Lalli
 
Securing SQL Server with TLS 1.2
Securing SQL Server with TLS 1.2Securing SQL Server with TLS 1.2
Securing SQL Server with TLS 1.2Amit Banerjee
 
Application Server-less Web Applications - Serverless Toronto Meetup
Application Server-less Web Applications - Serverless Toronto Meetup Application Server-less Web Applications - Serverless Toronto Meetup
Application Server-less Web Applications - Serverless Toronto Meetup Daniel Zivkovic
 

What's hot (20)

RoR 101: Session 6
RoR 101: Session 6RoR 101: Session 6
RoR 101: Session 6
 
AngularJS is awesome
AngularJS is awesomeAngularJS is awesome
AngularJS is awesome
 
AngularJs Basic Concept
AngularJs Basic ConceptAngularJs Basic Concept
AngularJs Basic Concept
 
RoR 101: Session 6
RoR 101: Session 6RoR 101: Session 6
RoR 101: Session 6
 
Angular 4
Angular 4Angular 4
Angular 4
 
Pros and Cons of developing a Thick Clientside App
Pros and Cons of developing a Thick Clientside AppPros and Cons of developing a Thick Clientside App
Pros and Cons of developing a Thick Clientside App
 
Going Serverless with Iron.io
Going Serverless with Iron.ioGoing Serverless with Iron.io
Going Serverless with Iron.io
 
Intro to emberjs
Intro to emberjsIntro to emberjs
Intro to emberjs
 
RoR 101: Session 2
RoR 101: Session 2RoR 101: Session 2
RoR 101: Session 2
 
SharePoint Fest Seattle - SharePoint Framework, Angular & Azure Functions
SharePoint Fest Seattle - SharePoint Framework, Angular & Azure FunctionsSharePoint Fest Seattle - SharePoint Framework, Angular & Azure Functions
SharePoint Fest Seattle - SharePoint Framework, Angular & Azure Functions
 
Angular JS, steal the idea
Angular JS, steal the ideaAngular JS, steal the idea
Angular JS, steal the idea
 
Angular js
Angular jsAngular js
Angular js
 
Angular patterns
Angular patternsAngular patterns
Angular patterns
 
Visualforce
VisualforceVisualforce
Visualforce
 
The A1 "AngularJS 1 Kick Start"
The A1 "AngularJS 1 Kick Start"The A1 "AngularJS 1 Kick Start"
The A1 "AngularJS 1 Kick Start"
 
RoR 101: Session 5
RoR 101: Session 5RoR 101: Session 5
RoR 101: Session 5
 
RoR 101: Session 3
RoR 101: Session 3RoR 101: Session 3
RoR 101: Session 3
 
Next.js (almost) in production
Next.js (almost) in productionNext.js (almost) in production
Next.js (almost) in production
 
Securing SQL Server with TLS 1.2
Securing SQL Server with TLS 1.2Securing SQL Server with TLS 1.2
Securing SQL Server with TLS 1.2
 
Application Server-less Web Applications - Serverless Toronto Meetup
Application Server-less Web Applications - Serverless Toronto Meetup Application Server-less Web Applications - Serverless Toronto Meetup
Application Server-less Web Applications - Serverless Toronto Meetup
 

Viewers also liked

Talent 2020 Webinar Will Your High Potentials Stick Around
Talent 2020 Webinar Will Your High Potentials Stick AroundTalent 2020 Webinar Will Your High Potentials Stick Around
Talent 2020 Webinar Will Your High Potentials Stick AroundTalentPlus Inc
 
Nectarin Digital Digest №5
Nectarin Digital Digest №5Nectarin Digital Digest №5
Nectarin Digital Digest №5Nectarin
 
Как маркетплейсы произведут революцию на рынке электронного ОСАГО
Как маркетплейсы произведут революцию на рынке электронного ОСАГОКак маркетплейсы произведут революцию на рынке электронного ОСАГО
Как маркетплейсы произведут революцию на рынке электронного ОСАГОInstitute of development of the Internet
 
Newsbrands and finance
Newsbrands and financeNewsbrands and finance
Newsbrands and financeNewsworks
 
Optimising your rtb infrastructure sammy austin - follow up
Optimising your rtb infrastructure   sammy austin - follow upOptimising your rtb infrastructure   sammy austin - follow up
Optimising your rtb infrastructure sammy austin - follow upad:tech London
 
Reduce, Reuse, Recycle: How Moneysupermarket.com Created APIs Without Startin...
Reduce, Reuse, Recycle: How Moneysupermarket.com Created APIs Without Startin...Reduce, Reuse, Recycle: How Moneysupermarket.com Created APIs Without Startin...
Reduce, Reuse, Recycle: How Moneysupermarket.com Created APIs Without Startin...CA API Management
 
MoneySuperMarket.com: Case Study
MoneySuperMarket.com: Case StudyMoneySuperMarket.com: Case Study
MoneySuperMarket.com: Case StudyNewsworks
 
MoneySupermarket.com: Customer Case Study - Layer 7 API Management Workshop L...
MoneySupermarket.com: Customer Case Study - Layer 7 API Management Workshop L...MoneySupermarket.com: Customer Case Study - Layer 7 API Management Workshop L...
MoneySupermarket.com: Customer Case Study - Layer 7 API Management Workshop L...CA API Management
 
Gobblin @ NerdWallet (Nov 2015)
Gobblin @ NerdWallet (Nov 2015)Gobblin @ NerdWallet (Nov 2015)
Gobblin @ NerdWallet (Nov 2015)NerdWalletHQ
 
Invasion of the Aggregators
Invasion of the AggregatorsInvasion of the Aggregators
Invasion of the AggregatorsMike Teasdale
 
Figaro Digital Marketing Conference: Content really is still king - Joe Griff...
Figaro Digital Marketing Conference: Content really is still king - Joe Griff...Figaro Digital Marketing Conference: Content really is still king - Joe Griff...
Figaro Digital Marketing Conference: Content really is still king - Joe Griff...Branded3
 
Kanban at MoneySupermarket.com
Kanban at MoneySupermarket.comKanban at MoneySupermarket.com
Kanban at MoneySupermarket.comThoughtworks
 
Why the Financial Services need simplicity
Why the Financial Services need simplicityWhy the Financial Services need simplicity
Why the Financial Services need simplicitySiegel+Gale
 

Viewers also liked (14)

Talent 2020 Webinar Will Your High Potentials Stick Around
Talent 2020 Webinar Will Your High Potentials Stick AroundTalent 2020 Webinar Will Your High Potentials Stick Around
Talent 2020 Webinar Will Your High Potentials Stick Around
 
Nectarin Digital Digest №5
Nectarin Digital Digest №5Nectarin Digital Digest №5
Nectarin Digital Digest №5
 
Как маркетплейсы произведут революцию на рынке электронного ОСАГО
Как маркетплейсы произведут революцию на рынке электронного ОСАГОКак маркетплейсы произведут революцию на рынке электронного ОСАГО
Как маркетплейсы произведут революцию на рынке электронного ОСАГО
 
Newsbrands and finance
Newsbrands and financeNewsbrands and finance
Newsbrands and finance
 
Optimising your rtb infrastructure sammy austin - follow up
Optimising your rtb infrastructure   sammy austin - follow upOptimising your rtb infrastructure   sammy austin - follow up
Optimising your rtb infrastructure sammy austin - follow up
 
Reduce, Reuse, Recycle: How Moneysupermarket.com Created APIs Without Startin...
Reduce, Reuse, Recycle: How Moneysupermarket.com Created APIs Without Startin...Reduce, Reuse, Recycle: How Moneysupermarket.com Created APIs Without Startin...
Reduce, Reuse, Recycle: How Moneysupermarket.com Created APIs Without Startin...
 
MoneySuperMarket.com: Case Study
MoneySuperMarket.com: Case StudyMoneySuperMarket.com: Case Study
MoneySuperMarket.com: Case Study
 
MoneySupermarket.com: Customer Case Study - Layer 7 API Management Workshop L...
MoneySupermarket.com: Customer Case Study - Layer 7 API Management Workshop L...MoneySupermarket.com: Customer Case Study - Layer 7 API Management Workshop L...
MoneySupermarket.com: Customer Case Study - Layer 7 API Management Workshop L...
 
Pankov
PankovPankov
Pankov
 
Gobblin @ NerdWallet (Nov 2015)
Gobblin @ NerdWallet (Nov 2015)Gobblin @ NerdWallet (Nov 2015)
Gobblin @ NerdWallet (Nov 2015)
 
Invasion of the Aggregators
Invasion of the AggregatorsInvasion of the Aggregators
Invasion of the Aggregators
 
Figaro Digital Marketing Conference: Content really is still king - Joe Griff...
Figaro Digital Marketing Conference: Content really is still king - Joe Griff...Figaro Digital Marketing Conference: Content really is still king - Joe Griff...
Figaro Digital Marketing Conference: Content really is still king - Joe Griff...
 
Kanban at MoneySupermarket.com
Kanban at MoneySupermarket.comKanban at MoneySupermarket.com
Kanban at MoneySupermarket.com
 
Why the Financial Services need simplicity
Why the Financial Services need simplicityWhy the Financial Services need simplicity
Why the Financial Services need simplicity
 

Similar to Angular meetup

Intoduction to Angularjs
Intoduction to AngularjsIntoduction to Angularjs
Intoduction to AngularjsGaurav Agrawal
 
The future of web development write once, run everywhere with angular js an...
The future of web development   write once, run everywhere with angular js an...The future of web development   write once, run everywhere with angular js an...
The future of web development write once, run everywhere with angular js an...Mark Leusink
 
The future of web development write once, run everywhere with angular.js and ...
The future of web development write once, run everywhere with angular.js and ...The future of web development write once, run everywhere with angular.js and ...
The future of web development write once, run everywhere with angular.js and ...Mark Roden
 
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJS
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJSAngularJS training - Day 1 - Basics: Why, What and basic features of AngularJS
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJSmurtazahaveliwala
 
Understanding angular js
Understanding angular jsUnderstanding angular js
Understanding angular jsAayush Shrestha
 
What is ASP.NET MVC
What is ASP.NET MVCWhat is ASP.NET MVC
What is ASP.NET MVCBrad Oyler
 
Дмитрий Тежельников «Разработка вэб-решений с использованием Asp.NET.Core и ...
Дмитрий Тежельников  «Разработка вэб-решений с использованием Asp.NET.Core и ...Дмитрий Тежельников  «Разработка вэб-решений с использованием Asp.NET.Core и ...
Дмитрий Тежельников «Разработка вэб-решений с использованием Asp.NET.Core и ...MskDotNet Community
 
Beginning MEAN Stack
Beginning MEAN StackBeginning MEAN Stack
Beginning MEAN StackRob Davarnia
 
Angular 6 Training with project in hyderabad india
Angular 6 Training with project in hyderabad indiaAngular 6 Training with project in hyderabad india
Angular 6 Training with project in hyderabad indiaphp2ranjan
 
ASP .Net Core SPA Templates
ASP .Net Core SPA TemplatesASP .Net Core SPA Templates
ASP .Net Core SPA TemplatesEamonn Boyle
 
MongoDB Days Silicon Valley: Building Applications with the MEAN Stack
MongoDB Days Silicon Valley: Building Applications with the MEAN StackMongoDB Days Silicon Valley: Building Applications with the MEAN Stack
MongoDB Days Silicon Valley: Building Applications with the MEAN StackMongoDB
 
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...MongoDB
 
.NET,ASP .NET, Angular Js,LinQ
.NET,ASP .NET, Angular Js,LinQ.NET,ASP .NET, Angular Js,LinQ
.NET,ASP .NET, Angular Js,LinQAvijit Shaw
 

Similar to Angular meetup (20)

Intoduction to Angularjs
Intoduction to AngularjsIntoduction to Angularjs
Intoduction to Angularjs
 
Angular js
Angular jsAngular js
Angular js
 
JavaScript MVC Frameworks: Backbone, Ember and Angular JS
JavaScript MVC Frameworks: Backbone, Ember and Angular JSJavaScript MVC Frameworks: Backbone, Ember and Angular JS
JavaScript MVC Frameworks: Backbone, Ember and Angular JS
 
Angular js firebase-preso
Angular js firebase-presoAngular js firebase-preso
Angular js firebase-preso
 
Spring mvc
Spring mvcSpring mvc
Spring mvc
 
Mean PPT
Mean PPTMean PPT
Mean PPT
 
The future of web development write once, run everywhere with angular js an...
The future of web development   write once, run everywhere with angular js an...The future of web development   write once, run everywhere with angular js an...
The future of web development write once, run everywhere with angular js an...
 
The future of web development write once, run everywhere with angular.js and ...
The future of web development write once, run everywhere with angular.js and ...The future of web development write once, run everywhere with angular.js and ...
The future of web development write once, run everywhere with angular.js and ...
 
Angular js workshop
Angular js workshopAngular js workshop
Angular js workshop
 
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJS
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJSAngularJS training - Day 1 - Basics: Why, What and basic features of AngularJS
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJS
 
AngularJS
AngularJSAngularJS
AngularJS
 
Understanding angular js
Understanding angular jsUnderstanding angular js
Understanding angular js
 
What is ASP.NET MVC
What is ASP.NET MVCWhat is ASP.NET MVC
What is ASP.NET MVC
 
Дмитрий Тежельников «Разработка вэб-решений с использованием Asp.NET.Core и ...
Дмитрий Тежельников  «Разработка вэб-решений с использованием Asp.NET.Core и ...Дмитрий Тежельников  «Разработка вэб-решений с использованием Asp.NET.Core и ...
Дмитрий Тежельников «Разработка вэб-решений с использованием Asp.NET.Core и ...
 
Beginning MEAN Stack
Beginning MEAN StackBeginning MEAN Stack
Beginning MEAN Stack
 
Angular 6 Training with project in hyderabad india
Angular 6 Training with project in hyderabad indiaAngular 6 Training with project in hyderabad india
Angular 6 Training with project in hyderabad india
 
ASP .Net Core SPA Templates
ASP .Net Core SPA TemplatesASP .Net Core SPA Templates
ASP .Net Core SPA Templates
 
MongoDB Days Silicon Valley: Building Applications with the MEAN Stack
MongoDB Days Silicon Valley: Building Applications with the MEAN StackMongoDB Days Silicon Valley: Building Applications with the MEAN Stack
MongoDB Days Silicon Valley: Building Applications with the MEAN Stack
 
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
 
.NET,ASP .NET, Angular Js,LinQ
.NET,ASP .NET, Angular Js,LinQ.NET,ASP .NET, Angular Js,LinQ
.NET,ASP .NET, Angular Js,LinQ
 

Angular meetup

  • 1. AngularJSMeetup Intilery.com
  • 2. About Me • Founder and CEO of Intilery.com • Previously the CIO of The Hut group • And before that, 10 years as chief architect of Moneysupermarket.com
  • 3. Intilery.com – App Stack 5 parts: • UI/Web app dashboard (angular) • UI/Web app email designer (angular) • App Backend • A data collector/segmenter/analytics &personalisation engine • An email Sender (think mail chimp)
  • 4. Intilery.com – Tech Stack • Web apps – Angular, jQuery, Require (lots of libs) talks to Java using JSON • App backend – Java, Jersey, Spring IOC, Guava, Mongo, MySQL • Collector – Java event pipeline, twitter storm (like), rules engine, elastic search, MySQL • Emailer – Java, Spring Quartz, StringTemplate • Env - AWS
  • 6. RequireJS + AngularJS Maintainable JavaScript Application = oxymoron? Apply the same principles of good software engineering to angularjs apps. JavaScript is very flexible, very easy to write undisciplined code (and architecture) – be strict!
  • 7. Principles Each file should contain one (and one only) component – directive, filter, service, controller, view etc. Split out components into smaller components (each own file). Spilt out the app into smaller apps – We use our API’s to integrate app. Use RequireJS to manage the dependencies and loading of libs and your components
  • 8. RequireJS Setup All code at https://github.com/cymantic/angular-require- testacular
  • 9. Directory Structure index.html (the require script tag goes here) --libs --angular --jquery --require require-jquery.js (jQuery loaded here) --domReady (needed in some browsers when scripts loaded before dom is ready) --scripts (your components) --controller --directives --filters --resources --services app.js (angular module of app defined here) bootstrap.js (manual bootstrapping of the app) main.js (require configuration and route configuration) --styles --templates --views
  • 10. <script data-main="./scripts/main.js" src="libs/require/require-jquery.js"></script> (we are not yet optimizing the files into a single file – todo before beta launch) main.js
  • 11. app.js – first non-library to load, we define our module here bootstrap.js – manually start up the application
  • 13.
  • 14. Controller EditLinkController TextService (modal) MergeTagSvc DataModelRsrc AlignmentMenuSvc SelectionMgrSvc PasteMgrSvc FormattingMgrSvc
  • 16. Text Content Svc – bound to the content editable element we are editing