SlideShare une entreprise Scribd logo
1  sur  32
Télécharger pour lire hors ligne
DEVPIXEL
O F F L I N E - F I R S T A P P S 

W I T H 

W E B C O M P O N E N T S
A M A H D Y A B D E L A Z I Z
W W W . A M A H D Y . N E T
# 1 J A V A U I F R A M E W O R K
1. 100% Java
2. Awesome UX
3. Big set of Components + Add-ons
4. Used by 40% of fortune 500 companies
5. And much more…
Vaadin
Technology
‘ C L O U D ’ I S T H E D E F A U L T
‘ M O B I L E ’ I S TA K I N G O V E R
Technology
Technology
Technology
Content Producer
Technology
Content Producer
Technology
USER
Mobile-First
Practical Test
1. Mobile-first design
2. Touch-first design
3. Coffee-first design
Mobile-First
T O U C H - F I R S T D E S I G N
L O W - R E S O U R C E S D E S I G N
O F F L I N E - F I R S T D E S I G N
M U L T I - O R I E N TAT I O N D E S I G N
Mobile-First
T O U C H - F I R S T D E S I G N
L O W - R E S O U R C E S D E S I G N
O F F L I N E - F I R S T D E S I G N
M U L T I - O R I E N TAT I O N D E S I G N
O F F L I N E - F I R S T I S 

T H E O N L Y W A Y T O
A C H I E V E A T R U E 1 0 0 %
A L W A Y S - O N U S E R
E X P E R I E N C E . *
* A S S U M I N G T H E D E V I C E I S
R E L I A B L E
Bringing Component-based Software Engineering to the Web
Templates
<template id=“my-template"> 

<style> 

...

</style> 

<div> 

<h1>Web Components</h1> 

<img src="/img/logo.svg"> 

</div> 

</template>





HTML Imports
<link rel="import" href="my-el.html">

Custom Elements
<my-new-element></my-new-element>
S H A D O W D O M
Before Shadow DOM
<div id="slides-to-show"> 

<div>1</div> 

<div>2</div> 

<div>3</div> 

<div>4</div> 

</div> 



<div class="data slick-initialized slick-slider" data-slick="{"slidesToShow": 4, "slidesToScroll": 4}">
<button class="slick-prev slick-arrow" role="button" aria-label="Previous" data-role="none" type="button"
style="display: block;">Previous</button>
<div class="slick-list draggable" aria-live="polite">
<div class="slick-track" style="opacity: 1; width: 1960px; transform: translate3d(-560px, 0px, 0px);"
role="listbox">
<div class="slick-slide slick-cloned" data-slick-index="-4" aria-hidden="true" style="width: 140px;" tabindex="-1">
<div class="slick-slide slick-cloned" data-slick-index="-3" aria-hidden="true" style="width: 140px;" tabindex="-1">
<div class="slick-slide slick-cloned" data-slick-index="-2" aria-hidden="true" style="width: 140px;" tabindex="-1">
<div class="slick-slide slick-cloned" data-slick-index="-1" aria-hidden="true" style="width: 140px;" tabindex="-1">
<div class="slick-slide slick-current slick-active" data-slick-index="0" aria-hidden="false" style="width: 140px;"
tabindex="-1" role="option" aria-describedby="slick-slide30">
<h3>1</h3>
</div>
<div class="slick-slide slick-active" data-slick-index="1" aria-hidden="false" style="width: 140px;" tabindex="-1"
role="option" aria-describedby="slick-slide31">
<div class="slick-slide slick-active" data-slick-index="2" aria-hidden="false" style="width: 140px;" tabindex="-1"
role="option" aria-describedby="slick-slide32">
<div class="slick-slide slick-active" data-slick-index="3" aria-hidden="false" style="width: 140px;" tabindex="-1"
role="option" aria-describedby="slick-slide33">
<div class="slick-slide" data-slick-index="4" aria-hidden="true" style="width: 140px;" tabindex="-1" role="option"
aria-describedby="slick-slide34">
<div class="slick-slide" data-slick-index="5" aria-hidden="true" style="width: 140px;" tabindex="-1" role="option"
aria-describedby="slick-slide35">
<div class="slick-slide slick-cloned" data-slick-index="6" aria-hidden="true" style="width: 140px;" tabindex="-1">
<div class="slick-slide slick-cloned" data-slick-index="7" aria-hidden="true" style="width: 140px;" tabindex="-1">
<div class="slick-slide slick-cloned" data-slick-index="8" aria-hidden="true" style="width: 140px;" tabindex="-1">
<div class="slick-slide slick-cloned" data-slick-index="9" aria-hidden="true" style="width: 140px;" tabindex="-1">
</div>
</div>
<button class="slick-next slick-arrow" role="button" aria-label="Next" data-role="none" type="button"
style="display: block;">Next</button>
</div>
1 2 3 4
With Shadow DOM
1 2 3 4 1 2 3 4
<div id="slides-to-show"> 

<div>1</div> 

<div>2</div> 

<div>3</div> 

<div>4</div> 

</div> 



<div id="slides-to-show"> 

<div>1</div> 

<div>2</div> 

<div>3</div> 

<div>4</div> 

</div> 



• Encapsulation
• Reusability
Benefits of using Web Components
Browser Support
Chrome Opera Firefox Safari IE/Edge
~
c g ~ ~
~
* As of December 2016
Web Components Polyfill
IE10 IE11+ Chrome* Firefox* Safari 7+*
Chrome
Android*
Mobile
Safari*
Custom Elements ~
HTML Imports ~
Shadow DOM
Templates
•Angular
•Polymer
•React
•Framework.JS
Solution
C A S H I N G
F I R E B A S E
O F F L I N E S T O R A G E
D ATA R E P L I C AT I O N
Challenges
I N I T I A L L O A D T I M E
S E C U R I T Y O F S T O R E D D ATA
R A C E C O N D I T I O N
D E M O A P P
https://github.com/amahdy/offline-first-app
<Links> T H A N K YO U !
- B U D D H A

Contenu connexe

En vedette

9 Budget-Friendly At-Home Date Ideas
9 Budget-Friendly At-Home Date Ideas9 Budget-Friendly At-Home Date Ideas
9 Budget-Friendly At-Home Date IdeasKatie Wells
 
여성흥분제『 http://x5.ana.kr 』 톡 w2015 ♡ 여성흥분제판매,여성흥분제가격,여성흥분제판매,여성흥분제판매사이트,여성흥분제...
여성흥분제『 http://x5.ana.kr  』 톡 w2015 ♡ 여성흥분제판매,여성흥분제가격,여성흥분제판매,여성흥분제판매사이트,여성흥분제...여성흥분제『 http://x5.ana.kr  』 톡 w2015 ♡ 여성흥분제판매,여성흥분제가격,여성흥분제판매,여성흥분제판매사이트,여성흥분제...
여성흥분제『 http://x5.ana.kr 』 톡 w2015 ♡ 여성흥분제판매,여성흥분제가격,여성흥분제판매,여성흥분제판매사이트,여성흥분제...무우 단
 
Гідроелектростанції в Україні
Гідроелектростанції в УкраїніГідроелектростанції в Україні
Гідроелектростанції в УкраїніUAReforms
 
deskripsi diagnosis film taare zameen par dan front of the class
deskripsi diagnosis film taare zameen par dan front of the class deskripsi diagnosis film taare zameen par dan front of the class
deskripsi diagnosis film taare zameen par dan front of the class Nur Arifaizal Basri
 
Позиція активних ОСББ стосовно частини державної програми з енергоефективност...
Позиція активних ОСББ стосовно частини державної програми з енергоефективност...Позиція активних ОСББ стосовно частини державної програми з енергоефективност...
Позиція активних ОСББ стосовно частини державної програми з енергоефективност...UAReforms
 
Fast and Focused: Understand PTO Accruals in Sage HRMS
Fast and Focused: Understand PTO Accruals in Sage HRMSFast and Focused: Understand PTO Accruals in Sage HRMS
Fast and Focused: Understand PTO Accruals in Sage HRMSNet at Work
 
Mercenaries activity, raf armament and military equipment on the territory of...
Mercenaries activity, raf armament and military equipment on the territory of...Mercenaries activity, raf armament and military equipment on the territory of...
Mercenaries activity, raf armament and military equipment on the territory of...embassyofukraine
 
Несумлінні підрядники
Несумлінні підрядникиНесумлінні підрядники
Несумлінні підрядникиUAReforms
 
Prersentacion de pawen poin jeniber formulacion (1)
Prersentacion de pawen poin jeniber formulacion (1)Prersentacion de pawen poin jeniber formulacion (1)
Prersentacion de pawen poin jeniber formulacion (1)andreinahomez
 
Реформа системи контролю за використанням публічних фінансів
Реформа системи контролю за використанням публічних фінансівРеформа системи контролю за використанням публічних фінансів
Реформа системи контролю за використанням публічних фінансівUAReforms
 
Emptied
EmptiedEmptied
Emptiedebcla
 
Тианде каталог весна 2017 Россия онлайн
Тианде каталог весна 2017 Россия онлайнТианде каталог весна 2017 Россия онлайн
Тианде каталог весна 2017 Россия онлайнlazibober
 

En vedette (20)

9 Budget-Friendly At-Home Date Ideas
9 Budget-Friendly At-Home Date Ideas9 Budget-Friendly At-Home Date Ideas
9 Budget-Friendly At-Home Date Ideas
 
여성흥분제『 http://x5.ana.kr 』 톡 w2015 ♡ 여성흥분제판매,여성흥분제가격,여성흥분제판매,여성흥분제판매사이트,여성흥분제...
여성흥분제『 http://x5.ana.kr  』 톡 w2015 ♡ 여성흥분제판매,여성흥분제가격,여성흥분제판매,여성흥분제판매사이트,여성흥분제...여성흥분제『 http://x5.ana.kr  』 톡 w2015 ♡ 여성흥분제판매,여성흥분제가격,여성흥분제판매,여성흥분제판매사이트,여성흥분제...
여성흥분제『 http://x5.ana.kr 』 톡 w2015 ♡ 여성흥분제판매,여성흥분제가격,여성흥분제판매,여성흥분제판매사이트,여성흥분제...
 
Гідроелектростанції в Україні
Гідроелектростанції в УкраїніГідроелектростанції в Україні
Гідроелектростанції в Україні
 
deskripsi diagnosis film taare zameen par dan front of the class
deskripsi diagnosis film taare zameen par dan front of the class deskripsi diagnosis film taare zameen par dan front of the class
deskripsi diagnosis film taare zameen par dan front of the class
 
Briefing fr
Briefing frBriefing fr
Briefing fr
 
A solis swy_hw_v1
A solis swy_hw_v1A solis swy_hw_v1
A solis swy_hw_v1
 
Позиція активних ОСББ стосовно частини державної програми з енергоефективност...
Позиція активних ОСББ стосовно частини державної програми з енергоефективност...Позиція активних ОСББ стосовно частини державної програми з енергоефективност...
Позиція активних ОСББ стосовно частини державної програми з енергоефективност...
 
Fast and Focused: Understand PTO Accruals in Sage HRMS
Fast and Focused: Understand PTO Accruals in Sage HRMSFast and Focused: Understand PTO Accruals in Sage HRMS
Fast and Focused: Understand PTO Accruals in Sage HRMS
 
Conexoes
ConexoesConexoes
Conexoes
 
Mercenaries activity, raf armament and military equipment on the territory of...
Mercenaries activity, raf armament and military equipment on the territory of...Mercenaries activity, raf armament and military equipment on the territory of...
Mercenaries activity, raf armament and military equipment on the territory of...
 
Несумлінні підрядники
Несумлінні підрядникиНесумлінні підрядники
Несумлінні підрядники
 
Prersentacion de pawen poin jeniber formulacion (1)
Prersentacion de pawen poin jeniber formulacion (1)Prersentacion de pawen poin jeniber formulacion (1)
Prersentacion de pawen poin jeniber formulacion (1)
 
Реформа системи контролю за використанням публічних фінансів
Реформа системи контролю за використанням публічних фінансівРеформа системи контролю за використанням публічних фінансів
Реформа системи контролю за використанням публічних фінансів
 
Emptied
EmptiedEmptied
Emptied
 
Test upload testing testing
Test upload testing testingTest upload testing testing
Test upload testing testing
 
Wiki
WikiWiki
Wiki
 
Banjir
Banjir Banjir
Banjir
 
Тианде каталог весна 2017 Россия онлайн
Тианде каталог весна 2017 Россия онлайнТианде каталог весна 2017 Россия онлайн
Тианде каталог весна 2017 Россия онлайн
 
Business Quiz Finals
Business Quiz FinalsBusiness Quiz Finals
Business Quiz Finals
 
Portadas nacionales 8 marzo-17
Portadas nacionales 8 marzo-17Portadas nacionales 8 marzo-17
Portadas nacionales 8 marzo-17
 

Similaire à Offline-first apps with WebComponents - DevNexus 2017

Responsive Websites
Responsive WebsitesResponsive Websites
Responsive WebsitesJoe Seifi
 
Practical progressive enhancement
Practical progressive enhancementPractical progressive enhancement
Practical progressive enhancementGraham Bird
 
Once Source to Rule Them All
Once Source to Rule Them AllOnce Source to Rule Them All
Once Source to Rule Them AllDavid Yeiser
 
The Angular road from 1.x to 2.0
The Angular road from 1.x to 2.0The Angular road from 1.x to 2.0
The Angular road from 1.x to 2.0Vassilis Pitsounis
 
Accessible Salesforce
Accessible SalesforceAccessible Salesforce
Accessible SalesforceShannon Hale
 
Practical Tips to Identify and Engage Talent
Practical Tips to Identify and Engage TalentPractical Tips to Identify and Engage Talent
Practical Tips to Identify and Engage TalentRecruitDC
 
Future of Web Development
Future of Web DevelopmentFuture of Web Development
Future of Web DevelopmentZeno Rocha
 
Recent Trends in Cyber Security
Recent Trends in Cyber SecurityRecent Trends in Cyber Security
Recent Trends in Cyber SecurityAyoma Wijethunga
 
How you can start building accessible websites today (... and why!)
How you can start building accessible websites today (... and why!)How you can start building accessible websites today (... and why!)
How you can start building accessible websites today (... and why!)nrasul
 
FITC Spotlight HTML5 - The state of the web
FITC Spotlight HTML5 - The state of the webFITC Spotlight HTML5 - The state of the web
FITC Spotlight HTML5 - The state of the webFrédéric Harper
 
Creating and Managing a Paperless Enterprise
Creating and Managing a Paperless EnterpriseCreating and Managing a Paperless Enterprise
Creating and Managing a Paperless EnterpriseProvokeSolutionsSeattle
 
Improve the User Experience in the Engineering Change Process
Improve the User Experience in the Engineering Change ProcessImprove the User Experience in the Engineering Change Process
Improve the User Experience in the Engineering Change ProcessDeeDee Kato
 
Practical Secure Coding Workshop - {DECIPHER} Hackathon
Practical Secure Coding Workshop - {DECIPHER} HackathonPractical Secure Coding Workshop - {DECIPHER} Hackathon
Practical Secure Coding Workshop - {DECIPHER} HackathonStefan Streichsbier
 
Building iPad apps with Flex - 360Flex
Building iPad apps with Flex - 360FlexBuilding iPad apps with Flex - 360Flex
Building iPad apps with Flex - 360Flexdanielwanja
 

Similaire à Offline-first apps with WebComponents - DevNexus 2017 (20)

Xxx
XxxXxx
Xxx
 
Responsive Websites
Responsive WebsitesResponsive Websites
Responsive Websites
 
Practical progressive enhancement
Practical progressive enhancementPractical progressive enhancement
Practical progressive enhancement
 
Once Source to Rule Them All
Once Source to Rule Them AllOnce Source to Rule Them All
Once Source to Rule Them All
 
The Angular road from 1.x to 2.0
The Angular road from 1.x to 2.0The Angular road from 1.x to 2.0
The Angular road from 1.x to 2.0
 
Accessible Salesforce
Accessible SalesforceAccessible Salesforce
Accessible Salesforce
 
Practical Tips to Identify and Engage Talent
Practical Tips to Identify and Engage TalentPractical Tips to Identify and Engage Talent
Practical Tips to Identify and Engage Talent
 
Future of Web Development
Future of Web DevelopmentFuture of Web Development
Future of Web Development
 
CV1
CV1CV1
CV1
 
Responsive design
Responsive designResponsive design
Responsive design
 
Recent Trends in Cyber Security
Recent Trends in Cyber SecurityRecent Trends in Cyber Security
Recent Trends in Cyber Security
 
Adobe & HTML5
Adobe & HTML5Adobe & HTML5
Adobe & HTML5
 
WordCamp Bari 2019
WordCamp Bari 2019WordCamp Bari 2019
WordCamp Bari 2019
 
How you can start building accessible websites today (... and why!)
How you can start building accessible websites today (... and why!)How you can start building accessible websites today (... and why!)
How you can start building accessible websites today (... and why!)
 
FITC Spotlight HTML5 - The state of the web
FITC Spotlight HTML5 - The state of the webFITC Spotlight HTML5 - The state of the web
FITC Spotlight HTML5 - The state of the web
 
Creating and Managing a Paperless Enterprise
Creating and Managing a Paperless EnterpriseCreating and Managing a Paperless Enterprise
Creating and Managing a Paperless Enterprise
 
Mapa mental.
Mapa mental.Mapa mental.
Mapa mental.
 
Improve the User Experience in the Engineering Change Process
Improve the User Experience in the Engineering Change ProcessImprove the User Experience in the Engineering Change Process
Improve the User Experience in the Engineering Change Process
 
Practical Secure Coding Workshop - {DECIPHER} Hackathon
Practical Secure Coding Workshop - {DECIPHER} HackathonPractical Secure Coding Workshop - {DECIPHER} Hackathon
Practical Secure Coding Workshop - {DECIPHER} Hackathon
 
Building iPad apps with Flex - 360Flex
Building iPad apps with Flex - 360FlexBuilding iPad apps with Flex - 360Flex
Building iPad apps with Flex - 360Flex
 

Dernier

Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
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 Processorsdebabhi2
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
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 2024The Digital Insurer
 
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 2024Rafal Los
 
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)wesley chun
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
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.pdfEnterprise Knowledge
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
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 Nanonetsnaman860154
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 

Dernier (20)

Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
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
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
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
 
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
 
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)
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
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
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
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
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 

Offline-first apps with WebComponents - DevNexus 2017

  • 1. DEVPIXEL O F F L I N E - F I R S T A P P S 
 W I T H 
 W E B C O M P O N E N T S A M A H D Y A B D E L A Z I Z W W W . A M A H D Y . N E T
  • 2. # 1 J A V A U I F R A M E W O R K 1. 100% Java 2. Awesome UX 3. Big set of Components + Add-ons 4. Used by 40% of fortune 500 companies 5. And much more… Vaadin
  • 3. Technology ‘ C L O U D ’ I S T H E D E F A U L T ‘ M O B I L E ’ I S TA K I N G O V E R
  • 9.
  • 11. Practical Test 1. Mobile-first design 2. Touch-first design 3. Coffee-first design
  • 12. Mobile-First T O U C H - F I R S T D E S I G N L O W - R E S O U R C E S D E S I G N O F F L I N E - F I R S T D E S I G N M U L T I - O R I E N TAT I O N D E S I G N
  • 13. Mobile-First T O U C H - F I R S T D E S I G N L O W - R E S O U R C E S D E S I G N O F F L I N E - F I R S T D E S I G N M U L T I - O R I E N TAT I O N D E S I G N
  • 14. O F F L I N E - F I R S T I S 
 T H E O N L Y W A Y T O A C H I E V E A T R U E 1 0 0 % A L W A Y S - O N U S E R E X P E R I E N C E . * * A S S U M I N G T H E D E V I C E I S R E L I A B L E
  • 15. Bringing Component-based Software Engineering to the Web
  • 16. Templates <template id=“my-template"> 
 <style> 
 ...
 </style> 
 <div> 
 <h1>Web Components</h1> 
 <img src="/img/logo.svg"> 
 </div> 
 </template>
 
 

  • 17. HTML Imports <link rel="import" href="my-el.html">

  • 19. S H A D O W D O M
  • 20. Before Shadow DOM <div id="slides-to-show"> 
 <div>1</div> 
 <div>2</div> 
 <div>3</div> 
 <div>4</div> 
 </div> 
 
 <div class="data slick-initialized slick-slider" data-slick="{"slidesToShow": 4, "slidesToScroll": 4}"> <button class="slick-prev slick-arrow" role="button" aria-label="Previous" data-role="none" type="button" style="display: block;">Previous</button> <div class="slick-list draggable" aria-live="polite"> <div class="slick-track" style="opacity: 1; width: 1960px; transform: translate3d(-560px, 0px, 0px);" role="listbox"> <div class="slick-slide slick-cloned" data-slick-index="-4" aria-hidden="true" style="width: 140px;" tabindex="-1"> <div class="slick-slide slick-cloned" data-slick-index="-3" aria-hidden="true" style="width: 140px;" tabindex="-1"> <div class="slick-slide slick-cloned" data-slick-index="-2" aria-hidden="true" style="width: 140px;" tabindex="-1"> <div class="slick-slide slick-cloned" data-slick-index="-1" aria-hidden="true" style="width: 140px;" tabindex="-1"> <div class="slick-slide slick-current slick-active" data-slick-index="0" aria-hidden="false" style="width: 140px;" tabindex="-1" role="option" aria-describedby="slick-slide30"> <h3>1</h3> </div> <div class="slick-slide slick-active" data-slick-index="1" aria-hidden="false" style="width: 140px;" tabindex="-1" role="option" aria-describedby="slick-slide31"> <div class="slick-slide slick-active" data-slick-index="2" aria-hidden="false" style="width: 140px;" tabindex="-1" role="option" aria-describedby="slick-slide32"> <div class="slick-slide slick-active" data-slick-index="3" aria-hidden="false" style="width: 140px;" tabindex="-1" role="option" aria-describedby="slick-slide33"> <div class="slick-slide" data-slick-index="4" aria-hidden="true" style="width: 140px;" tabindex="-1" role="option" aria-describedby="slick-slide34"> <div class="slick-slide" data-slick-index="5" aria-hidden="true" style="width: 140px;" tabindex="-1" role="option" aria-describedby="slick-slide35"> <div class="slick-slide slick-cloned" data-slick-index="6" aria-hidden="true" style="width: 140px;" tabindex="-1"> <div class="slick-slide slick-cloned" data-slick-index="7" aria-hidden="true" style="width: 140px;" tabindex="-1"> <div class="slick-slide slick-cloned" data-slick-index="8" aria-hidden="true" style="width: 140px;" tabindex="-1"> <div class="slick-slide slick-cloned" data-slick-index="9" aria-hidden="true" style="width: 140px;" tabindex="-1"> </div> </div> <button class="slick-next slick-arrow" role="button" aria-label="Next" data-role="none" type="button" style="display: block;">Next</button> </div> 1 2 3 4
  • 21. With Shadow DOM 1 2 3 4 1 2 3 4 <div id="slides-to-show"> 
 <div>1</div> 
 <div>2</div> 
 <div>3</div> 
 <div>4</div> 
 </div> 
 
 <div id="slides-to-show"> 
 <div>1</div> 
 <div>2</div> 
 <div>3</div> 
 <div>4</div> 
 </div> 
 

  • 22.
  • 24. Browser Support Chrome Opera Firefox Safari IE/Edge ~ c g ~ ~ ~ * As of December 2016
  • 25. Web Components Polyfill IE10 IE11+ Chrome* Firefox* Safari 7+* Chrome Android* Mobile Safari* Custom Elements ~ HTML Imports ~ Shadow DOM Templates
  • 26.
  • 28. Solution C A S H I N G F I R E B A S E O F F L I N E S T O R A G E D ATA R E P L I C AT I O N
  • 29.
  • 30.
  • 31. Challenges I N I T I A L L O A D T I M E S E C U R I T Y O F S T O R E D D ATA R A C E C O N D I T I O N
  • 32. D E M O A P P https://github.com/amahdy/offline-first-app <Links> T H A N K YO U ! - B U D D H A