SlideShare ist ein Scribd-Unternehmen logo
1 von 95
Downloaden Sie, um offline zu lesen
Progressive
Web Apps 101
Jorge Ferreiro (@jgferreiro)
www.ferreiro.me
@JGFERREIRO@JGFERREIRO #codemotionpwa
How many of you have
ever created a web app?
@JGFERREIRO@JGFERREIRO #codemotionpwa
How many of you know
what a PWA is?
@JGFERREIRO #CODEMOTIONPWA
Frontend @Eventbrite
Alumni @Amazon
Blogger, DJ, fan of musicals
Jorge Ferreiro
@JGFERREIRO@JGFERREIRO #CODEMOTIONPWA
youtube.com/jgferreiro
My youtube show:
@JGFERREIRO@JGFERREIRO
What are we
gonna build
today?
0.
@JGFERREIRO@JGFERREIRO #CODEMOTIONPWA
Our first Progressive Web App!
✅ Offline mode
✅ Local Notifications
✅ Cache requests
✅ Payments API
❌ Background Sync
❌ IndexedDB
Emotion CSS-in-JS
@JGFERREIRO@JGFERREIRO #CODEMOTIONPWA
@JGFERREIRO@JGFERREIRO #CODEMOTIONPWA
github.com/ferreiro/pwa-101
ferreiro/pwa-101
Source code
@JGFERREIRO@JGFERREIRO #CODEMOTIONPWA
Agenda
• Motivation
• Manifest
• Service workers
• Offline Mode
• APIs and advanced topics
Important quote
@JGFERREIRO@JGFERREIRO #CODEMOTIONPWA
Audience: Goals
Experts on PWA
Web devs with no
experience on PWA
Beginners
@JGFERREIRO@JGFERREIRO #CODEMOTIONPWA
Questions to Fran :)
@JGFERREIRO@JGFERREIRO #CODEMOTIONPWA
#CODEMOTIONPWA
@JGFERREIRO
@JGFERREIRO@JGFERREIRO #CODEMOTIONPWA
@JGFERREIRO@JGFERREIRO
# What are
Progressive Web
Apps?
1.
@JGFERREIRO #CODEMOTIONPWA
Web applications that adapts the
user experience based on the device
network, device capabilities and
user needs
Progressive Web Apps (PWAs):
@JGFERREIRO@JGFERREIRO #CODEMOTIONPWA
PWAs can also have native
mobile apps cabapabilities
(offline mode, push, etc.)
Big selling point!
@JGFERREIRO@JGFERREIRO #CODEMOTIONPWA
Using latest browser features
when they are available
Progressive enhancement:
@JGFERREIRO
Progressive enhancement: Intuition
@JGFERREIRO@JGFERREIRO #CODEMOTIONPWA
๏ Simplified web
version
๏ Data save mode
๏ Limit access to
advanced features
🌍
Progressive enhancement: Example
๏ High quality media
๏ Advanced Features:
Push, background
sync, etc.
United States
Bad 2G connection | Cheap phone 5G connection | High quality phones
%Africa
@JGFERREIRO@JGFERREIRO #CODEMOTIONPWA
Progressive enhancement: Simplification
if ('feature' in browser) {
!// Feature is available!!!
!// Do something cool with it!
} else {
!// 😡 Party pooper
!// Browser does not support this feature
!// Change your browser!!...
}
@JGFERREIRO@JGFERREIRO #CODEMOTIONPWA
Responsive
'
Works offline
⚙
App-like-
interactions
📱
Fresh
🌿
Safe
🔐
Discoverable
🔍
Re-engageable
🔔
PWA features (Alex Russell Jake Archibald)
Durable
💾
Linkable
🔗
Alex Russel “Progressive Web Apps:
Escaping Tabs Without Losing Our Soul”
@JGFERREIRO
Android rocks!
@JGFERREIRO #CODEMOTIONPWA
✅ Web Push
✅ Background Sync
✅ PWAs in the Google Play
https://www.youtube.com/watch?v=7JDFjeMvxos
🔥
🔥
🔥
🔥
🔥
🔥
@JGFERREIRO@JGFERREIRO
Progressive Web
Apps in the industry
2.
@JGFERREIRO@JGFERREIRO #codemotionpwa
Amazing PWAs in the industry
@JGFERREIRO@JGFERREIRO #codemotionpwa
Pinterest increased by
843% new signups y/y
A one year PWA retrospective
@JGFERREIRO@JGFERREIRO #codemotionpwa
Twitter decreased by 70%
data consumption
1. Twitter Lite case study
2. How we built Twitter Lite
@JGFERREIRO@JGFERREIRO #codemotionpwa
Tinder mobile loading time
decreased from 11.37s to 4.69s
@JGFERREIRO@JGFERREIRO #CODEMOTIONPWA
@JGFERREIRO@JGFERREIRO
🤔 Why Progressive
Web Apps?
3.
@JGFERREIRO@JGFERREIRO #CODEMOTIONPWA
Smaller and 1-click install
Native apps tend to occupy more space.
Offline and notifications!
Improves user retention and converstions.
Adaptative experience
Our apps can adapt to any device.
Distribution Freedom
No need apple store or play store
@JGFERREIRO@JGFERREIRO #CODEMOTIONPWA
Let’s build our first
PWA!
@JGFERREIRO@JGFERREIRO #CODEMOTIONPWA
Our first Progressive Web App!
Emotion CSS-in-JS
✅ Offline mode
✅ Local Notifications
✅ Cache requests
✅ Payments API
❌ Background Sync
❌ IndexedDB
@JGFERREIRO@JGFERREIRO
Progressive
metatags
4.
@JGFERREIRO@JGFERREIRO #CODEMOTIONPWA
Viewport metatag
<meta name="viewport"
content="width=device-width, initial-scale=1">
🔥 mdn: Using the viewport meta tag
Forces the browser to use real device width
@JGFERREIRO@JGFERREIRO #CODEMOTIONPWA
Theme color
<meta name="theme-color" content="#fb8397">
@JGFERREIRO@JGFERREIRO #CODEMOTIONPWA
Apple metatags
👀 Apple: Configuring web applications
<meta name="apple-mobile-web-app-title" content="Pennapps">
<meta name="apple-mobile-web-app-status-bar-style" content="white">
<meta name="apple-mobile-web-app-capable" content="yes">
  😒
@JGFERREIRO@JGFERREIRO #CODEMOTIONPWA
More Apple metatags… 😅 icons
👍 favicon-generator.org
<link rel="apple-touch-icon" sizes="57x57" href=“image_57_57.png">
<link rel="apple-touch-icon" sizes="60x60" href="image_60_60.png">
<link rel="apple-touch-icon" sizes="72x72" href="image_72_72.png">
<link rel="apple-touch-icon" sizes="76x76" href="image_76_76.png">
<link rel="apple-touch-icon" sizes="114x114" href="image_114_114.png">
<link rel="apple-touch-icon" sizes="120x120" href="image_120_120.png">
<link rel="apple-touch-icon" sizes="144x144" href="image_144_144.png">
<link rel="apple-touch-icon" sizes="152x152" href="image_152_152.png">
<link rel="apple-touch-icon" sizes="180x180" href="image_180_180.png">
@JGFERREIRO@JGFERREIRO
Manifest.json5.
@JGFERREIRO@JGFERREIRO #CODEMOTIONPWA
manifest.json is a file that tells
the browser about your web
application and how it should
behave when 'installed'
https://developers.google.com/web/fundamentals/web-app-manifest
@JGFERREIRO@JGFERREIRO #CODEMOTIONPWA
Create manifest.json
"short_name": "Pennapps",
"name": "Pennapps agenda",
"start_url": "/?utm_source=pwa",
"display": "standalone",
"theme_color": "#ffffff",
"background_color": "#ffffff",
"scope": "/",
"icons": []
{
}
<link href="/static/manifest.json" rel="manifest">
@JGFERREIRO@JGFERREIRO #CODEMOTIONPWA
“short_name": "Pennapps",
"name": "Pennapps agenda",
"start_url": "/?utm_source=pwa",
"display": "standalone",
"theme_color": "#ffffff",
"background_color": "#ffffff",
"scope": "/",
"icons": []
{
}
{ !// 192 for the “home screen icon”
"src": "/static/images/pennapps_logo_pwa_192_192.png",
"sizes": "192x192",
"type": "image/png"
},
{ !// 512 for splash screen (on Android)
"src": "/static/images/pennapps_logo_pwa_512_512.png",
"sizes": "512x512",
"type": "image/png"
}
]
@JGFERREIRO@JGFERREIRO #CODEMOTIONPWA
Manifest.json - display
fullscreen No browser UI
✅ Videogames
standalone Hides standard browser UI elements
✅ Standalone native app
minimal-ui Fullscreen display. Minimal UI elements
browser Standard browser experience
Google: Web App Manifest
@JGFERREIRO@JGFERREIRO #CODEMOTIONPWA
Test your manifest in dev tools
@JGFERREIRO
Test your manifest in Lighthouse
@JGFERREIRO@JGFERREIRO
Intro to Service
Workers
6.
@JGFERREIRO@JGFERREIRO #codemotionpwa
A service worker is like a
client side proxy
It gives you control of the cache,
and how to respond to requests
@JGFERREIRO@JGFERREIRO #codemotionpwa
Service
Worker
A service worker is a JavaScript file
that runs separately from the main
browser thread
@JGFERREIRO@JGFERREIRO
Our first service
worker
SERVICE WORKER :: INSTALL CALLBACK
self.addEventListener('install', (event) !=> {
!// Install anything you need here!
})
self.addEventListener('fetch', (event) !=> {
console.log('I am intercepting network requests!')
const url = event.request.url
console.log('Requested resource url: ', url)
})
Create a new SW.js file
SERVICE WORKER :: REGistering new SW
if ('serviceWorker' in navigator) {
console.log('⭐ Start to register a service worker')
navigator.serviceWorker.register('/sw.js')
.then((registration) !=> {
console.log('SW!::Registration', registration)
})
.catch((error) !=> {
console.log('SW!::Error registering', error)
});
}
@JGFERREIRO@JGFERREIRO #codemotionpwa
@JGFERREIRO@JGFERREIRO
Offline mode with
Cache API
7.
@JGFERREIRO@JGFERREIRO #CODEMOTIONPWA
Offline mode?
We need a cache!
We need a bunch of cached
resources, downloaded in
the client’s browser
Cached resources in the browser
@JGFERREIRO #CODEMOTIONPWA
Cache API is a key-value
storage mechanism for
requests<>responses pairs
@JGFERREIRO #CODEMOTIONPWA
Cache API gives programmatic
control over caching assets
inside a service worker
@JGFERREIRO@JGFERREIRO #codemotionpwa
@JGFERREIRO@JGFERREIRO
Cache Hello World7.1
@JGFERREIRO@JGFERREIRO #codemotionpwa
caches.open()
Returns a Promise with
the Cache object
CacheStorage API
https://developer.mozilla.org/en-
US/docs/Web/API/CacheStorage
@JGFERREIRO@JGFERREIRO #codemotionpwa
Cache object
Cache.add(request)
Cache.addAll([request])
Cache.put(request, response)
Cache.delete(request, options)
Cache.match(request, options)
Cache.matchAll(request, options)
https://developer.mozilla.org/en-
US/docs/Web/API/Cache
(Same as fetch() + put())
Request object
or a URL
fetch(new Request(“/image.jpg”))
CACHE API :: HELLO WORLD
const cacheNameVersion = 'resources-v1'
self.addEventListener('install', () !=> {
})
caches.open(cacheNameVersion)
.then((cache) !=> {
         cache.add("index.html")
         cache.add("client.bundle.js")
})
.catch((error) !=> {
!// Error opening the cache :/
})
@JGFERREIRO@JGFERREIRO #codemotionpwa
🔎 Check cached resources
@JGFERREIRO@JGFERREIRO #codemotionpwa
🔎 Check cached resources
@JGFERREIRO@JGFERREIRO #codemotionpwa
🔎 Check cache size
@JGFERREIRO@JGFERREIRO
Caching critical
assets
7.2
@JGFERREIRO@JGFERREIRO #codemotionpwa
A critical asset?
Things needed to run your app
without internet connection.
@JGFERREIRO@JGFERREIRO #codemotionpwa
event.waitUntil()
Service worker will stay in “install”
mode, until the promise is resolved
✅ Are all assets cached? Then
Service Worker is installed!
❌ Error caching critical assets?
Service worker not installed.
CACHE API :: REQUIRING CRITICAL ASSETs
const cacheVersion = 'version-1'
const noCriticalAssets = [‘foo.css']
const criticalAssets = ['/index.html', ‘/client.bundle.js']
function cacheAssets() {
return caches.open(cacheVersion)
.then((cache) !=> {
cacheNoCriticalAssets(cache)
return cacheCriticalAssets(cache)
})
}
function cacheCriticalAssets (cache) {
return cache.addAll(criticalAssets)
}
function cacheNoCriticalAssets(cache) {
cache.addAll(noCriticalAssets)
}
self.addEventListener('install', (event) !=> {
event.waitUntil(cacheAssets())
})
This return does the magic!
If failure on this promise,
then waitUntil will fail
@JGFERREIRO@JGFERREIRO #codemotionpwa
🔎 Check cached resources
@JGFERREIRO@JGFERREIRO #codemotionpwa
🔎 Check cached resources
@JGFERREIRO@JGFERREIRO #codemotionpwa
🔎 Check cache size
@JGFERREIRO@JGFERREIRO
Removing old
cache resources
7.3
@JGFERREIRO@JGFERREIRO #CODEMOTIONPWA
CACHE API :: REMOVING CACHED ASSETS
self.addEventListener('install', (event) !=> {
!// Add assets to the service worker cache
})
self.addEventListener('activate', (event) !=> {
!// Remove cached assets from previous version
!// using caches.delete().
})
Make sure to remove cached ASSETS!
@JGFERREIRO@JGFERREIRO
Fetch image or
placeholder
7.4
@JGFERREIRO@JGFERREIRO #CODEMOTIONPWA
CACHE API :: Fetch image or placeholder
self.addEventListener('fetch', (event) !=> {
const acceptHeader =
event.request.headers.get('accept')
if (acceptHeader.includes('image')) {
return event.respondWith(
fetchImageOrPlaceholder(event)
)
}
})
CACHE API :: Fetch image or placeholder
function fetchImageOrPlaceholder(fetchEvent) {
return fetch(fetchEvent.request)
.then((response) !=> {
if (!response.ok) {
throw Error(‘Can not download from server…’)
}
return response
})
.catch(() !=> {
!// NB: Return placeholder.
return caches.match(placeholderImage, {
cacheName: cacheVersion
})
})
}
const placeholderImage = '/images/placeholder.jpg'
@JGFERREIRO@JGFERREIRO
Network request
with cache backup
7.5
@JGFERREIRO@JGFERREIRO #CODEMOTIONPWA
CACHE API :: Fetch image or placeholder
self.addEventListener('fetch', (event) !=> {
const acceptHeader =
event.request.headers.get('accept')
if (acceptHeader.includes('image')) {
return event.respondWith(
fetchImageOrPlaceholder(event)
)
}
})
CACHE API :: Fetch image or placeholder
function fetchImageOrFallback(event) {
return fetch(event.request)
READ CacheStorage
.then((response) !=> {
if (!response.ok) {
throw Error('Can not download image from server')
}
caches.open(cacheVersion).then(function(cache) { !// Cache in background
cache.put(event.request, response)
})
return response.clone() !// NB: Can't reuse responses twice: bit.ly/response-clone
})
.catch(() !=> {
return caches.match(fetchEvent.request).catch(function() { !// try to get cached
return caches.match('/images/placeholder.jpg', { !// Return placeholder
cacheName: cacheVersion
})
})
})
}
@JGFERREIRO@JGFERREIRO #codemotionpwa
Further reading:
@JGFERREIRO@JGFERREIRO
Other cool APIs
and concepts
8.
@JGFERREIRO
Local notification
@JGFERREIRO
Payments API
@JGFERREIRO
Other advanced concepts
Web Push Notifications using VAPID
The App Shell Model

(see also The PRPL Pattern)
Background Sync
IndexedDB
🔒
🐢
📶
💾
@JGFERREIRO - jorge@ferreiro.me
Q&A!
@JGFERREIRO
@JGFERREIRO #CODEMOTIONPWA
Whotofollow?
Jake Archibald
Google
@jaffathecake
Alex Russell
Chrome Team
@slightlylate
Sarah Clark
Google
@a_bowl_of_stars
Pete LePage
Google
@petele
Dominick Ng
Chrome PWA
@dominickng
Scott Domes
Indeed
@scottdomes
Kenneth C.
Intel
@kennethrohde
Henrik Joreteg
Consultant
@HenrikJoreteg
Charlie Croom
Twitter
@CharlieCroom
Monica Dinculescu
Polymer
@notwaldorf
@JGFERREIRO@JGFERREIRO #CODEMOTIONPWA
Action plan
1. Fork “pwa 101” repo and start it
locally
2. Re-read this presentation, and open
some of the links in the resources
3. Execute each of the steps to add
progressive enhancement to your app
@JGFERREIRO
@JGFERREIRO #CODEMOTIONPWA
Resources
1. Google I/O 2014 - Bridging the
gap between the web and apps
2. How we built Twitter Lite
3. Twitter Lite and High
Performance React Progressive
Web Apps at Scale
4. Google workbox
5. Payment request
6. Frontend masters: Progressive web
apps
7. Background sync
8. Google: Progressive web apps
YouTube traiing
@JGFERREIRO@JGFERREIRO #CODEMOTIONPWA
github.com/ferreiro/pwa-101
ferreiro/pwa-101
Source code
@JGFERREIRO@JGFERREIRO #codemotionpwa
Get the slides:
I’ll post it on my twitter.com/jgferreiro
@JGFERREIRO #CODEMOTIONPWA
PWA are the future of
mobile apps. Start learning
today!
Thanks
@jgferreiro
jorge@ferreiro.me
#codemotionPWA!

Weitere ähnliche Inhalte

Was ist angesagt?

The Future of Progressive Web Apps - View Source conference, Berlin 2016
The Future of Progressive Web Apps - View Source conference, Berlin 2016The Future of Progressive Web Apps - View Source conference, Berlin 2016
The Future of Progressive Web Apps - View Source conference, Berlin 2016Robert Nyman
 
Progressive Web Apps keynote, Google Developer Summit, Tokyo, Japan
Progressive Web Apps keynote, Google Developer Summit, Tokyo, JapanProgressive Web Apps keynote, Google Developer Summit, Tokyo, Japan
Progressive Web Apps keynote, Google Developer Summit, Tokyo, JapanRobert Nyman
 
Progressive web apps with Angular 2
Progressive web apps with Angular 2Progressive web apps with Angular 2
Progressive web apps with Angular 2Manfred Steyer
 
The web - What it has, what it lacks and where it must go - keynote at Riga D...
The web - What it has, what it lacks and where it must go - keynote at Riga D...The web - What it has, what it lacks and where it must go - keynote at Riga D...
The web - What it has, what it lacks and where it must go - keynote at Riga D...Robert Nyman
 
Progressive Web Apps and the Windows Ecosystem [Build 2017]
Progressive Web Apps and the Windows Ecosystem [Build 2017]Progressive Web Apps and the Windows Ecosystem [Build 2017]
Progressive Web Apps and the Windows Ecosystem [Build 2017]Aaron Gustafson
 
Predictability for the Web
Predictability for the WebPredictability for the Web
Predictability for the WebRobert Nyman
 
The web - What it has, what it lacks and where it must go - Bulgaria Web Summ...
The web - What it has, what it lacks and where it must go - Bulgaria Web Summ...The web - What it has, what it lacks and where it must go - Bulgaria Web Summ...
The web - What it has, what it lacks and where it must go - Bulgaria Web Summ...Robert Nyman
 
The Technical Seo Renaissance - Mike King
 The Technical Seo Renaissance - Mike King   The Technical Seo Renaissance - Mike King
The Technical Seo Renaissance - Mike King Glen Dimaandal
 
Offline-First Progressive Web Apps
Offline-First Progressive Web AppsOffline-First Progressive Web Apps
Offline-First Progressive Web AppsAditya Punjani
 
SEO for Angular - BrightonSEO 2018
SEO for Angular - BrightonSEO 2018SEO for Angular - BrightonSEO 2018
SEO for Angular - BrightonSEO 2018Jamie Indigo
 
Optimizing for Change (Henrik Joreteg)
Optimizing for Change (Henrik Joreteg)Optimizing for Change (Henrik Joreteg)
Optimizing for Change (Henrik Joreteg)Future Insights
 
That's crazy! how to build single page web apps
That's crazy! how to build single page web appsThat's crazy! how to build single page web apps
That's crazy! how to build single page web appsChris Love
 
The Physical World meets the Web
The Physical World meets the WebThe Physical World meets the Web
The Physical World meets the WebMaximiliano Firtman
 
The Case for Progressive Web Apps
The Case for Progressive Web AppsThe Case for Progressive Web Apps
The Case for Progressive Web AppsJason Grigsby
 
Meet.js Summit 2019 - PWA in practice
Meet.js Summit 2019 - PWA in practiceMeet.js Summit 2019 - PWA in practice
Meet.js Summit 2019 - PWA in practiceŁukasz Romanowicz
 
Basic Understanding of Progressive Web Apps
Basic Understanding of Progressive Web AppsBasic Understanding of Progressive Web Apps
Basic Understanding of Progressive Web AppsAnjaliTanpure1
 
Progressive web apps with polymer
Progressive web apps with polymerProgressive web apps with polymer
Progressive web apps with polymerMarcus Hellberg
 
Progressive Web Apps - Bringing the web front and center
Progressive Web Apps - Bringing the web front and center Progressive Web Apps - Bringing the web front and center
Progressive Web Apps - Bringing the web front and center Christian Heilmann
 
Progressive Web App Challenges
Progressive Web App ChallengesProgressive Web App Challenges
Progressive Web App ChallengesJason Grigsby
 

Was ist angesagt? (20)

The Future of Progressive Web Apps - View Source conference, Berlin 2016
The Future of Progressive Web Apps - View Source conference, Berlin 2016The Future of Progressive Web Apps - View Source conference, Berlin 2016
The Future of Progressive Web Apps - View Source conference, Berlin 2016
 
Progressive Web Apps keynote, Google Developer Summit, Tokyo, Japan
Progressive Web Apps keynote, Google Developer Summit, Tokyo, JapanProgressive Web Apps keynote, Google Developer Summit, Tokyo, Japan
Progressive Web Apps keynote, Google Developer Summit, Tokyo, Japan
 
Progressive web apps with Angular 2
Progressive web apps with Angular 2Progressive web apps with Angular 2
Progressive web apps with Angular 2
 
The web - What it has, what it lacks and where it must go - keynote at Riga D...
The web - What it has, what it lacks and where it must go - keynote at Riga D...The web - What it has, what it lacks and where it must go - keynote at Riga D...
The web - What it has, what it lacks and where it must go - keynote at Riga D...
 
Progressive Web Apps and the Windows Ecosystem [Build 2017]
Progressive Web Apps and the Windows Ecosystem [Build 2017]Progressive Web Apps and the Windows Ecosystem [Build 2017]
Progressive Web Apps and the Windows Ecosystem [Build 2017]
 
Predictability for the Web
Predictability for the WebPredictability for the Web
Predictability for the Web
 
The web - What it has, what it lacks and where it must go - Bulgaria Web Summ...
The web - What it has, what it lacks and where it must go - Bulgaria Web Summ...The web - What it has, what it lacks and where it must go - Bulgaria Web Summ...
The web - What it has, what it lacks and where it must go - Bulgaria Web Summ...
 
The Technical Seo Renaissance - Mike King
 The Technical Seo Renaissance - Mike King   The Technical Seo Renaissance - Mike King
The Technical Seo Renaissance - Mike King
 
Offline-First Progressive Web Apps
Offline-First Progressive Web AppsOffline-First Progressive Web Apps
Offline-First Progressive Web Apps
 
SEO for Angular - BrightonSEO 2018
SEO for Angular - BrightonSEO 2018SEO for Angular - BrightonSEO 2018
SEO for Angular - BrightonSEO 2018
 
Optimizing for Change (Henrik Joreteg)
Optimizing for Change (Henrik Joreteg)Optimizing for Change (Henrik Joreteg)
Optimizing for Change (Henrik Joreteg)
 
That's crazy! how to build single page web apps
That's crazy! how to build single page web appsThat's crazy! how to build single page web apps
That's crazy! how to build single page web apps
 
The Physical World meets the Web
The Physical World meets the WebThe Physical World meets the Web
The Physical World meets the Web
 
The Case for Progressive Web Apps
The Case for Progressive Web AppsThe Case for Progressive Web Apps
The Case for Progressive Web Apps
 
Meet.js Summit 2019 - PWA in practice
Meet.js Summit 2019 - PWA in practiceMeet.js Summit 2019 - PWA in practice
Meet.js Summit 2019 - PWA in practice
 
Basic Understanding of Progressive Web Apps
Basic Understanding of Progressive Web AppsBasic Understanding of Progressive Web Apps
Basic Understanding of Progressive Web Apps
 
Progressive web apps with polymer
Progressive web apps with polymerProgressive web apps with polymer
Progressive web apps with polymer
 
Smart Design
Smart Design Smart Design
Smart Design
 
Progressive Web Apps - Bringing the web front and center
Progressive Web Apps - Bringing the web front and center Progressive Web Apps - Bringing the web front and center
Progressive Web Apps - Bringing the web front and center
 
Progressive Web App Challenges
Progressive Web App ChallengesProgressive Web App Challenges
Progressive Web App Challenges
 

Ähnlich wie Codemotion Progressive Web Applications Pwa Webinar - Jorge Ferreiro - @jgferreiro

Web is the New Mobile: Building Progressive Web Apps - Erica Stanley - Codemo...
Web is the New Mobile: Building Progressive Web Apps - Erica Stanley - Codemo...Web is the New Mobile: Building Progressive Web Apps - Erica Stanley - Codemo...
Web is the New Mobile: Building Progressive Web Apps - Erica Stanley - Codemo...Codemotion
 
Mobile Apps with PhoneGap and jQuery Mobile
Mobile Apps with PhoneGap and jQuery MobileMobile Apps with PhoneGap and jQuery Mobile
Mobile Apps with PhoneGap and jQuery MobileTerry Ryan
 
Enterprise AIR Development for JavaScript Developers
Enterprise AIR Development for JavaScript DevelopersEnterprise AIR Development for JavaScript Developers
Enterprise AIR Development for JavaScript DevelopersAndreCharland
 
iPhone Development For Experienced Web Developers
iPhone Development For Experienced Web DevelopersiPhone Development For Experienced Web Developers
iPhone Development For Experienced Web Developerslisab517
 
Intro To Django
Intro To DjangoIntro To Django
Intro To DjangoUdi Bauman
 
Offline of web applications
Offline of web applicationsOffline of web applications
Offline of web applicationsFDConf
 
Offline for web - Frontend Dev Conf Minsk 2014
Offline for web - Frontend Dev Conf Minsk 2014Offline for web - Frontend Dev Conf Minsk 2014
Offline for web - Frontend Dev Conf Minsk 2014Jan Jongboom
 
So you want to build a mobile app - HTML5 vs. Native @ the Boston Mobile Expe...
So you want to build a mobile app - HTML5 vs. Native @ the Boston Mobile Expe...So you want to build a mobile app - HTML5 vs. Native @ the Boston Mobile Expe...
So you want to build a mobile app - HTML5 vs. Native @ the Boston Mobile Expe...Yottaa
 
Creating Rajanikant Powered Site
Creating Rajanikant Powered SiteCreating Rajanikant Powered Site
Creating Rajanikant Powered Sitemarkandey
 
Stapling and patching the web of now - ForwardJS3, San Francisco
Stapling and patching the web of now - ForwardJS3, San FranciscoStapling and patching the web of now - ForwardJS3, San Francisco
Stapling and patching the web of now - ForwardJS3, San FranciscoChristian Heilmann
 
Ketan Majmudar: From Kitchen Sink to App: Real World Case Studies
Ketan Majmudar: From Kitchen Sink to App: Real World Case StudiesKetan Majmudar: From Kitchen Sink to App: Real World Case Studies
Ketan Majmudar: From Kitchen Sink to App: Real World Case StudiesAxway Appcelerator
 
Firefox OS Talk - Web Applications and FirefoxOS Marketplace
Firefox OS Talk - Web Applications and FirefoxOS MarketplaceFirefox OS Talk - Web Applications and FirefoxOS Marketplace
Firefox OS Talk - Web Applications and FirefoxOS MarketplaceJorge Ferreiro
 
From Idea to App (or “How we roll at Small Town Heroes”)
From Idea to App (or “How we roll at Small Town Heroes”)From Idea to App (or “How we roll at Small Town Heroes”)
From Idea to App (or “How we roll at Small Town Heroes”)Bramus Van Damme
 
Fake it 'til you make it
Fake it 'til you make itFake it 'til you make it
Fake it 'til you make itJonathan Snook
 
Lessons Learned - Building YDN
Lessons Learned - Building YDNLessons Learned - Building YDN
Lessons Learned - Building YDNDan Theurer
 
A Gentle introduction to Web Development & Django
A Gentle introduction to Web Development & DjangoA Gentle introduction to Web Development & Django
A Gentle introduction to Web Development & DjangoPRASANNAVENK
 
PhoneGap - Now and the Future
PhoneGap - Now and the FuturePhoneGap - Now and the Future
PhoneGap - Now and the FutureTim Kim
 
apidays LIVE Australia 2020 - Contract-first API development with Spot by Fra...
apidays LIVE Australia 2020 - Contract-first API development with Spot by Fra...apidays LIVE Australia 2020 - Contract-first API development with Spot by Fra...
apidays LIVE Australia 2020 - Contract-first API development with Spot by Fra...apidays
 

Ähnlich wie Codemotion Progressive Web Applications Pwa Webinar - Jorge Ferreiro - @jgferreiro (20)

Web is the New Mobile: Building Progressive Web Apps - Erica Stanley - Codemo...
Web is the New Mobile: Building Progressive Web Apps - Erica Stanley - Codemo...Web is the New Mobile: Building Progressive Web Apps - Erica Stanley - Codemo...
Web is the New Mobile: Building Progressive Web Apps - Erica Stanley - Codemo...
 
Mobile Apps with PhoneGap and jQuery Mobile
Mobile Apps with PhoneGap and jQuery MobileMobile Apps with PhoneGap and jQuery Mobile
Mobile Apps with PhoneGap and jQuery Mobile
 
Enterprise AIR Development for JavaScript Developers
Enterprise AIR Development for JavaScript DevelopersEnterprise AIR Development for JavaScript Developers
Enterprise AIR Development for JavaScript Developers
 
iPhone Development For Experienced Web Developers
iPhone Development For Experienced Web DevelopersiPhone Development For Experienced Web Developers
iPhone Development For Experienced Web Developers
 
Intro To Django
Intro To DjangoIntro To Django
Intro To Django
 
Offline of web applications
Offline of web applicationsOffline of web applications
Offline of web applications
 
Offline for web - Frontend Dev Conf Minsk 2014
Offline for web - Frontend Dev Conf Minsk 2014Offline for web - Frontend Dev Conf Minsk 2014
Offline for web - Frontend Dev Conf Minsk 2014
 
So you want to build a mobile app - HTML5 vs. Native @ the Boston Mobile Expe...
So you want to build a mobile app - HTML5 vs. Native @ the Boston Mobile Expe...So you want to build a mobile app - HTML5 vs. Native @ the Boston Mobile Expe...
So you want to build a mobile app - HTML5 vs. Native @ the Boston Mobile Expe...
 
Creating Rajanikant Powered Site
Creating Rajanikant Powered SiteCreating Rajanikant Powered Site
Creating Rajanikant Powered Site
 
Devoxx 2014 monitoring
Devoxx 2014 monitoringDevoxx 2014 monitoring
Devoxx 2014 monitoring
 
Stapling and patching the web of now - ForwardJS3, San Francisco
Stapling and patching the web of now - ForwardJS3, San FranciscoStapling and patching the web of now - ForwardJS3, San Francisco
Stapling and patching the web of now - ForwardJS3, San Francisco
 
Ketan Majmudar: From Kitchen Sink to App: Real World Case Studies
Ketan Majmudar: From Kitchen Sink to App: Real World Case StudiesKetan Majmudar: From Kitchen Sink to App: Real World Case Studies
Ketan Majmudar: From Kitchen Sink to App: Real World Case Studies
 
Firefox OS Talk - Web Applications and FirefoxOS Marketplace
Firefox OS Talk - Web Applications and FirefoxOS MarketplaceFirefox OS Talk - Web Applications and FirefoxOS Marketplace
Firefox OS Talk - Web Applications and FirefoxOS Marketplace
 
From Idea to App (or “How we roll at Small Town Heroes”)
From Idea to App (or “How we roll at Small Town Heroes”)From Idea to App (or “How we roll at Small Town Heroes”)
From Idea to App (or “How we roll at Small Town Heroes”)
 
Fake it 'til you make it
Fake it 'til you make itFake it 'til you make it
Fake it 'til you make it
 
Introduction to Django
Introduction to DjangoIntroduction to Django
Introduction to Django
 
Lessons Learned - Building YDN
Lessons Learned - Building YDNLessons Learned - Building YDN
Lessons Learned - Building YDN
 
A Gentle introduction to Web Development & Django
A Gentle introduction to Web Development & DjangoA Gentle introduction to Web Development & Django
A Gentle introduction to Web Development & Django
 
PhoneGap - Now and the Future
PhoneGap - Now and the FuturePhoneGap - Now and the Future
PhoneGap - Now and the Future
 
apidays LIVE Australia 2020 - Contract-first API development with Spot by Fra...
apidays LIVE Australia 2020 - Contract-first API development with Spot by Fra...apidays LIVE Australia 2020 - Contract-first API development with Spot by Fra...
apidays LIVE Australia 2020 - Contract-first API development with Spot by Fra...
 

Mehr von Jorge Ferreiro

Web Perfomance Talk at Twitter London: how to make your website blazing fast
Web Perfomance Talk at Twitter London: how to make your website blazing fastWeb Perfomance Talk at Twitter London: how to make your website blazing fast
Web Perfomance Talk at Twitter London: how to make your website blazing fastJorge Ferreiro
 
Los 10 consejos para junior engineers
Los 10 consejos para junior engineersLos 10 consejos para junior engineers
Los 10 consejos para junior engineersJorge Ferreiro
 
El CV y Github: El momento de jugar como pros 2019
El CV y Github: El momento de jugar como pros 2019El CV y Github: El momento de jugar como pros 2019
El CV y Github: El momento de jugar como pros 2019Jorge Ferreiro
 
La Guía para conseguir tu primer trabajo en empresas de tecnología
La Guía para conseguir tu primer trabajo en empresas de tecnologíaLa Guía para conseguir tu primer trabajo en empresas de tecnología
La Guía para conseguir tu primer trabajo en empresas de tecnologíaJorge Ferreiro
 
Mi Historia hasta 2019: De Amazon a Eventbrite
Mi Historia hasta 2019: De Amazon a EventbriteMi Historia hasta 2019: De Amazon a Eventbrite
Mi Historia hasta 2019: De Amazon a EventbriteJorge Ferreiro
 
Aprende y crece en el mundo tech - Django girls madrid 2018 - #DjangoGirlsMadrid
Aprende y crece en el mundo tech - Django girls madrid 2018 - #DjangoGirlsMadridAprende y crece en el mundo tech - Django girls madrid 2018 - #DjangoGirlsMadrid
Aprende y crece en el mundo tech - Django girls madrid 2018 - #DjangoGirlsMadridJorge Ferreiro
 
Introducing Redis by Jorge Ferreiro - May 2017
Introducing Redis by Jorge Ferreiro - May 2017Introducing Redis by Jorge Ferreiro - May 2017
Introducing Redis by Jorge Ferreiro - May 2017Jorge Ferreiro
 
Workshop: Your first professional Website
Workshop: Your first professional WebsiteWorkshop: Your first professional Website
Workshop: Your first professional WebsiteJorge Ferreiro
 
Workshop html5, css3 & github
Workshop  html5, css3 & github Workshop  html5, css3 & github
Workshop html5, css3 & github Jorge Ferreiro
 
Webapps, caso de estudio y publicación de aplicaciones en Firefox OS
Webapps, caso de estudio y publicación de aplicaciones en Firefox OSWebapps, caso de estudio y publicación de aplicaciones en Firefox OS
Webapps, caso de estudio y publicación de aplicaciones en Firefox OSJorge Ferreiro
 
Webapps, caso de estudio y publicación de aplicaciones en Firefox OS
Webapps,  caso de estudio y  publicación de aplicaciones en Firefox OS Webapps,  caso de estudio y  publicación de aplicaciones en Firefox OS
Webapps, caso de estudio y publicación de aplicaciones en Firefox OS Jorge Ferreiro
 
Webapps: introduction and publishing on Firefox OS
Webapps: introduction and publishing on Firefox OSWebapps: introduction and publishing on Firefox OS
Webapps: introduction and publishing on Firefox OSJorge Ferreiro
 
Webapps, caso de estudio y publicación de aplicaciones en Firefox OS
Webapps, caso de estudio y publicación de aplicaciones en Firefox OSWebapps, caso de estudio y publicación de aplicaciones en Firefox OS
Webapps, caso de estudio y publicación de aplicaciones en Firefox OSJorge Ferreiro
 

Mehr von Jorge Ferreiro (14)

Web Perfomance Talk at Twitter London: how to make your website blazing fast
Web Perfomance Talk at Twitter London: how to make your website blazing fastWeb Perfomance Talk at Twitter London: how to make your website blazing fast
Web Perfomance Talk at Twitter London: how to make your website blazing fast
 
Los 10 consejos para junior engineers
Los 10 consejos para junior engineersLos 10 consejos para junior engineers
Los 10 consejos para junior engineers
 
El CV y Github: El momento de jugar como pros 2019
El CV y Github: El momento de jugar como pros 2019El CV y Github: El momento de jugar como pros 2019
El CV y Github: El momento de jugar como pros 2019
 
La Guía para conseguir tu primer trabajo en empresas de tecnología
La Guía para conseguir tu primer trabajo en empresas de tecnologíaLa Guía para conseguir tu primer trabajo en empresas de tecnología
La Guía para conseguir tu primer trabajo en empresas de tecnología
 
Mi Historia hasta 2019: De Amazon a Eventbrite
Mi Historia hasta 2019: De Amazon a EventbriteMi Historia hasta 2019: De Amazon a Eventbrite
Mi Historia hasta 2019: De Amazon a Eventbrite
 
Aprende y crece en el mundo tech - Django girls madrid 2018 - #DjangoGirlsMadrid
Aprende y crece en el mundo tech - Django girls madrid 2018 - #DjangoGirlsMadridAprende y crece en el mundo tech - Django girls madrid 2018 - #DjangoGirlsMadrid
Aprende y crece en el mundo tech - Django girls madrid 2018 - #DjangoGirlsMadrid
 
Dailyfocus
DailyfocusDailyfocus
Dailyfocus
 
Introducing Redis by Jorge Ferreiro - May 2017
Introducing Redis by Jorge Ferreiro - May 2017Introducing Redis by Jorge Ferreiro - May 2017
Introducing Redis by Jorge Ferreiro - May 2017
 
Workshop: Your first professional Website
Workshop: Your first professional WebsiteWorkshop: Your first professional Website
Workshop: Your first professional Website
 
Workshop html5, css3 & github
Workshop  html5, css3 & github Workshop  html5, css3 & github
Workshop html5, css3 & github
 
Webapps, caso de estudio y publicación de aplicaciones en Firefox OS
Webapps, caso de estudio y publicación de aplicaciones en Firefox OSWebapps, caso de estudio y publicación de aplicaciones en Firefox OS
Webapps, caso de estudio y publicación de aplicaciones en Firefox OS
 
Webapps, caso de estudio y publicación de aplicaciones en Firefox OS
Webapps,  caso de estudio y  publicación de aplicaciones en Firefox OS Webapps,  caso de estudio y  publicación de aplicaciones en Firefox OS
Webapps, caso de estudio y publicación de aplicaciones en Firefox OS
 
Webapps: introduction and publishing on Firefox OS
Webapps: introduction and publishing on Firefox OSWebapps: introduction and publishing on Firefox OS
Webapps: introduction and publishing on Firefox OS
 
Webapps, caso de estudio y publicación de aplicaciones en Firefox OS
Webapps, caso de estudio y publicación de aplicaciones en Firefox OSWebapps, caso de estudio y publicación de aplicaciones en Firefox OS
Webapps, caso de estudio y publicación de aplicaciones en Firefox OS
 

Kürzlich hochgeladen

Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 

Kürzlich hochgeladen (20)

Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 

Codemotion Progressive Web Applications Pwa Webinar - Jorge Ferreiro - @jgferreiro