quick apps primer
TRANSCRIPT
![Page 1: Quick Apps Primer](https://reader034.vdocuments.mx/reader034/viewer/2022042216/6259e5c1dbf6c55baf3d3b68/html5/thumbnails/1.jpg)
QUICK APP PRIMER
Guide to understand Quick Apps v1.0
![Page 2: Quick Apps Primer](https://reader034.vdocuments.mx/reader034/viewer/2022042216/6259e5c1dbf6c55baf3d3b68/html5/thumbnails/2.jpg)
CONTENTS
Mobile App Trends
Quick App Overview
Use Cases
Development
Architecture
Performance
![Page 3: Quick Apps Primer](https://reader034.vdocuments.mx/reader034/viewer/2022042216/6259e5c1dbf6c55baf3d3b68/html5/thumbnails/3.jpg)
MOBILE APPs TRENDS
Trends in business; trends in development; new
demanded services
Photo by HalGatewood.com on Unsplash
![Page 4: Quick Apps Primer](https://reader034.vdocuments.mx/reader034/viewer/2022042216/6259e5c1dbf6c55baf3d3b68/html5/thumbnails/4.jpg)
“NEW NORMAL” TRENDS
COVID-19 no-touch services
Scan QR-codes everywhere
Too many apps in devices
More transactional online services:
• Quick iterations to perform concrete tasks
• Short context of time and/or location
• Book, pay, arrange services/products
• Public services for citizens
Photo by Albert Hu on Unsplash
![Page 5: Quick Apps Primer](https://reader034.vdocuments.mx/reader034/viewer/2022042216/6259e5c1dbf6c55baf3d3b68/html5/thumbnails/5.jpg)
CHANGES IN BUSINESS MODELS
Mobile first approach
App stores to face new regulations
Coexistence of multiple stores
Businesses need to create more apps quickly
Experiences from any device, not only phone
Changes in the advertising models
Innovative ways to acquire users
Towards vendor neutrality & EU sovereignty
Photo by the blowup on Unsplash
![Page 6: Quick Apps Primer](https://reader034.vdocuments.mx/reader034/viewer/2022042216/6259e5c1dbf6c55baf3d3b68/html5/thumbnails/6.jpg)
QUICK APP OVERVIEW
Quick App paradigm; main features; …
Photo by HalGatewood.com on Unsplash
![Page 7: Quick Apps Primer](https://reader034.vdocuments.mx/reader034/viewer/2022042216/6259e5c1dbf6c55baf3d3b68/html5/thumbnails/7.jpg)
QUICK APP
A light native-like
application that does not
require installation and can
be opened with just one
tap or scanning a QR-code
![Page 8: Quick Apps Primer](https://reader034.vdocuments.mx/reader034/viewer/2022042216/6259e5c1dbf6c55baf3d3b68/html5/thumbnails/8.jpg)
FRICTIONLESS APPs
Ideal for:
• Simple defined tasks on the move
• Low friction user interactions
• Infrequent interactions
• User’s instant gratification (low time-to-value)
Avoiding complex workflows and intermediate steps
Photo by Henrik Dønnestad on Unsplash
![Page 9: Quick Apps Primer](https://reader034.vdocuments.mx/reader034/viewer/2022042216/6259e5c1dbf6c55baf3d3b68/html5/thumbnails/9.jpg)
MINIMUM
TIME-TO-VALUE
Focus on specific tasks
Instant access (no install)
No registration friction
No payment friction
MOBILE APP QUICK APP
![Page 10: Quick Apps Primer](https://reader034.vdocuments.mx/reader034/viewer/2022042216/6259e5c1dbf6c55baf3d3b68/html5/thumbnails/10.jpg)
QUICK APP MAIN FEATURES
Quick App is a framework
for mobile application
development, based on the
front-end Web technology
stack, that offers maximized
performance and enhanced
user experience through the
use of device’s native
resources and services.
QUICK APPsWEB
APPs
BROWSER
![Page 11: Quick Apps Primer](https://reader034.vdocuments.mx/reader034/viewer/2022042216/6259e5c1dbf6c55baf3d3b68/html5/thumbnails/11.jpg)
PRODUCT’S LIFECYCLE SUPPORT
DISCOVERABILITY
USER ACQUISITION
MONETIZATION
USER RETENTION
Discover the quick app using: QR-codes; search results; websites; catalogs; text messages; push notifications;marketplaces; in-app links; web links; widgets; global device search; device assistant; ...
Customers access the quick app through:scanning a QR-code, tapping on a link, in one step. No installation is required. Native authentication mechanisms to identify the user and personalize the service.
Developers can monetize the quick app:displaying in-app native ads in different formats; in-app reward ad videos; in-app-purchases offering different payment methods.
User engagement in the service (quick app) through:push notifications at system level with personalized messages; possibility to bookmark the app; keeping the status of the quick app last interaction for future access; marketing in the stores.
![Page 12: Quick Apps Primer](https://reader034.vdocuments.mx/reader034/viewer/2022042216/6259e5c1dbf6c55baf3d3b68/html5/thumbnails/12.jpg)
Promotion within devices
Widgets on dashboard
Global search results
No store dependency
DISCOVERABILITY
USER ACQUISITION
MONETIZATION
USER RETENTION
![Page 13: Quick Apps Primer](https://reader034.vdocuments.mx/reader034/viewer/2022042216/6259e5c1dbf6c55baf3d3b68/html5/thumbnails/13.jpg)
DISCOVERABILITY
USER ACQUISITION
MONETIZATION
USER RETENTION
Promotion outside devices
Web sites (URL links)
Links from other apps
Listed in app marketplaces
![Page 14: Quick Apps Primer](https://reader034.vdocuments.mx/reader034/viewer/2022042216/6259e5c1dbf6c55baf3d3b68/html5/thumbnails/14.jpg)
DISCOVERABILITY
USER ACQUISITION
MONETIZATION
USER RETENTION
QR code & open the app
Quick app marketplaces
Recently used apps
![Page 15: Quick Apps Primer](https://reader034.vdocuments.mx/reader034/viewer/2022042216/6259e5c1dbf6c55baf3d3b68/html5/thumbnails/15.jpg)
DISCOVERABILITY
USER ACQUISITION
MONETIZATION
USER RETENTION
Huge discoverability
Just one tap and access
No installation required
![Page 16: Quick Apps Primer](https://reader034.vdocuments.mx/reader034/viewer/2022042216/6259e5c1dbf6c55baf3d3b68/html5/thumbnails/16.jpg)
DISCOVERABILITY
USER ACQUISITION
MONETIZATION
USER RETENTION
User identification
Open and authorize
Welcome user07
![Page 17: Quick Apps Primer](https://reader034.vdocuments.mx/reader034/viewer/2022042216/6259e5c1dbf6c55baf3d3b68/html5/thumbnails/17.jpg)
DISCOVERABILITY
USER ACQUISITION
MONETIZATION
USER RETENTION
In-app payments
In-app ads
Rewarded ad videos
![Page 18: Quick Apps Primer](https://reader034.vdocuments.mx/reader034/viewer/2022042216/6259e5c1dbf6c55baf3d3b68/html5/thumbnails/18.jpg)
Tap to open
Ask to save bookmark
Remember status
DISCOVERABILITY
USER ACQUISITION
MONETIZATION
USER RETENTION
![Page 19: Quick Apps Primer](https://reader034.vdocuments.mx/reader034/viewer/2022042216/6259e5c1dbf6c55baf3d3b68/html5/thumbnails/19.jpg)
DISCOVERABILITY
USER ACQUISITION
MONETIZATION
USER RETENTION
Push notifications
Banners in other apps
Tap and access the app
![Page 20: Quick Apps Primer](https://reader034.vdocuments.mx/reader034/viewer/2022042216/6259e5c1dbf6c55baf3d3b68/html5/thumbnails/20.jpg)
USE CASES
Transactional services; e-commerce; quick social
interactions; no-touch services; casual games; …
Photo by HalGatewood.com on Unsplash
![Page 21: Quick Apps Primer](https://reader034.vdocuments.mx/reader034/viewer/2022042216/6259e5c1dbf6c55baf3d3b68/html5/thumbnails/21.jpg)
PRODUCTIVITY
For eventual needs
Task-oriented tools
Just tap and use
Dispose after use
Light and easy-to-use
![Page 22: Quick Apps Primer](https://reader034.vdocuments.mx/reader034/viewer/2022042216/6259e5c1dbf6c55baf3d3b68/html5/thumbnails/22.jpg)
SHOPPING
Marketing campaigns
Push notifications
In-App advertising
Tap and buy
QR code and buy
Huawei ID in one tap
![Page 23: Quick Apps Primer](https://reader034.vdocuments.mx/reader034/viewer/2022042216/6259e5c1dbf6c55baf3d3b68/html5/thumbnails/23.jpg)
COVID-19
Touchless services
Emergencies
Nearby facilities & services
Alert notifications
Exposure warnings
First aid
![Page 24: Quick Apps Primer](https://reader034.vdocuments.mx/reader034/viewer/2022042216/6259e5c1dbf6c55baf3d3b68/html5/thumbnails/24.jpg)
PUBLIC SERVICES
Touchless, online services
Covering citizens’ needs
Scan QR-code and access
Utility, taxes payments
Smart city productivity
![Page 25: Quick Apps Primer](https://reader034.vdocuments.mx/reader034/viewer/2022042216/6259e5c1dbf6c55baf3d3b68/html5/thumbnails/25.jpg)
QUICK GAMES
Casual light games
Easy to discover and play
May include Ads and iAPs
One-click authentication
Social interactions
![Page 26: Quick Apps Primer](https://reader034.vdocuments.mx/reader034/viewer/2022042216/6259e5c1dbf6c55baf3d3b68/html5/thumbnails/26.jpg)
QUICK GAMES
High user acquisition
Simplified version
Trial, preview version
![Page 27: Quick Apps Primer](https://reader034.vdocuments.mx/reader034/viewer/2022042216/6259e5c1dbf6c55baf3d3b68/html5/thumbnails/27.jpg)
RESTAURANTS &
BARS
Touchless service
QR code and access menu
Targeted discounts
Recommendations
Complete dish information
Access to location, orders
Book, order, pay
![Page 28: Quick Apps Primer](https://reader034.vdocuments.mx/reader034/viewer/2022042216/6259e5c1dbf6c55baf3d3b68/html5/thumbnails/28.jpg)
TRANSPORT
Booking on the go
QR-code, book and pay
In-journey information
Context based on location
Real-time alerts
Status of the service
Push notifications
![Page 29: Quick Apps Primer](https://reader034.vdocuments.mx/reader034/viewer/2022042216/6259e5c1dbf6c55baf3d3b68/html5/thumbnails/29.jpg)
IN-VEHICLE INFORMATION &
ENTERTAINMENT
Third-party apps on the car's head unit
In-car entertainment functions:
• reading news;
• listening to stories;
• watching videos;
• playing games;
• …
![Page 30: Quick Apps Primer](https://reader034.vdocuments.mx/reader034/viewer/2022042216/6259e5c1dbf6c55baf3d3b68/html5/thumbnails/30.jpg)
ALSO AS WIDGETS
Display on the home screen
Direct user interaction
![Page 31: Quick Apps Primer](https://reader034.vdocuments.mx/reader034/viewer/2022042216/6259e5c1dbf6c55baf3d3b68/html5/thumbnails/31.jpg)
QUICK APP DEVELOPMENT
Features; IDE; MVVM framework; UI
components; packaging; distribution…
Photo by HalGatewood.com on Unsplash
![Page 32: Quick Apps Primer](https://reader034.vdocuments.mx/reader034/viewer/2022042216/6259e5c1dbf6c55baf3d3b68/html5/thumbnails/32.jpg)
KEY FEATURES
MVVM framework based on development trends
W3C standard based on HTML, JS, CSS
Declarative UI
Native features (calendar, hardware…)
Supported by 25% of device vendors
Ready-to-use modules
Low learning curve
Easy to convert Web Apps to Quick Apps
Photo by Charles Deluvio on Unsplash
![Page 33: Quick Apps Primer](https://reader034.vdocuments.mx/reader034/viewer/2022042216/6259e5c1dbf6c55baf3d3b68/html5/thumbnails/33.jpg)
IDE WITH TEMPLATES
![Page 34: Quick Apps Primer](https://reader034.vdocuments.mx/reader034/viewer/2022042216/6259e5c1dbf6c55baf3d3b68/html5/thumbnails/34.jpg)
HTML5 TO QUICK APP IN SECONDS
![Page 35: Quick Apps Primer](https://reader034.vdocuments.mx/reader034/viewer/2022042216/6259e5c1dbf6c55baf3d3b68/html5/thumbnails/35.jpg)
CUSTOMIZED WIDGETS: VISUAL UI DEVELOPMENT
![Page 36: Quick Apps Primer](https://reader034.vdocuments.mx/reader034/viewer/2022042216/6259e5c1dbf6c55baf3d3b68/html5/thumbnails/36.jpg)
<template><div class="main-page"><text class="title">{{title}}</text><input class="btn" type="button" value="Press Me" onclick="changeText" />
</div></template>
<script>export default {private: {title: 'My first Quick App'
},changeText () {this.title = 'hello world'
}}</script>
<style>.main-page {flex-direction: column;justify-content: center;align-items: center;
}.btn {width: 550px;height: 86px;margin-top: 75px;border-radius: 43px;background-color: #4286f5;font-size: 30px;color: #000000;
}</style>
MVVM FRAMEWORK
Vue.js-like
Declarative rendering
Reusable UI components
Reactive HTML templates
One-way data flow
Event binding
Virtual DOM manipulation
CSS Stylesheets
![Page 37: Quick Apps Primer](https://reader034.vdocuments.mx/reader034/viewer/2022042216/6259e5c1dbf6c55baf3d3b68/html5/thumbnails/37.jpg)
<template><div class="main-page">
<image src="https://...image.jpg" class="image"></image><div>
<tabs><tab-bar class="tab-bar" >
<text for="{{tabs}}">{{$item.title}}</text></tab-bar><tab-content class="tab-content" >
<div class="tab-content-section" for="{{tabs}}"><text class="title">{{$item.content}}</text><div class="content {{$item.classname}}">
<div class="box" for="{{$item.boxes}}"><text>{{$item.name}}</text>
</div></div>
</div></tab-content>
</tabs></div>
</div></template>
<script>export default {
private: {title: 'My first Quick App',tabs: [
{title:'Starters',classname: 'starter',boxes: [ { name: 'Starter #0' }, { name: 'Starter #1' }, { name: 'Starter #2' } …],content: 'STARTERS:'
},{
title:'Main',classname: 'main',boxes: [ { name: 'Main #1' }, { name: 'Starter #2' }, …],content: 'MAIN COURSES:'
}, …]
}}
</script>
QUICK
PROTOTYPING
Conditionals and loops
HTML-like markup
UI components
![Page 38: Quick Apps Primer](https://reader034.vdocuments.mx/reader034/viewer/2022042216/6259e5c1dbf6c55baf3d3b68/html5/thumbnails/38.jpg)
SIMPLE APP SETUP
Configuration in manifest
Description of the app
Main look-and-feel
Per-page customization
Permissions declaration
Per-page routing
{"package": “org.example.quickapp","name": “My first quick app","icon": "/Common/my-local-logo.png",
"display": {"backgroundColor": "#FFFFFF","titleBarBackgroundColor": "#007DFF","titleBarTextColor": "#ffffff","menu": true,"textSizeAdjust": "auto","pages": {“main": {"fullScreen": true,"orientation": "landscape","menu": false,"titleBar": false
},}
},
"features": [{ "name": "system.alarm" },{ "name": "system.clipboard" }, { "name": "system.router" },{ "name": "system.contact" },{ "name": "service.push" }
],
...
...
"router": {"entry": "main","pages": {
"main": {"component": "main"
},"component/checkout": {
"component": "index"}
},},"trustedSslDomains": [
"expired.badssl.com"],
}
![Page 39: Quick Apps Primer](https://reader034.vdocuments.mx/reader034/viewer/2022042216/6259e5c1dbf6c55baf3d3b68/html5/thumbnails/39.jpg)
APP LIFECYCLE
Main app-level events
Granular page-level events
Global methods
Global variables
<script>module.exports = {
onCreate() {console.info('Application onCreate')
},onRequest() {
console.info('Application onRequest')},onShow() {
console.info('Application onShow')},onHide() {
console.info('Application onHide')},onDestroy() {
console.info('Application onDestroy')},onError(error) {
console.info('Application onError')},// Method exposed to all pagesmethodApp() {
console.info('This is a app-level method')},// Data exposed to all pagesdataApp: {
name: 'this is app-level data'}
}</script>
![Page 40: Quick Apps Primer](https://reader034.vdocuments.mx/reader034/viewer/2022042216/6259e5c1dbf6c55baf3d3b68/html5/thumbnails/40.jpg)
ADVANCED
FEATURES
Internationalization
Multilingual strings
Access to system’s locale
<template><div>
<text>{{$t('message.mainComponent.title')}}</text></div>
</template>
<script>import configuration from '@system.configuration'export default {
onReady () {console.info(configuration.getLocale().language)
}}
</script>
<!-- /i18n/en-US.json -->{
"message": {"appName": “My First Quick App",“mainComponent": {"title": “This is my quick app"
},…
}
<!-- /i18n/zh-CN.json -->{"message": {
"appName": ”我的第一个快速应用程序",“mainComponent": {"title": “这是我的第一个快速应用程序 "
},…
}
![Page 41: Quick Apps Primer](https://reader034.vdocuments.mx/reader034/viewer/2022042216/6259e5c1dbf6c55baf3d3b68/html5/thumbnails/41.jpg)
PACKAGING & DISTRIBUTION
Development
Simulation & Testing
[Generate signature]
Build and sign package
Signed release (RPK)
Ready to publication
![Page 42: Quick Apps Primer](https://reader034.vdocuments.mx/reader034/viewer/2022042216/6259e5c1dbf6c55baf3d3b68/html5/thumbnails/42.jpg)
DISTRIBUTION FLOW
Icons: Larea from the Noun Project
DEVELOPER
SOURCE CODE
(JS, HTML, CSS)
APP PACKAGE
(app.rpk)
(1) write
(2) build
APP STOREs
(3) upload
USER
(1) tap
QUICK APP PLATFORM
(on device)
ENTRY SCENARIOS
(link, QR code,..)
QUICK
APP
(2) launch
(3) fetch
(4) run
(5) interact
APP PACKAGE (ZIP)
page
pagepage
page
manifest.json
app.ux
![Page 43: Quick Apps Primer](https://reader034.vdocuments.mx/reader034/viewer/2022042216/6259e5c1dbf6c55baf3d3b68/html5/thumbnails/43.jpg)
APP GALLERY CONNECT: PROMOTE THE APP
![Page 44: Quick Apps Primer](https://reader034.vdocuments.mx/reader034/viewer/2022042216/6259e5c1dbf6c55baf3d3b68/html5/thumbnails/44.jpg)
APP GALLERY CONNECT: MANAGE VERSIONS
![Page 45: Quick Apps Primer](https://reader034.vdocuments.mx/reader034/viewer/2022042216/6259e5c1dbf6c55baf3d3b68/html5/thumbnails/45.jpg)
APP GALLERY CONNECT: KPI ANALYSIS
![Page 46: Quick Apps Primer](https://reader034.vdocuments.mx/reader034/viewer/2022042216/6259e5c1dbf6c55baf3d3b68/html5/thumbnails/46.jpg)
QUICK APP ARCHITECTURE
Implementation; components; basic APIs; …
Photo by HalGatewood.com on Unsplash
![Page 47: Quick Apps Primer](https://reader034.vdocuments.mx/reader034/viewer/2022042216/6259e5c1dbf6c55baf3d3b68/html5/thumbnails/47.jpg)
QUICK APP PLATFORM ARCHITECTURE
BRIDGE
FRONT-END
FRAMEWORK
APP LIFECYCLE APIs & SERVICES
DOMAIN SPECIFIC LANGUAGE
(XML, JS)
UI COMPONENTS
STYLE, LAYOUT
(CSS)
JS ENGINE RENDER ENGINE
OS &
HARDWARE
NATIVE UI
COMPONENTS
GRAPHICS
LIBRARY
NATIVE APIs &
SERVICESGPU/NPU
![Page 48: Quick Apps Primer](https://reader034.vdocuments.mx/reader034/viewer/2022042216/6259e5c1dbf6c55baf3d3b68/html5/thumbnails/48.jpg)
RUNTIME FRAMEWORK
NETWORK
JS BRIDGE
STORAGEFILE
SYSTEMSENSORs CAMERA …
JS ENGINE
PAGE 1
(JavaScript)
PAGE 2
(JavaScript)
RENDER ENGINE
PAGE 1
(<template>, CSS)
PAGE 2
(<template>, CSS)
event
data
event
data
API eventAPI event
![Page 49: Quick Apps Primer](https://reader034.vdocuments.mx/reader034/viewer/2022042216/6259e5c1dbf6c55baf3d3b68/html5/thumbnails/49.jpg)
QUICK APP BUILT-IN UI COMPONENTS
DRAWER
TABS
SWIPER
LIST
REFRESH
POPUP
STACK
RICHTEXT
CONTAINERS
SWITCH TEXTAREA
SLIDER
INPUT
SELECT
OPTION
LABEL
PICKER
FORMS
TEXT
MARQUEE
SPAN
A
RATINGPROGRESS
WEB
BASIC COMPONENTS
IMAGE
CANVAS
SLIDE VIEW
MAP
CAMERA
VIDEO
CUSTOM
MARKER
![Page 50: Quick Apps Primer](https://reader034.vdocuments.mx/reader034/viewer/2022042216/6259e5c1dbf6c55baf3d3b68/html5/thumbnails/50.jpg)
APIs & SERVICES
SENSORS
VIBRATOR
GEOLOCATION CALENDAR
CONTACTS
NETWORK
STATUS
BRIGHTNESS
BATTERY
DEVICE AUDIO
VOLUME
SMS
WIFI
BLUETOOTH
DEVICE ALARMS
DAILY STEPS
DEVICE FEATURES
DIALOGS
IN-APP
NOTIFICATIONS
WEB VIEW
EXTERNAL
SHARING
VIDEO
AUDIO
IMAGES
ANIMATIONS
CANVAS
QR CODE
CLIPBOARDAUDIO
RECORDINGS
PUSH
NOTIFICATIONS
QUICK APPS
SHARING
INPUT - OUTPUT
RUN IN
BACKGROUND
ROUTING
APP INFO
UPLOAD
DOWNLOAD
FETCH
WEB SOCKETS
FILE SYSTEM
STORAGE
SHORTCUT
(INSTALLATION)
DEVICE INFO
PACKAGE
MANAGEMENT
SYSTEM
CONFIGURATION
ZIP
MANAGEMENT
CRYPTOGRAPHY
SYSTEM & NETWORK
PAYMENTS
AUTH.
STATISTICS
ADS
USER ACCOUNT
(AI) SPEECH
RECOGNITION
(AI) TEXT
TRANSLATION
VENDOR
SERVICES
![Page 51: Quick Apps Primer](https://reader034.vdocuments.mx/reader034/viewer/2022042216/6259e5c1dbf6c55baf3d3b68/html5/thumbnails/51.jpg)
PERFORMANCE
Benchmark: Quick Apps, Web applications,
Android apps, and games
Photo by HalGatewood.com on Unsplash
![Page 52: Quick Apps Primer](https://reader034.vdocuments.mx/reader034/viewer/2022042216/6259e5c1dbf6c55baf3d3b68/html5/thumbnails/52.jpg)
PACKAGE SIZE
(MB)
8
7
6
5
4
3
2
1
0
9
10
DOWNLOAD & STARTUP
(ms)
0
12000
10000
8000
6000
4000
2000
SLEEP LATENCY
(ms)
0
450
400
350
300
250
50
200
150
100
RUNNING MEMORY
(MB)
0
140
120
100
80
20
60
40
PERFORMANCE OF QUICK APPS
QUICKAPP
HTML5APP
ANDROIDAPP
QUICKAPP
HTML5APP
ANDROIDAPP
QUICKAPP
HTML5APP
ANDROIDAPP
QUICKAPP
HTML5APP
ANDROIDAPP
Comparison of applications performing the same function (source: Huawei 2019)
![Page 53: Quick Apps Primer](https://reader034.vdocuments.mx/reader034/viewer/2022042216/6259e5c1dbf6c55baf3d3b68/html5/thumbnails/53.jpg)
GAME SPRITES IN USE
PERFORMANCE (in frames per second)
60 fps
45 fps
30 fps
15 fps
0 fps
75 fps
PERFORMANCE OF QUICK GAMES
500 1000 2000 3000 4000 5000
Huawei
Quick Game
HTML5 +
Browser
(Source: Huawei 2019)
![Page 54: Quick Apps Primer](https://reader034.vdocuments.mx/reader034/viewer/2022042216/6259e5c1dbf6c55baf3d3b68/html5/thumbnails/54.jpg)
THANK YOUQuick App Initiative https://quick-app-initiative.ow2.io
Photo by HalGatewood.com on Unsplash