SlideShare ist ein Scribd-Unternehmen logo
1 von 16
Downloaden Sie, um offline zu lesen
Crawlers and Web UI
with full stack JS
What is Oppex?
• World’s largest source of public sector
bidding contests
• Crawl and scrape thousands of bidding
contest from hundreds of sources globally
every day
Stack
NodeJS
Solr MongoDB
React Flux
NodeJS + Express
Oppex Engine
Oppex UI
Oppex Engine
• Crawlers
• Postprocessors
• Data storage
• Notifications
• Infrastructure
Oppex Engine
• Crawlers
• Postprocessors
• Data storage
• Notifications
• Infrastructure
• Clustered Node.js workers
• Kue + Redis for job queues
• Pre-defined crawler
strategies
• Reverse html templates
Oppex Engine
• Crawlers
• Postprocessors
• Data storage
• Notifications
• Infrastructure
• Translation via Google
Translate API & Yandex
Translate API
• Geocoding Google Places API
& MapQuest API
• Currency parsing, email &
phone extraction etc.
Oppex Engine
• Crawlers
• Postprocessors
• Data storage
• Notifications
• Infrastructure
• MongoDB for raw data
storage
• Solr for search indexing
Oppex Engine
• Crawlers
• Postprocessors
• Data storage
• Notifications
• Infrastructure
• User-saved Solr queries ran
at predefined intervals
• Mandrill for emails
• Socket.io
Oppex Engine
• Crawlers
• Postprocessors
• Data storage
• Notifications
• Infrastructure
• Docker virtualization
• Backups to AWS S3 + Glacier
• Logstash for logging
• Elasticsearch + Kibana for
monitoring
• Automated deployment
scripts
Oppex UI
• React + Flux
• Babel
• Webpack
• Immutable.js
• Stylus
Oppex UI
• React + Flux
• Babel
• Webpack
• Immutable.js
• Stylus
• Great for large and
complex apps
• Stop fiddling with DOM
• Encourages modular design
• Ensures data integrity across
the app
Oppex UI
• React + Flux
• Babel
• Webpack
• Immutable.js
• Stylus
• Turns ES6 code into ES5
• Imports
• Classes
• Arrow functions
• Promises
Oppex UI
• React + Flux
• Babel
• Webpack
• Immutable.js
• Stylus
• Isomorphic apps
• CommonJS or Bower even on
client
• Hot reload for client code or
stylesheets
Oppex UI
• React + Flux
• Babel
• Webpack
• Immutable.js
• Stylus
• Never copy objects/
collections ever again
• Deep trees with easy access
to nodes
• Lazy Seq for chaining
collection methods without
intermediate stage
Oppex UI
• React + Flux
• Babel
• Webpack
• Immutable.js
• Stylus
• The best css preprocessor
• More logic processing than
Less
• Pure Node, no Ruby required
unlike Sass
Thank you!
• Mikko Lehmuskoski
• mikko@oppex.com
• +358 40 750 8307

Weitere ähnliche Inhalte

Andere mochten auch

Introduction To Single Page Application
Introduction To Single Page ApplicationIntroduction To Single Page Application
Introduction To Single Page ApplicationKMS Technology
 
AngularJS 101 - Everything you need to know to get started
AngularJS 101 - Everything you need to know to get startedAngularJS 101 - Everything you need to know to get started
AngularJS 101 - Everything you need to know to get startedStéphane Bégaudeau
 
AngularJS Architecture
AngularJS ArchitectureAngularJS Architecture
AngularJS ArchitectureEyal Vardi
 
AngularJS application architecture
AngularJS application architectureAngularJS application architecture
AngularJS application architectureGabriele Falace
 
Introduction to Angular 2
Introduction to Angular 2Introduction to Angular 2
Introduction to Angular 2Knoldus Inc.
 

Andere mochten auch (8)

Introduction To Single Page Application
Introduction To Single Page ApplicationIntroduction To Single Page Application
Introduction To Single Page Application
 
MEAN Stack
MEAN StackMEAN Stack
MEAN Stack
 
AngularJS 101 - Everything you need to know to get started
AngularJS 101 - Everything you need to know to get startedAngularJS 101 - Everything you need to know to get started
AngularJS 101 - Everything you need to know to get started
 
AngularJS Architecture
AngularJS ArchitectureAngularJS Architecture
AngularJS Architecture
 
AngularJS application architecture
AngularJS application architectureAngularJS application architecture
AngularJS application architecture
 
AngularJS Basics with Example
AngularJS Basics with ExampleAngularJS Basics with Example
AngularJS Basics with Example
 
Introduction to Angularjs
Introduction to AngularjsIntroduction to Angularjs
Introduction to Angularjs
 
Introduction to Angular 2
Introduction to Angular 2Introduction to Angular 2
Introduction to Angular 2
 

Kürzlich hochgeladen

Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsChristian Birchler
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringHironori Washizaki
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz Chruściel
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceBrainSell Technologies
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Angel Borroy López
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Cizo Technology Services
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Natan Silnitsky
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfFerryKemperman
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commercemanigoyal112
 
cpct NetworkING BASICS AND NETWORK TOOL.ppt
cpct NetworkING BASICS AND NETWORK TOOL.pptcpct NetworkING BASICS AND NETWORK TOOL.ppt
cpct NetworkING BASICS AND NETWORK TOOL.pptrcbcrtm
 

Kürzlich hochgeladen (20)

Odoo Development Company in India | Devintelle Consulting Service
Odoo Development Company in India | Devintelle Consulting ServiceOdoo Development Company in India | Devintelle Consulting Service
Odoo Development Company in India | Devintelle Consulting Service
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their Engineering
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. Salesforce
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
 
2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdf
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commerce
 
cpct NetworkING BASICS AND NETWORK TOOL.ppt
cpct NetworkING BASICS AND NETWORK TOOL.pptcpct NetworkING BASICS AND NETWORK TOOL.ppt
cpct NetworkING BASICS AND NETWORK TOOL.ppt
 

Crawlers and Web UI with full stack JS - PiterJS #1

  • 1. Crawlers and Web UI with full stack JS
  • 2. What is Oppex? • World’s largest source of public sector bidding contests • Crawl and scrape thousands of bidding contest from hundreds of sources globally every day
  • 3. Stack NodeJS Solr MongoDB React Flux NodeJS + Express Oppex Engine Oppex UI
  • 4. Oppex Engine • Crawlers • Postprocessors • Data storage • Notifications • Infrastructure
  • 5. Oppex Engine • Crawlers • Postprocessors • Data storage • Notifications • Infrastructure • Clustered Node.js workers • Kue + Redis for job queues • Pre-defined crawler strategies • Reverse html templates
  • 6. Oppex Engine • Crawlers • Postprocessors • Data storage • Notifications • Infrastructure • Translation via Google Translate API & Yandex Translate API • Geocoding Google Places API & MapQuest API • Currency parsing, email & phone extraction etc.
  • 7. Oppex Engine • Crawlers • Postprocessors • Data storage • Notifications • Infrastructure • MongoDB for raw data storage • Solr for search indexing
  • 8. Oppex Engine • Crawlers • Postprocessors • Data storage • Notifications • Infrastructure • User-saved Solr queries ran at predefined intervals • Mandrill for emails • Socket.io
  • 9. Oppex Engine • Crawlers • Postprocessors • Data storage • Notifications • Infrastructure • Docker virtualization • Backups to AWS S3 + Glacier • Logstash for logging • Elasticsearch + Kibana for monitoring • Automated deployment scripts
  • 10. Oppex UI • React + Flux • Babel • Webpack • Immutable.js • Stylus
  • 11. Oppex UI • React + Flux • Babel • Webpack • Immutable.js • Stylus • Great for large and complex apps • Stop fiddling with DOM • Encourages modular design • Ensures data integrity across the app
  • 12. Oppex UI • React + Flux • Babel • Webpack • Immutable.js • Stylus • Turns ES6 code into ES5 • Imports • Classes • Arrow functions • Promises
  • 13. Oppex UI • React + Flux • Babel • Webpack • Immutable.js • Stylus • Isomorphic apps • CommonJS or Bower even on client • Hot reload for client code or stylesheets
  • 14. Oppex UI • React + Flux • Babel • Webpack • Immutable.js • Stylus • Never copy objects/ collections ever again • Deep trees with easy access to nodes • Lazy Seq for chaining collection methods without intermediate stage
  • 15. Oppex UI • React + Flux • Babel • Webpack • Immutable.js • Stylus • The best css preprocessor • More logic processing than Less • Pure Node, no Ruby required unlike Sass
  • 16. Thank you! • Mikko Lehmuskoski • mikko@oppex.com • +358 40 750 8307