SlideShare uma empresa Scribd logo
1 de 16
Baixar para ler offline
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

Mais conteúdo relacionado

Destaque

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.
 

Destaque (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
 

Último

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
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
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
 
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
 
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
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfkalichargn70th171
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
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
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
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
 
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
 
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.
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 

Último (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 ...
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
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
 
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...
 
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
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
Exploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the ProcessExploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the Process
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
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
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
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
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
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 ☂️
 
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 ...
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 

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