SlideShare a Scribd company logo
Web frontend is an app too!
Jakub Baierl
Before
Using MVP frameworks - PHP Symfony, Nette, Laravel, Wordpress
Non static websites - web frontend dependent of backend
Web frontend as a part of backend - only templates, no possibility of code
reusing, no flexibility
Slow performance
Hard build and deploy process - installing packages for whole system
Now
Simple Scalability - few files hosted even on different server, focus on my
application - not whole infrastructure
Communication via API
Modularity - more suitables technologies for different problems
Increased Flexibility - using API for web, mobile app, public expose
Separate build and deploy
How to choose
the right technology?
Get your mobile app in production in 3 months: Native and Reactive Mobile Apps
Get your mobile app in production in 3 months: Native and Reactive Mobile Apps
Get your mobile app in production in 3 months: Native and Reactive Mobile Apps
Get your mobile app in production in 3 months: Native and Reactive Mobile Apps
Get your mobile app in production in 3 months: Native and Reactive Mobile Apps
Get your mobile app in production in 3 months: Native and Reactive Mobile Apps
Get your mobile app in production in 3 months: Native and Reactive Mobile Apps
Get your mobile app in production in 3 months: Native and Reactive Mobile Apps
Get your mobile app in production in 3 months: Native and Reactive Mobile Apps
Get your mobile app in production in 3 months: Native and Reactive Mobile Apps
Who will win? Client’s wish,
common sense or our pride?
Web frontend is independent -> huge market of frameworks & libs
Constant changes or hard resets on dev stacks
Build app on unsuitable technology
Get your mobile app in production in 3 months: Native and Reactive Mobile Apps
Requirements
Administrative part - fetching data from API, huge number of forms,
dynamic part - graphs, sorting lists, maps
Requirements
Administrative part - fetching data from API, huge number of forms,
dynamic part - graphs, sorting lists, maps
Requirements
Client app - fetching data from API, loading data once (mobile app base),
temporary saving data, custom responsive layout, SEO
Requirements
Client app - fetching data from API, loading data once (mobile app base),
temporary saving data, custom responsive layout, SEO
Prepared packages
Static websites - pure HTML, SASS, JS
Static websites with support of multiple languages or dynamic elements or
SEO - Middleman generator of static sites
Dynamic websites with fast communication with API - React (server
rendering for seo), Webpack
Nonpublic administration (internal) systems - React, Webpack, Redux
Choose from the magic pouch
Chosen heroes
React - Layout, Components, App structure, Server-rendering (microsite)
Fetch API - Getting data from API
Redux - Data flow, App state
Sass - CSS preprocessor, design
React
component-based javascript library
only for user interface
prepared events - onClick, onHover
virtual DOM
Containers
class CarContainer extends Component {
constructor(props) {
super(props);
}
render = () => {
return (
<Loader show={this.props.isFetching}>
{this.props.car ?
<CarComponent car={car}/>
: null}
</Loader>
);
}
}
export default connect(state => ({
isFetching: state.carIsFetching,
car: state.car,
}),
(dispatch) => ({
carActions: bindActionCreators(carActions, dispatch)
})
)(CarContainer);
Components
class CarComponent extends Component {
constructor(props) {
super(props);
};
componentWillMount () {}
componentDidMount () {}
render() {
return (
<div>
<p>{this.props.car.name}</p>
</div>
);
};
};
export default CarComponent;
Managing data
stop using carcinogenic CALLBACKS
button -> click ->wait for callback ….. confusion
NOW -> unidirectional data flow -> button -> click -> make action ->
change application state -> components reload
Redux
CSS before
Huge files
No code reusing
Non-objective
No flexibility - change color of app - change on 100 lines
—> use CSS preprocessors - Less, Sass, Stylus
Sass now!
Variables
Nesting
Mixins - code reusing
Imports - different libraries
Math - width: (100%+35)
Simply awesome <3
Variables & Nesting
//Prague open fesival 2017
$main_colour_1: #0C4D78
$main_colour_2: #0f4064 
$second_colour: #F7966B
$bg_colour: #ffffff
$contrast_colour: #000000
$text_colour_1: #000000
$text_colour_2: #ffffff
=====================================================
// Testing of sass loader
@import "../../common.sass"
@import "../../../../variables.sass"
.Header
background-color: $main_colour_1
&-logo
float: left
img
width: 100%
Building the web app
Transpiling to browser language - from JSX, ES6 …
Translate Sass files to CSS files
Livereloading - realtime watching for changes and reloading app
Different data for development and production
Tools: Gulp, Grunt, Webpack
module bundler
dependency graph -> bundles
-> browser can load it
building
watching
transpiling
extracting
minifying
uglyfying
livereload support
development vs. production
Webpack
var Webpack = require('webpack');
var LiveReloadPlugin = require('webpack-livereload-plugin');
var GlobalConfig = require('./config_global.js');
module.exports = {
entry: "./src/ui/module.js",
output: {
path: "./"+process.env.NAME,
filename: "bundle.js"
},
module: {
loaders: [
{
test: /.js$/,
exclude: /node_modules/,
loader: 'babel-loader',
query: {
presets: ['react']
}
},
{
test: /.sass$/,
loader: 'style!css!sass?indentedSyntax'
},
{
test: /.css$/,
loader: "style!css"
},
{
test: /.(png|gif)$/,
loader: "url?mimetype=image/[ext]&limit=10000"
}
]
},
plugins: [
new LiveReloadPlugin(),
new webpack.optimize.UglifyJsPlugin({
compress: {
warnings: false,
},
}),
build native mobile apps with
javascript!
using native blocks (java, obj-c)
compose blocks using JS
best solution for specific applications
React Native
render() {
const rows = this.state.news.map((row, ii)
=> {
return <Row key={ii} data={row.data}/>;
});
return (
<ScrollView
style={styles.scrollview}
refreshControl={
<RefreshControl
refreshing={this.props.isFetching}
onRefresh={this._onRefresh}
tintColor="#1b1b1b"
title="Loading..."
titleColor="#1b1b1b"
colors={['#ff0000', '#00ff00',
'#0000ff']}
progressBackgroundColor="#ffed00"
/>
}>
{rows}
</ScrollView>
);
}
Advanced topic
Hosting react apps - Google Storage Bucket
Redux sagas and middleware
React native routing - using native controllers
www.ackee.de
lovely people, lovely apps

More Related Content

What's hot (20)

Google cloud functions
Google cloud functionsGoogle cloud functions
Google cloud functions
Péter Nagy
 
Build 2017 - B8110 - Modernize WinForms and WPF apps with maximum code reuse,...
Build 2017 - B8110 - Modernize WinForms and WPF apps with maximum code reuse,...Build 2017 - B8110 - Modernize WinForms and WPF apps with maximum code reuse,...
Build 2017 - B8110 - Modernize WinForms and WPF apps with maximum code reuse,...
Windows Developer
 
Demand driven applications with om.next and react native
Demand driven applications with om.next and react nativeDemand driven applications with om.next and react native
Demand driven applications with om.next and react native
dvcrn
 
Blazor and Azure Functions - a serverless approach
Blazor and Azure Functions - a serverless approachBlazor and Azure Functions - a serverless approach
Blazor and Azure Functions - a serverless approach
Alex Pshul
 
Serverless in azure
Serverless in azureServerless in azure
Serverless in azure
Veresh Jain
 
Build a Chatbot in Ten Minutes - Dave Kerr - Serverless Summit
Build a Chatbot in Ten Minutes - Dave Kerr - Serverless SummitBuild a Chatbot in Ten Minutes - Dave Kerr - Serverless Summit
Build a Chatbot in Ten Minutes - Dave Kerr - Serverless Summit
CodeOps Technologies LLP
 
Azure Static Web Apps 入門
Azure Static Web Apps 入門Azure Static Web Apps 入門
Azure Static Web Apps 入門
Tsubasa Yoshino
 
Building Tools for the Hadoop Developer
Building Tools for the Hadoop DeveloperBuilding Tools for the Hadoop Developer
Building Tools for the Hadoop Developer
DataWorks Summit
 
Serverless Machine Learning Workshop
Serverless Machine Learning WorkshopServerless Machine Learning Workshop
Serverless Machine Learning Workshop
Alex Casalboni
 
Simpler Web Architectures Now! (At The Frontend 2016)
Simpler Web Architectures Now! (At The Frontend 2016)Simpler Web Architectures Now! (At The Frontend 2016)
Simpler Web Architectures Now! (At The Frontend 2016)
Gustaf Nilsson Kotte
 
Serverless + Machine Learning – Bringing the best of two worlds together
Serverless + Machine Learning – Bringing the best of two worlds togetherServerless + Machine Learning – Bringing the best of two worlds together
Serverless + Machine Learning – Bringing the best of two worlds together
Vidyasagar Machupalli
 
Node.js BFFs: our way to better/micro frontends
Node.js BFFs: our way to better/micro frontendsNode.js BFFs: our way to better/micro frontends
Node.js BFFs: our way to better/micro frontends
Eugene Fidelin
 
Meteor + React
Meteor + ReactMeteor + React
Meteor + React
Taggart Bowen-Gaddy
 
Asp.net visual studio 2013
Asp.net   visual studio 2013Asp.net   visual studio 2013
Asp.net visual studio 2013
Tyrone Moodley
 
TUTTO SU VISUAL STUDIO ALM 2015
TUTTO SU VISUAL STUDIO ALM 2015TUTTO SU VISUAL STUDIO ALM 2015
TUTTO SU VISUAL STUDIO ALM 2015
DotNetCampus
 
React Alicante - React Redux a development workflow
React Alicante - React Redux a development workflowReact Alicante - React Redux a development workflow
React Alicante - React Redux a development workflow
Braulio Diez Botella
 
Creating Island Tracker - Xamarin, Azure Functions, Table Storage, & More
Creating Island Tracker - Xamarin, Azure Functions, Table Storage, & MoreCreating Island Tracker - Xamarin, Azure Functions, Table Storage, & More
Creating Island Tracker - Xamarin, Azure Functions, Table Storage, & More
James Montemagno
 
Net Conf Israel - Intro & Building Cloud Native Apps with .NET Core 3.0 and K...
Net Conf Israel - Intro & Building Cloud Native Apps with .NET Core 3.0 and K...Net Conf Israel - Intro & Building Cloud Native Apps with .NET Core 3.0 and K...
Net Conf Israel - Intro & Building Cloud Native Apps with .NET Core 3.0 and K...
Eran Stiller
 
The Apollo and GraphQL Stack
The Apollo and GraphQL StackThe Apollo and GraphQL Stack
The Apollo and GraphQL Stack
Sashko Stubailo
 
Going Serverless with Azure Functions
Going Serverless with Azure FunctionsGoing Serverless with Azure Functions
Going Serverless with Azure Functions
Christos Matskas
 
Google cloud functions
Google cloud functionsGoogle cloud functions
Google cloud functions
Péter Nagy
 
Build 2017 - B8110 - Modernize WinForms and WPF apps with maximum code reuse,...
Build 2017 - B8110 - Modernize WinForms and WPF apps with maximum code reuse,...Build 2017 - B8110 - Modernize WinForms and WPF apps with maximum code reuse,...
Build 2017 - B8110 - Modernize WinForms and WPF apps with maximum code reuse,...
Windows Developer
 
Demand driven applications with om.next and react native
Demand driven applications with om.next and react nativeDemand driven applications with om.next and react native
Demand driven applications with om.next and react native
dvcrn
 
Blazor and Azure Functions - a serverless approach
Blazor and Azure Functions - a serverless approachBlazor and Azure Functions - a serverless approach
Blazor and Azure Functions - a serverless approach
Alex Pshul
 
Serverless in azure
Serverless in azureServerless in azure
Serverless in azure
Veresh Jain
 
Build a Chatbot in Ten Minutes - Dave Kerr - Serverless Summit
Build a Chatbot in Ten Minutes - Dave Kerr - Serverless SummitBuild a Chatbot in Ten Minutes - Dave Kerr - Serverless Summit
Build a Chatbot in Ten Minutes - Dave Kerr - Serverless Summit
CodeOps Technologies LLP
 
Azure Static Web Apps 入門
Azure Static Web Apps 入門Azure Static Web Apps 入門
Azure Static Web Apps 入門
Tsubasa Yoshino
 
Building Tools for the Hadoop Developer
Building Tools for the Hadoop DeveloperBuilding Tools for the Hadoop Developer
Building Tools for the Hadoop Developer
DataWorks Summit
 
Serverless Machine Learning Workshop
Serverless Machine Learning WorkshopServerless Machine Learning Workshop
Serverless Machine Learning Workshop
Alex Casalboni
 
Simpler Web Architectures Now! (At The Frontend 2016)
Simpler Web Architectures Now! (At The Frontend 2016)Simpler Web Architectures Now! (At The Frontend 2016)
Simpler Web Architectures Now! (At The Frontend 2016)
Gustaf Nilsson Kotte
 
Serverless + Machine Learning – Bringing the best of two worlds together
Serverless + Machine Learning – Bringing the best of two worlds togetherServerless + Machine Learning – Bringing the best of two worlds together
Serverless + Machine Learning – Bringing the best of two worlds together
Vidyasagar Machupalli
 
Node.js BFFs: our way to better/micro frontends
Node.js BFFs: our way to better/micro frontendsNode.js BFFs: our way to better/micro frontends
Node.js BFFs: our way to better/micro frontends
Eugene Fidelin
 
Asp.net visual studio 2013
Asp.net   visual studio 2013Asp.net   visual studio 2013
Asp.net visual studio 2013
Tyrone Moodley
 
TUTTO SU VISUAL STUDIO ALM 2015
TUTTO SU VISUAL STUDIO ALM 2015TUTTO SU VISUAL STUDIO ALM 2015
TUTTO SU VISUAL STUDIO ALM 2015
DotNetCampus
 
React Alicante - React Redux a development workflow
React Alicante - React Redux a development workflowReact Alicante - React Redux a development workflow
React Alicante - React Redux a development workflow
Braulio Diez Botella
 
Creating Island Tracker - Xamarin, Azure Functions, Table Storage, & More
Creating Island Tracker - Xamarin, Azure Functions, Table Storage, & MoreCreating Island Tracker - Xamarin, Azure Functions, Table Storage, & More
Creating Island Tracker - Xamarin, Azure Functions, Table Storage, & More
James Montemagno
 
Net Conf Israel - Intro & Building Cloud Native Apps with .NET Core 3.0 and K...
Net Conf Israel - Intro & Building Cloud Native Apps with .NET Core 3.0 and K...Net Conf Israel - Intro & Building Cloud Native Apps with .NET Core 3.0 and K...
Net Conf Israel - Intro & Building Cloud Native Apps with .NET Core 3.0 and K...
Eran Stiller
 
The Apollo and GraphQL Stack
The Apollo and GraphQL StackThe Apollo and GraphQL Stack
The Apollo and GraphQL Stack
Sashko Stubailo
 
Going Serverless with Azure Functions
Going Serverless with Azure FunctionsGoing Serverless with Azure Functions
Going Serverless with Azure Functions
Christos Matskas
 

Similar to Get your mobile app in production in 3 months: Native and Reactive Mobile Apps (20)

Rest web service_with_spring_hateoas
Rest web service_with_spring_hateoasRest web service_with_spring_hateoas
Rest web service_with_spring_hateoas
Zeid Hassan
 
Maciej Treder ''Angular Universal - a medicine for the Angular + SEO/CDN issu...
Maciej Treder ''Angular Universal - a medicine for the Angular + SEO/CDN issu...Maciej Treder ''Angular Universal - a medicine for the Angular + SEO/CDN issu...
Maciej Treder ''Angular Universal - a medicine for the Angular + SEO/CDN issu...
OdessaJS Conf
 
React loadable
React loadableReact loadable
React loadable
George Bukhanov
 
WordCamp Bucharest 2017
WordCamp Bucharest 2017WordCamp Bucharest 2017
WordCamp Bucharest 2017
Alexandra Anghel
 
Vue micro frontend implementation patterns
Vue micro frontend implementation patternsVue micro frontend implementation patterns
Vue micro frontend implementation patterns
Albert Brand
 
Vuejs
VuejsVuejs
Vuejs
Mario Alexandro Santini
 
Angular server side rendering - Strategies & Technics
Angular server side rendering - Strategies & Technics Angular server side rendering - Strategies & Technics
Angular server side rendering - Strategies & Technics
Eliran Eliassy
 
Front End Development for Back End Java Developers - Jfokus 2020
Front End Development for Back End Java Developers - Jfokus 2020Front End Development for Back End Java Developers - Jfokus 2020
Front End Development for Back End Java Developers - Jfokus 2020
Matt Raible
 
Reactive application using meteor
Reactive application using meteorReactive application using meteor
Reactive application using meteor
Sapna Upreti
 
Workshop 27: Isomorphic web apps with ReactJS
Workshop 27: Isomorphic web apps with ReactJSWorkshop 27: Isomorphic web apps with ReactJS
Workshop 27: Isomorphic web apps with ReactJS
Visual Engineering
 
Hybrid application development
Hybrid application developmentHybrid application development
Hybrid application development
Engin Hatay
 
using Mithril.js + postgREST to build and consume API's
using Mithril.js + postgREST to build and consume API'susing Mithril.js + postgREST to build and consume API's
using Mithril.js + postgREST to build and consume API's
Antônio Roberto Silva
 
Magnolia & Angular JS - an Approach for Javascript RIAs Delivered by a CMS
Magnolia & Angular JS - an Approach for Javascript RIAs Delivered by a CMSMagnolia & Angular JS - an Approach for Javascript RIAs Delivered by a CMS
Magnolia & Angular JS - an Approach for Javascript RIAs Delivered by a CMS
Magnolia
 
Integrating React.js Into a PHP Application: Dutch PHP 2019
Integrating React.js Into a PHP Application: Dutch PHP 2019Integrating React.js Into a PHP Application: Dutch PHP 2019
Integrating React.js Into a PHP Application: Dutch PHP 2019
Andrew Rota
 
Reactive Application Using METEOR
Reactive Application Using METEORReactive Application Using METEOR
Reactive Application Using METEOR
NodeXperts
 
JS Fest 2019/Autumn. Александр Товмач. JAMstack
JS Fest 2019/Autumn. Александр Товмач. JAMstackJS Fest 2019/Autumn. Александр Товмач. JAMstack
JS Fest 2019/Autumn. Александр Товмач. JAMstack
JSFestUA
 
vue-storefront - PWA eCommerce for Magento2 MM17NYC presentation
vue-storefront - PWA eCommerce for Magento2 MM17NYC presentationvue-storefront - PWA eCommerce for Magento2 MM17NYC presentation
vue-storefront - PWA eCommerce for Magento2 MM17NYC presentation
Divante
 
Content-Driven Apps with React
Content-Driven Apps with ReactContent-Driven Apps with React
Content-Driven Apps with React
Netcetera
 
Resume new it_format
Resume new it_formatResume new it_format
Resume new it_format
Rajiv Saini
 
MyMobileWeb Certification Part I
MyMobileWeb Certification Part IMyMobileWeb Certification Part I
MyMobileWeb Certification Part I
crdlc
 
Rest web service_with_spring_hateoas
Rest web service_with_spring_hateoasRest web service_with_spring_hateoas
Rest web service_with_spring_hateoas
Zeid Hassan
 
Maciej Treder ''Angular Universal - a medicine for the Angular + SEO/CDN issu...
Maciej Treder ''Angular Universal - a medicine for the Angular + SEO/CDN issu...Maciej Treder ''Angular Universal - a medicine for the Angular + SEO/CDN issu...
Maciej Treder ''Angular Universal - a medicine for the Angular + SEO/CDN issu...
OdessaJS Conf
 
Vue micro frontend implementation patterns
Vue micro frontend implementation patternsVue micro frontend implementation patterns
Vue micro frontend implementation patterns
Albert Brand
 
Angular server side rendering - Strategies & Technics
Angular server side rendering - Strategies & Technics Angular server side rendering - Strategies & Technics
Angular server side rendering - Strategies & Technics
Eliran Eliassy
 
Front End Development for Back End Java Developers - Jfokus 2020
Front End Development for Back End Java Developers - Jfokus 2020Front End Development for Back End Java Developers - Jfokus 2020
Front End Development for Back End Java Developers - Jfokus 2020
Matt Raible
 
Reactive application using meteor
Reactive application using meteorReactive application using meteor
Reactive application using meteor
Sapna Upreti
 
Workshop 27: Isomorphic web apps with ReactJS
Workshop 27: Isomorphic web apps with ReactJSWorkshop 27: Isomorphic web apps with ReactJS
Workshop 27: Isomorphic web apps with ReactJS
Visual Engineering
 
Hybrid application development
Hybrid application developmentHybrid application development
Hybrid application development
Engin Hatay
 
using Mithril.js + postgREST to build and consume API's
using Mithril.js + postgREST to build and consume API'susing Mithril.js + postgREST to build and consume API's
using Mithril.js + postgREST to build and consume API's
Antônio Roberto Silva
 
Magnolia & Angular JS - an Approach for Javascript RIAs Delivered by a CMS
Magnolia & Angular JS - an Approach for Javascript RIAs Delivered by a CMSMagnolia & Angular JS - an Approach for Javascript RIAs Delivered by a CMS
Magnolia & Angular JS - an Approach for Javascript RIAs Delivered by a CMS
Magnolia
 
Integrating React.js Into a PHP Application: Dutch PHP 2019
Integrating React.js Into a PHP Application: Dutch PHP 2019Integrating React.js Into a PHP Application: Dutch PHP 2019
Integrating React.js Into a PHP Application: Dutch PHP 2019
Andrew Rota
 
Reactive Application Using METEOR
Reactive Application Using METEORReactive Application Using METEOR
Reactive Application Using METEOR
NodeXperts
 
JS Fest 2019/Autumn. Александр Товмач. JAMstack
JS Fest 2019/Autumn. Александр Товмач. JAMstackJS Fest 2019/Autumn. Александр Товмач. JAMstack
JS Fest 2019/Autumn. Александр Товмач. JAMstack
JSFestUA
 
vue-storefront - PWA eCommerce for Magento2 MM17NYC presentation
vue-storefront - PWA eCommerce for Magento2 MM17NYC presentationvue-storefront - PWA eCommerce for Magento2 MM17NYC presentation
vue-storefront - PWA eCommerce for Magento2 MM17NYC presentation
Divante
 
Content-Driven Apps with React
Content-Driven Apps with ReactContent-Driven Apps with React
Content-Driven Apps with React
Netcetera
 
Resume new it_format
Resume new it_formatResume new it_format
Resume new it_format
Rajiv Saini
 
MyMobileWeb Certification Part I
MyMobileWeb Certification Part IMyMobileWeb Certification Part I
MyMobileWeb Certification Part I
crdlc
 

Recently uploaded (20)

Dev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath MaestroDev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
UiPathCommunity
 
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdfThe Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
Abi john
 
How analogue intelligence complements AI
How analogue intelligence complements AIHow analogue intelligence complements AI
How analogue intelligence complements AI
Paul Rowe
 
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven InsightsAndrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell
 
HCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser EnvironmentsHCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser Environments
panagenda
 
Heap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and DeletionHeap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and Deletion
Jaydeep Kale
 
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptxSpecial Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
shyamraj55
 
Mobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi ArabiaMobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi Arabia
Steve Jonas
 
Big Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur MorganBig Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur Morgan
Arthur Morgan
 
Role of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered ManufacturingRole of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered Manufacturing
Andrew Leo
 
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Impelsys Inc.
 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
 
Build Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For DevsBuild Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For Devs
Brian McKeiver
 
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdfComplete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Software Company
 
Electronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploitElectronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploit
niftliyevhuseyn
 
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
BookNet Canada
 
Semantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AISemantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AI
artmondano
 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
 
Cybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure ADCybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure AD
VICTOR MAESTRE RAMIREZ
 
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep DiveDesigning Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
ScyllaDB
 
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath MaestroDev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
UiPathCommunity
 
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdfThe Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
Abi john
 
How analogue intelligence complements AI
How analogue intelligence complements AIHow analogue intelligence complements AI
How analogue intelligence complements AI
Paul Rowe
 
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven InsightsAndrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell
 
HCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser EnvironmentsHCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser Environments
panagenda
 
Heap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and DeletionHeap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and Deletion
Jaydeep Kale
 
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptxSpecial Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
shyamraj55
 
Mobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi ArabiaMobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi Arabia
Steve Jonas
 
Big Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur MorganBig Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur Morgan
Arthur Morgan
 
Role of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered ManufacturingRole of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered Manufacturing
Andrew Leo
 
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Impelsys Inc.
 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
 
Build Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For DevsBuild Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For Devs
Brian McKeiver
 
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdfComplete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Software Company
 
Electronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploitElectronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploit
niftliyevhuseyn
 
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
BookNet Canada
 
Semantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AISemantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AI
artmondano
 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
 
Cybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure ADCybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure AD
VICTOR MAESTRE RAMIREZ
 
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep DiveDesigning Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
ScyllaDB
 

Get your mobile app in production in 3 months: Native and Reactive Mobile Apps

  • 1. Web frontend is an app too! Jakub Baierl
  • 2. Before Using MVP frameworks - PHP Symfony, Nette, Laravel, Wordpress Non static websites - web frontend dependent of backend Web frontend as a part of backend - only templates, no possibility of code reusing, no flexibility Slow performance Hard build and deploy process - installing packages for whole system
  • 3. Now Simple Scalability - few files hosted even on different server, focus on my application - not whole infrastructure Communication via API Modularity - more suitables technologies for different problems Increased Flexibility - using API for web, mobile app, public expose Separate build and deploy
  • 4. How to choose the right technology?
  • 15. Who will win? Client’s wish, common sense or our pride? Web frontend is independent -> huge market of frameworks & libs Constant changes or hard resets on dev stacks Build app on unsuitable technology
  • 17. Requirements Administrative part - fetching data from API, huge number of forms, dynamic part - graphs, sorting lists, maps
  • 18. Requirements Administrative part - fetching data from API, huge number of forms, dynamic part - graphs, sorting lists, maps
  • 19. Requirements Client app - fetching data from API, loading data once (mobile app base), temporary saving data, custom responsive layout, SEO
  • 20. Requirements Client app - fetching data from API, loading data once (mobile app base), temporary saving data, custom responsive layout, SEO
  • 21. Prepared packages Static websites - pure HTML, SASS, JS Static websites with support of multiple languages or dynamic elements or SEO - Middleman generator of static sites Dynamic websites with fast communication with API - React (server rendering for seo), Webpack Nonpublic administration (internal) systems - React, Webpack, Redux
  • 22. Choose from the magic pouch
  • 23. Chosen heroes React - Layout, Components, App structure, Server-rendering (microsite) Fetch API - Getting data from API Redux - Data flow, App state Sass - CSS preprocessor, design
  • 24. React component-based javascript library only for user interface prepared events - onClick, onHover virtual DOM
  • 25. Containers class CarContainer extends Component { constructor(props) { super(props); } render = () => { return ( <Loader show={this.props.isFetching}> {this.props.car ? <CarComponent car={car}/> : null} </Loader> ); } } export default connect(state => ({ isFetching: state.carIsFetching, car: state.car, }), (dispatch) => ({ carActions: bindActionCreators(carActions, dispatch) }) )(CarContainer);
  • 26. Components class CarComponent extends Component { constructor(props) { super(props); }; componentWillMount () {} componentDidMount () {} render() { return ( <div> <p>{this.props.car.name}</p> </div> ); }; }; export default CarComponent;
  • 27. Managing data stop using carcinogenic CALLBACKS button -> click ->wait for callback ….. confusion NOW -> unidirectional data flow -> button -> click -> make action -> change application state -> components reload
  • 28. Redux
  • 29. CSS before Huge files No code reusing Non-objective No flexibility - change color of app - change on 100 lines —> use CSS preprocessors - Less, Sass, Stylus
  • 30. Sass now! Variables Nesting Mixins - code reusing Imports - different libraries Math - width: (100%+35) Simply awesome <3
  • 31. Variables & Nesting //Prague open fesival 2017 $main_colour_1: #0C4D78 $main_colour_2: #0f4064  $second_colour: #F7966B $bg_colour: #ffffff $contrast_colour: #000000 $text_colour_1: #000000 $text_colour_2: #ffffff ===================================================== // Testing of sass loader @import "../../common.sass" @import "../../../../variables.sass" .Header background-color: $main_colour_1 &-logo float: left img width: 100%
  • 32. Building the web app Transpiling to browser language - from JSX, ES6 … Translate Sass files to CSS files Livereloading - realtime watching for changes and reloading app Different data for development and production Tools: Gulp, Grunt, Webpack
  • 33. module bundler dependency graph -> bundles -> browser can load it building watching transpiling extracting minifying uglyfying livereload support development vs. production Webpack
  • 34. var Webpack = require('webpack'); var LiveReloadPlugin = require('webpack-livereload-plugin'); var GlobalConfig = require('./config_global.js'); module.exports = { entry: "./src/ui/module.js", output: { path: "./"+process.env.NAME, filename: "bundle.js" }, module: { loaders: [ { test: /.js$/, exclude: /node_modules/, loader: 'babel-loader', query: { presets: ['react'] } }, { test: /.sass$/, loader: 'style!css!sass?indentedSyntax' }, { test: /.css$/, loader: "style!css" }, { test: /.(png|gif)$/, loader: "url?mimetype=image/[ext]&limit=10000" } ] }, plugins: [ new LiveReloadPlugin(), new webpack.optimize.UglifyJsPlugin({ compress: { warnings: false, }, }),
  • 35. build native mobile apps with javascript! using native blocks (java, obj-c) compose blocks using JS best solution for specific applications React Native render() { const rows = this.state.news.map((row, ii) => { return <Row key={ii} data={row.data}/>; }); return ( <ScrollView style={styles.scrollview} refreshControl={ <RefreshControl refreshing={this.props.isFetching} onRefresh={this._onRefresh} tintColor="#1b1b1b" title="Loading..." titleColor="#1b1b1b" colors={['#ff0000', '#00ff00', '#0000ff']} progressBackgroundColor="#ffed00" /> }> {rows} </ScrollView> ); }
  • 36. Advanced topic Hosting react apps - Google Storage Bucket Redux sagas and middleware React native routing - using native controllers