SlideShare a Scribd company logo
1 of 27
Organized by the Community, for the Community.
SINGLE PAGE APPLICATION
WITH REALTIME UPDATES
IN SITECORE
Richard Seal
Organized by the Community, for the Community.
OVERVIEW
• Introductions…
• Who are ATP?
• Why a Single Page Application?
• What were the challenges?
• How we did it?
• RealTime Updates – Scoring & News Articles
• LiveBlog Market Place Module
Organized by the Community, for the Community.
WHO ARETHE ATP
• The Association ofTennis Professionals
– Governing body of men’s professional tennis.
– Player ranking & tournaments
– ATPWorldTour finals – end of year tournament
• Some stats:
– Ave 9-10 Million visits per month
– Ave 30 -40 Million page hits
– 20 content editors, worldwide
SUGCON NORTH AMERICA 2015 3
Organized by the Community, for the Community.
WHY A SINGLE PAGE APPLICATION?
SUGCON NORTH AMERICA 2015 4
Organized by the Community, for the Community.
• Client Driven
• Wanted a “USAToday” feel to the site
• More like an integrated application and not a bunch
of disparate web pages.
• Sports Based
– Users should be less than a click away from live scores at
all times
– 2-3 clicks away from stats too!
• Bandwidth benefits
– User does not have to download the “scaffolding” of the
page every time.
WHY A SINGLE PAGE APPLICATION?
SUGCON NORTH AMERICA 2015 5
Organized by the Community, for the Community.
WHAT CHALLENGES?
• Standard SPA
– Server Side: API Framework to pull data. No presentation
– Client Site: JavaScript application/framework to get the
data and present it.
• Angular, Backbone, Ember etc…
• We could do that in Sitecore… But:
– No page editing
– No personalization
– No caching on renderings
– Have to use ItemWebApi or build full custom Api to get
data.
SUGCON NORTH AMERICA 2015 6
Organized by the Community, for the Community.
CHALLENGES CONT…?
• Other cons:
– Page rendering speed. Complex designs on older
machines, mobile devices == Bad user experience.
– Not great for SEO without a custom solution (at the time
of building)
– Client needed to support older versions of IE that did not
support push state. So needed to be able to fall back to a
“classic” style website in those situations
SUGCON NORTH AMERICA 2015 7
Organized by the Community, for the Community.
HOW WE DID IT!
• Don’t re-invent the wheel.
– Backbone was our choice
• Light weight
• Simple to use
• Great community support
• Render the Html server side
– Standard Sitecore MVC Renderings
– Personalization, Datasources
– Sitecore rendering cache
– Can use Sitecore Field Renderers so the Page Editor still
works
SUGCON NORTH AMERICA 2015 8
Organized by the Community, for the Community.
BACKBONE.JS
SUGCON NORTH AMERICA 2015 9
Http Request Router
ViewDOM
Collection
/Models
Data
Source
Sitecore
Presentation
Organized by the Community, for the Community.
BACKBONE SETUP
• Each page needs 2 views
– Standard, all headers and footers etc…
– Backbone/Ajax, just the content that changes from page
to page
• Setup new Device “Ajax”
– Simple query string
– Empty layout for ajax presentation with a single
placeholder
SUGCON NORTH AMERICA 2015 10
?ajax=true
Organized by the Community, for the Community.
BACKBONE SETUP CONT…
• Simple catch all route in backbone
– Catches all requests
– Can call xDB/Google analytics or other package here
– Loads default Sitecore view and tells it to render
SUGCON NORTH AMERICA 2015 11
Organized by the Community, for the Community.
BACKBONE SETUP CONT…
• Main application view
– Kicks off page transition animations
– Calls render on the Sitecore view
SUGCON NORTH AMERICA 2015 12
Organized by the Community, for the Community.
BACKBONE SETUP CONT…
• SitecoreView
SUGCON NORTH AMERICA 2015 13
• Builds the url from the request and appends ajax=true
• Keeps any existing query string parameters
• Aborts any previous Ajax request
• Kicks off a new Ajax request for the page
• Calls the method to complete page transition animations
Organized by the Community, for the Community.
SIMPLIFYINGTHE PRESENTATION
• Each page requires 2 sets of presentation
– Default Device
– Ajax Device
• Don’t want to force editors to build pages twice
• NewTemplate
– Add to the Device template inheritance:
SUGCON NORTH AMERICA 2015 14
Organized by the Community, for the Community.
SIMPLIFYINGTHE PRESENTATION
• Set the Ajax Device to a Presentation Device.
SUGCON NORTH AMERICA 2015 15
Organized by the Community, for the Community.
SIMPLIFYINGTHE PRESENTATION
• Set the Ajax Device to a Presentation Device.
• New pipeline processor:
– PerformRenderingForSinglePageApplication
SUGCON NORTH AMERICA 2015 16
Organized by the Community, for the Community.SUGCON NORTH AMERICA 2015 17
Organized by the Community, for the Community.
SIGNALR –REALTIME SCORES & NEWS
UPDATES
SUGCON NORTH AMERICA 2015 18
Header/Menu
Scores/
News
Footer
Handled by BackboneView
Organized by the Community, for the Community.
SIGNALR –REALTIME SCORES & NEWS
UPDATES
• SignalR to keep News & Scores updated
• Separate SignalR application
– Scale out / host in the Cloud (Azure)
• Scores update service
– Aggregates scores data with Sitecore data
– Pushes score updates through the SignalR application
• News Publish Pipeline
– Pushes new articles through SignalR based on the last
article published
SUGCON NORTH AMERICA 2015 19
Organized by the Community, for the Community.SUGCON NORTH AMERICA 2015 20
Player,Tournament & Scores Data
Sitecore DB
Live Scores
Update Service
Web Application
SignalR
Application
End User
Historical Scores
Service
Publish Pipeline
Organized by the Community, for the Community.
NEWS PUBLISH PIPELINE
• The latest article published gets stored in an SQL
Table
• On publish, if the item is a news article, we check
the date against the last one published
• If its newer, it is queued for broadcast via the
SignalR application
• Each time an article is broadcast, the last article Id
gets updated in the table.
SUGCON NORTH AMERICA 2015 21
Organized by the Community, for the Community.
NEWS PUBLISH PIPELINE
• On publish:end, the queue is then passed to the
SignalR application to broadcast out to all
subscribers
SUGCON NORTH AMERICA 2015 22
Organized by the Community, for the Community.
SITECORE LIVE BLOG MODULE
• Out of this came the Live Blog module
• The blog consists of a Live Blog data template
– Datasource for the main blog
– Each entry is a Sitecore Item
• Can use as a Datasource if you wanted to “quote” the blog
elsewhere on the site
• A custom SPEAK editor for adding entries and
viewing existing entries
• A new Controller rendering for displaying the Blog
– Options for using require.js or other way of including the
JavaScript, or the rendering will include the files needed.
SUGCON NORTH AMERICA 2015 23
Organized by the Community, for the Community.
SITECORE LIVE BLOG MODULE
• SignalR runs in the Sitecore Application Pool
– Pipelines to get it running:
SUGCON NORTH AMERICA 2015 24
Organized by the Community, for the Community.
SITECORE LIVE BLOG MODULE
• SPEAK Editor
– Slack style commands
– Can easily add new commands by implementing
ILiveBlogCommand
– Commands defined in Sitecore
• ShipsWith
– Markdown: default command.
– Twitter: Embeds and tweet
– More coming!
– Surprise one for Slack members….
SUGCON NORTH AMERICA 2015 25
Organized by the Community, for the Community.
LIVE BLOG
SUGCON NORTH AMERICA 2015 26
Live Blog Editor
HUB
Command Parser
MD Tweet Other
Live Blog Rendering
Sitecore
Organized by the Community, for the Community.SUGCON NORTH AMERICA 2015
SM
27SUGCON NORTH AMERICA 2015
THANKYOUTO OUR SPONSORS!

More Related Content

Similar to Single Page Applications with Real Time Updates - SUGCON

Similar to Single Page Applications with Real Time Updates - SUGCON (20)

BikersPlanet.pptx
BikersPlanet.pptxBikersPlanet.pptx
BikersPlanet.pptx
 
Sitecore Commerce Catalog Management at Scale
Sitecore Commerce Catalog Management at ScaleSitecore Commerce Catalog Management at Scale
Sitecore Commerce Catalog Management at Scale
 
E-Auction
E-AuctionE-Auction
E-Auction
 
Improving and Scaling SCADA Systems: Is WinCC OA Right for Me?
Improving and Scaling SCADA Systems: Is WinCC OA Right for Me?Improving and Scaling SCADA Systems: Is WinCC OA Right for Me?
Improving and Scaling SCADA Systems: Is WinCC OA Right for Me?
 
ARENA-case-study.pdf
ARENA-case-study.pdfARENA-case-study.pdf
ARENA-case-study.pdf
 
Performance and Scalability Art of Isomorphic React Applications
Performance and Scalability Art of Isomorphic React ApplicationsPerformance and Scalability Art of Isomorphic React Applications
Performance and Scalability Art of Isomorphic React Applications
 
Adobe Digital Analytics - SiteCatalyst, Test & Target Workshop
Adobe Digital Analytics - SiteCatalyst, Test & Target WorkshopAdobe Digital Analytics - SiteCatalyst, Test & Target Workshop
Adobe Digital Analytics - SiteCatalyst, Test & Target Workshop
 
Sitecore upgrade best practices
Sitecore upgrade best practicesSitecore upgrade best practices
Sitecore upgrade best practices
 
Web analyticspres -am-long
Web analyticspres -am-longWeb analyticspres -am-long
Web analyticspres -am-long
 
Aditi_Neotys Webinar_FinalCopy
Aditi_Neotys Webinar_FinalCopyAditi_Neotys Webinar_FinalCopy
Aditi_Neotys Webinar_FinalCopy
 
Testing Strategies to Deliver Consistent App Performance
Testing Strategies to Deliver Consistent App Performance Testing Strategies to Deliver Consistent App Performance
Testing Strategies to Deliver Consistent App Performance
 
AngularJS Basics
AngularJS BasicsAngularJS Basics
AngularJS Basics
 
Making ultra fast ultra scalable solutions with sitecore 8
Making ultra fast ultra scalable solutions with sitecore 8Making ultra fast ultra scalable solutions with sitecore 8
Making ultra fast ultra scalable solutions with sitecore 8
 
AspenTech Act! v18 Preview: Emarketing - Cloud - Connectivity - Compatibility
AspenTech Act! v18 Preview: Emarketing - Cloud - Connectivity - CompatibilityAspenTech Act! v18 Preview: Emarketing - Cloud - Connectivity - Compatibility
AspenTech Act! v18 Preview: Emarketing - Cloud - Connectivity - Compatibility
 
Ionic vancouver 201604
Ionic vancouver 201604Ionic vancouver 201604
Ionic vancouver 201604
 
What is the Siemens Open Library, and How it Decreased Development Time for E...
What is the Siemens Open Library, and How it Decreased Development Time for E...What is the Siemens Open Library, and How it Decreased Development Time for E...
What is the Siemens Open Library, and How it Decreased Development Time for E...
 
Blazing fast web experience at your fingertips with Experience Edge, JSS for ...
Blazing fast web experience at your fingertips with Experience Edge, JSS for ...Blazing fast web experience at your fingertips with Experience Edge, JSS for ...
Blazing fast web experience at your fingertips with Experience Edge, JSS for ...
 
Siemens oil and gas 2016 WinCC OA
Siemens oil and gas 2016   WinCC OASiemens oil and gas 2016   WinCC OA
Siemens oil and gas 2016 WinCC OA
 
Professional Services Insights into Improving Sitecore XP
Professional Services Insights into Improving Sitecore XPProfessional Services Insights into Improving Sitecore XP
Professional Services Insights into Improving Sitecore XP
 
Oracle JavaScript Extension Toolkit Web Components Bring Agility to App Devel...
Oracle JavaScript Extension Toolkit Web Components Bring Agility to App Devel...Oracle JavaScript Extension Toolkit Web Components Bring Agility to App Devel...
Oracle JavaScript Extension Toolkit Web Components Bring Agility to App Devel...
 

Recently uploaded

Recently uploaded (20)

Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 

Single Page Applications with Real Time Updates - SUGCON

  • 1. Organized by the Community, for the Community. SINGLE PAGE APPLICATION WITH REALTIME UPDATES IN SITECORE Richard Seal
  • 2. Organized by the Community, for the Community. OVERVIEW • Introductions… • Who are ATP? • Why a Single Page Application? • What were the challenges? • How we did it? • RealTime Updates – Scoring & News Articles • LiveBlog Market Place Module
  • 3. Organized by the Community, for the Community. WHO ARETHE ATP • The Association ofTennis Professionals – Governing body of men’s professional tennis. – Player ranking & tournaments – ATPWorldTour finals – end of year tournament • Some stats: – Ave 9-10 Million visits per month – Ave 30 -40 Million page hits – 20 content editors, worldwide SUGCON NORTH AMERICA 2015 3
  • 4. Organized by the Community, for the Community. WHY A SINGLE PAGE APPLICATION? SUGCON NORTH AMERICA 2015 4
  • 5. Organized by the Community, for the Community. • Client Driven • Wanted a “USAToday” feel to the site • More like an integrated application and not a bunch of disparate web pages. • Sports Based – Users should be less than a click away from live scores at all times – 2-3 clicks away from stats too! • Bandwidth benefits – User does not have to download the “scaffolding” of the page every time. WHY A SINGLE PAGE APPLICATION? SUGCON NORTH AMERICA 2015 5
  • 6. Organized by the Community, for the Community. WHAT CHALLENGES? • Standard SPA – Server Side: API Framework to pull data. No presentation – Client Site: JavaScript application/framework to get the data and present it. • Angular, Backbone, Ember etc… • We could do that in Sitecore… But: – No page editing – No personalization – No caching on renderings – Have to use ItemWebApi or build full custom Api to get data. SUGCON NORTH AMERICA 2015 6
  • 7. Organized by the Community, for the Community. CHALLENGES CONT…? • Other cons: – Page rendering speed. Complex designs on older machines, mobile devices == Bad user experience. – Not great for SEO without a custom solution (at the time of building) – Client needed to support older versions of IE that did not support push state. So needed to be able to fall back to a “classic” style website in those situations SUGCON NORTH AMERICA 2015 7
  • 8. Organized by the Community, for the Community. HOW WE DID IT! • Don’t re-invent the wheel. – Backbone was our choice • Light weight • Simple to use • Great community support • Render the Html server side – Standard Sitecore MVC Renderings – Personalization, Datasources – Sitecore rendering cache – Can use Sitecore Field Renderers so the Page Editor still works SUGCON NORTH AMERICA 2015 8
  • 9. Organized by the Community, for the Community. BACKBONE.JS SUGCON NORTH AMERICA 2015 9 Http Request Router ViewDOM Collection /Models Data Source Sitecore Presentation
  • 10. Organized by the Community, for the Community. BACKBONE SETUP • Each page needs 2 views – Standard, all headers and footers etc… – Backbone/Ajax, just the content that changes from page to page • Setup new Device “Ajax” – Simple query string – Empty layout for ajax presentation with a single placeholder SUGCON NORTH AMERICA 2015 10 ?ajax=true
  • 11. Organized by the Community, for the Community. BACKBONE SETUP CONT… • Simple catch all route in backbone – Catches all requests – Can call xDB/Google analytics or other package here – Loads default Sitecore view and tells it to render SUGCON NORTH AMERICA 2015 11
  • 12. Organized by the Community, for the Community. BACKBONE SETUP CONT… • Main application view – Kicks off page transition animations – Calls render on the Sitecore view SUGCON NORTH AMERICA 2015 12
  • 13. Organized by the Community, for the Community. BACKBONE SETUP CONT… • SitecoreView SUGCON NORTH AMERICA 2015 13 • Builds the url from the request and appends ajax=true • Keeps any existing query string parameters • Aborts any previous Ajax request • Kicks off a new Ajax request for the page • Calls the method to complete page transition animations
  • 14. Organized by the Community, for the Community. SIMPLIFYINGTHE PRESENTATION • Each page requires 2 sets of presentation – Default Device – Ajax Device • Don’t want to force editors to build pages twice • NewTemplate – Add to the Device template inheritance: SUGCON NORTH AMERICA 2015 14
  • 15. Organized by the Community, for the Community. SIMPLIFYINGTHE PRESENTATION • Set the Ajax Device to a Presentation Device. SUGCON NORTH AMERICA 2015 15
  • 16. Organized by the Community, for the Community. SIMPLIFYINGTHE PRESENTATION • Set the Ajax Device to a Presentation Device. • New pipeline processor: – PerformRenderingForSinglePageApplication SUGCON NORTH AMERICA 2015 16
  • 17. Organized by the Community, for the Community.SUGCON NORTH AMERICA 2015 17
  • 18. Organized by the Community, for the Community. SIGNALR –REALTIME SCORES & NEWS UPDATES SUGCON NORTH AMERICA 2015 18 Header/Menu Scores/ News Footer Handled by BackboneView
  • 19. Organized by the Community, for the Community. SIGNALR –REALTIME SCORES & NEWS UPDATES • SignalR to keep News & Scores updated • Separate SignalR application – Scale out / host in the Cloud (Azure) • Scores update service – Aggregates scores data with Sitecore data – Pushes score updates through the SignalR application • News Publish Pipeline – Pushes new articles through SignalR based on the last article published SUGCON NORTH AMERICA 2015 19
  • 20. Organized by the Community, for the Community.SUGCON NORTH AMERICA 2015 20 Player,Tournament & Scores Data Sitecore DB Live Scores Update Service Web Application SignalR Application End User Historical Scores Service Publish Pipeline
  • 21. Organized by the Community, for the Community. NEWS PUBLISH PIPELINE • The latest article published gets stored in an SQL Table • On publish, if the item is a news article, we check the date against the last one published • If its newer, it is queued for broadcast via the SignalR application • Each time an article is broadcast, the last article Id gets updated in the table. SUGCON NORTH AMERICA 2015 21
  • 22. Organized by the Community, for the Community. NEWS PUBLISH PIPELINE • On publish:end, the queue is then passed to the SignalR application to broadcast out to all subscribers SUGCON NORTH AMERICA 2015 22
  • 23. Organized by the Community, for the Community. SITECORE LIVE BLOG MODULE • Out of this came the Live Blog module • The blog consists of a Live Blog data template – Datasource for the main blog – Each entry is a Sitecore Item • Can use as a Datasource if you wanted to “quote” the blog elsewhere on the site • A custom SPEAK editor for adding entries and viewing existing entries • A new Controller rendering for displaying the Blog – Options for using require.js or other way of including the JavaScript, or the rendering will include the files needed. SUGCON NORTH AMERICA 2015 23
  • 24. Organized by the Community, for the Community. SITECORE LIVE BLOG MODULE • SignalR runs in the Sitecore Application Pool – Pipelines to get it running: SUGCON NORTH AMERICA 2015 24
  • 25. Organized by the Community, for the Community. SITECORE LIVE BLOG MODULE • SPEAK Editor – Slack style commands – Can easily add new commands by implementing ILiveBlogCommand – Commands defined in Sitecore • ShipsWith – Markdown: default command. – Twitter: Embeds and tweet – More coming! – Surprise one for Slack members…. SUGCON NORTH AMERICA 2015 25
  • 26. Organized by the Community, for the Community. LIVE BLOG SUGCON NORTH AMERICA 2015 26 Live Blog Editor HUB Command Parser MD Tweet Other Live Blog Rendering Sitecore
  • 27. Organized by the Community, for the Community.SUGCON NORTH AMERICA 2015 SM 27SUGCON NORTH AMERICA 2015 THANKYOUTO OUR SPONSORS!

Editor's Notes

  1. Introduce Me Brief history What I do at Lightmaker Who Lightmaker are An international digital agency Nearly 20 years experience Offices Orlando Denver Vancouver UK Give overview of Presentation:
  2. Show the code – run through. Transition through some pages.