SlideShare a Scribd company logo
Moving Beyond WordPress
at Tech in Asia
- Lester & Melvin
T
Tech in Asia (YC W2015) is a media, events, and jobs platform
for Asia’s tech communities.
We are a team of 100 across 12 cities in the region
spanning editorial, product, community and events functions.
About Tech in Asia
History of WordPress at Tech in
Asia
● Tech in Asia is 5 years old
● Back then Tech in Asia was known as Penn Olson
● Been on WordPress since the start
● Using a customized WordPress theme (not using any theme
framework)
● Most features are custom coded plugins. Third-party plugins just
doesn’t scale well and didn’t meet our requirements.
Walking Down Memory Lane
18th August 2014
Product Team Formed
Walking Down Memory Lane
27th October 2014
List View
Walking Down Memory Lane
17th October 2014
Trending Articles / Member System
Walking Down Memory Lane
20th April 2015
Added Facebook & Google Login
Walking Down Memory Lane
28th May 2015
User Generated Content / Upvoting
Articles
Walking Down Memory Lane
17th August 2015
Whiter, Flatter, Sleeker Design
Walking Down Memory Lane
16th December 2015
Major Redesign Using WP API And React
Walking Down Memory Lane
31st May 2016
Jobs
WordPress as our Back-end
WordPress as our Back-end
WordPress API
● WordPress REST API infrastructure was in WordPress core since
WordPress 4.4 (8th December 2015)
● Prior to WordPress 4.4, we have been testing WordPress REST
API Plugin (https://wordpress.org/plugins/rest-api/) in preparation
for the release
● We are not using the default namespace provided by the plugin
○ Eg: /wp-json/wp/v2/posts
● We are using our own namespace with our own payload format
○ Eg: /wp-json/techinasia/2.0/posts
Namespace / Version / Payload Format
● Namespace /techinasia/
○ Avoid conflicts
○ Our own identity
● Version /2.0/
○ We used “2.0” instead of “v2”
■ Float for easy validation
● Payload
○ Only return what the client needs
○ Standardized payload format and pagination format
○ Eg: https://www.techinasia.com/wp-json/techinasia/2.0/posts
The Move To WordPress API
● Unified API
○ Same API for web, iOS and Android
● Service-Oriented Architecture (SOA)
○ Laravel used for Startups & Jobs database
○ WordPress used for Editorial & Community content
● Separation of concerns
○ FE engineers need not touch API and vice versa
● Hiring
○ Easier to hire a JS guy to implement an API then a
WordPress engineer
Features
● Can’t use most of the WordPress plugins
○ Custom coded feature as a plugin
■ Comment upvoting, notification, registration, login
● 3rd party plugins mainly backend related
○ AMP, Google XML Sitemaps, Instant Articles, Redis Object
Cache, TinyMCE Advanced
Services
● Impossible to built everything ourselves
● Search in WordPress is horrible
○ Google Custom Search
○ https://developers.google.com/custom-search/
● Jetpack Notification is a closed service
○ Stream
○ https://getstream.io/
● Jetpack Proton doesn’t work for our use-case
○ Kraken
○ https://kraken.io/
Authentication, Authorization and
Session
● Deal with Authentication, Authorization and Session management
● Authentication / Authorization
○ WordPress
○ wp_signon() and user_can() function
● Session
○ Data stored in Redis
○ Overwrite WP session data with “determine_current_user”
filter
○ Session information is set in cookie in the browser
○ Cookie sent along with API request (web) or via Authorization
Rate Limiting / Caching
● API is open, prone to abuse
● Rate limiting GET / PUT / POST requests
○ Discourage spamming
○ Return 429 Too Many Requests when that happens
● Caching
○ Most of our users are “logged out” which makes caching easy
○ Most GET requests should be cached
○ Even a 1-minute cache would help for a heavy traffic site like
TIA
Future?
● Editorial CMS like Automattic’s Calypso
○ Bypass WP-Admin
○ Desktop app using React with Electron
○ Customized to our editor’s workflow
○ More APIs needed
React as our Front-end
React as our Front-end
Choosing a front-end framework
● 2015 was an interesting year for front-end development.
○ React’s popularity exploded.
○ Angular 2 was being announced; not fully backward
compatible with Angular 1.
○ ES2015 - the most significant upgrade to JavaScript was
finalised in June.
React’s Virtual DOM
Credits: http://calendar.perfplanet.com/2013/diff/
WordPress Theme Template
React’s JSX Syntax
React Ops Stuff
● Babel (https://babeljs.io/)
○ Transpile JSX and ES2015+ code to ES5
● webpack (http://webpack.github.io/)
○ Module bundler (with a lot of magic)
○ Code splitting
○ Hot reloading
Flux Architecture
● An architecture to manage data between different views
● Data travels in a unidirectional flow
● Many variants of Flux - Redux is currently the most popular
Credits: https://code-cartoons.com/a-cartoon-guide-to-flux-6157355ab207
Routing with React
● Routing separate from WordPress
● Using react-router (https://github.com/reactjs/react-router)
● How do we handle pretty permalinks?
(https://www.techinasia.com/%postname%)
○ Custom WP REST API that takes in the slug
○ Call the API that returns the post object
○ Get post type from the object
○ Render the correct component accordingly (page / post)
Search Engine Optimization
● SPA + SEO don’t really go well together
○ Not all search engines can “understand” JavaScript
● One trick: take a “screenshot” of the page
○ Service: Prerender.io (https://prerender.io/)
● Dynamically adding meta tags into the document:
○ react-helmet (https://github.com/nfl/react-helmet)
Tips on Starting out React
● Cover the basics without the ops part:
https://facebook.github.io/react/docs/getting-started.html
● Start with a good boilerplate (react-boilerplate)
● Learn JavaScript (ES2015+)
○ Challenge: Functional Programming with JS
Free book: https://leanpub.com/javascriptallongesix
● Redux: https://egghead.io/courses/getting-started-with-redux
Any Questions?
The End

More Related Content

PPTX
Scaling Tech in Asia
PPTX
WP-ShowHide
PPTX
Novmeber 2015 WordPress News 'n' Stuff
PDF
WordPress Theme Reviewers Team
PDF
Moving from PHP to a nodejs full stack CMS
PPTX
After the LAMP, it's time to get MEAN
PPTX
Angular.js in XPages
PPTX
Introduction to Web Technology Stacks
Scaling Tech in Asia
WP-ShowHide
Novmeber 2015 WordPress News 'n' Stuff
WordPress Theme Reviewers Team
Moving from PHP to a nodejs full stack CMS
After the LAMP, it's time to get MEAN
Angular.js in XPages
Introduction to Web Technology Stacks

What's hot (20)

PPTX
Iconus 2016
PPT
Building a scalable infrastructure for social mobile web apps
PDF
Microsoft, Web Standards and OSS
PDF
Tech Stack Ideas
PPTX
What is a good technology stack today?
PPTX
Evolution / History of ASP.NET
PPTX
Salesforce Apex Hours : Node red for salesforce
PDF
WordPress as a Service
PPTX
Testing your Single Page Application
PPTX
Creating Custom HTML Helpers in ASP.NET MVC
PPTX
Migration from ASP.NET MVC to ASP.NET Core
PDF
Being With Rails App For 3 Years
PPTX
Office script labs
PDF
IBM Domino Modernizing apps with Angularjs
PDF
Coding with jetpack
PDF
Asp.Net 3 5 Part 1
PDF
Building a community of Open Source intranet users
PPTX
Developing Cross-Platform Web Apps with ASP.NET Core1.0
PPTX
Technology Stack Discussion
Iconus 2016
Building a scalable infrastructure for social mobile web apps
Microsoft, Web Standards and OSS
Tech Stack Ideas
What is a good technology stack today?
Evolution / History of ASP.NET
Salesforce Apex Hours : Node red for salesforce
WordPress as a Service
Testing your Single Page Application
Creating Custom HTML Helpers in ASP.NET MVC
Migration from ASP.NET MVC to ASP.NET Core
Being With Rails App For 3 Years
Office script labs
IBM Domino Modernizing apps with Angularjs
Coding with jetpack
Asp.Net 3 5 Part 1
Building a community of Open Source intranet users
Developing Cross-Platform Web Apps with ASP.NET Core1.0
Technology Stack Discussion
Ad

Similar to Moving Beyond WordPress At Tech in Asia (20)

PDF
WordPress Tallahassee Meetup: Turning WordPress Sites Into Web & Mobile Apps
PDF
Design Summit - Technology Vision - Oleg Barenboim and Jason Frey
PDF
APIs for mobile
PDF
JIO and WebViewers: interoperability for Javascript and Web Applications
PDF
#RADC4L16: An API-First Archives Approach at NPR
DOC
Aditya raj cv
PDF
"Top Digital Marketing Services to Boost Your Business Growth"
PDF
Scaling WordPress - Project Lana WordPress Team
PDF
VN Tech Seminor Vol.1
PDF
How we leveraged Drupal to build a leading SaaS product
PDF
Scaling Wordpress
PDF
Server Side React for WordPress by Muhammad Muhsin @ The JavaScript for WordP...
PDF
Mean Stack - An Overview
PDF
Angular (v2 and up) - Morning to understand - Linagora
PDF
The Decoupled CMS in Financial Services
PDF
Laskar: High-Velocity GraphQL & Lambda-based Software Development Model
PDF
Visual, scalable, and manageable data loading to and from Neo4j with Apache Hop
PDF
[AWS DC Meetup] Not Your Father’s WebApp: The Cloud-Native Architecture of im...
PDF
Google Cloud Platform Update
PDF
GlueCon 2015 - How REST APIs can glue all types of devices together
WordPress Tallahassee Meetup: Turning WordPress Sites Into Web & Mobile Apps
Design Summit - Technology Vision - Oleg Barenboim and Jason Frey
APIs for mobile
JIO and WebViewers: interoperability for Javascript and Web Applications
#RADC4L16: An API-First Archives Approach at NPR
Aditya raj cv
"Top Digital Marketing Services to Boost Your Business Growth"
Scaling WordPress - Project Lana WordPress Team
VN Tech Seminor Vol.1
How we leveraged Drupal to build a leading SaaS product
Scaling Wordpress
Server Side React for WordPress by Muhammad Muhsin @ The JavaScript for WordP...
Mean Stack - An Overview
Angular (v2 and up) - Morning to understand - Linagora
The Decoupled CMS in Financial Services
Laskar: High-Velocity GraphQL & Lambda-based Software Development Model
Visual, scalable, and manageable data loading to and from Neo4j with Apache Hop
[AWS DC Meetup] Not Your Father’s WebApp: The Cloud-Native Architecture of im...
Google Cloud Platform Update
GlueCon 2015 - How REST APIs can glue all types of devices together
Ad

Recently uploaded (20)

PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
solutions_manual_-_materials___processing_in_manufacturing__demargo_.pdf
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
NewMind AI Monthly Chronicles - July 2025
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
cuic standard and advanced reporting.pdf
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PPT
Teaching material agriculture food technology
PDF
Empathic Computing: Creating Shared Understanding
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
GDG Cloud Iasi [PUBLIC] Florian Blaga - Unveiling the Evolution of Cybersecur...
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PDF
Advanced IT Governance
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
solutions_manual_-_materials___processing_in_manufacturing__demargo_.pdf
Network Security Unit 5.pdf for BCA BBA.
NewMind AI Monthly Chronicles - July 2025
The Rise and Fall of 3GPP – Time for a Sabbatical?
Per capita expenditure prediction using model stacking based on satellite ima...
“AI and Expert System Decision Support & Business Intelligence Systems”
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
CIFDAQ's Market Insight: SEC Turns Pro Crypto
Reach Out and Touch Someone: Haptics and Empathic Computing
cuic standard and advanced reporting.pdf
Diabetes mellitus diagnosis method based random forest with bat algorithm
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
Teaching material agriculture food technology
Empathic Computing: Creating Shared Understanding
Advanced methodologies resolving dimensionality complications for autism neur...
GDG Cloud Iasi [PUBLIC] Florian Blaga - Unveiling the Evolution of Cybersecur...
Dropbox Q2 2025 Financial Results & Investor Presentation
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
Advanced IT Governance

Moving Beyond WordPress At Tech in Asia

  • 1. Moving Beyond WordPress at Tech in Asia - Lester & Melvin T
  • 2. Tech in Asia (YC W2015) is a media, events, and jobs platform for Asia’s tech communities. We are a team of 100 across 12 cities in the region spanning editorial, product, community and events functions. About Tech in Asia
  • 3. History of WordPress at Tech in Asia ● Tech in Asia is 5 years old ● Back then Tech in Asia was known as Penn Olson ● Been on WordPress since the start ● Using a customized WordPress theme (not using any theme framework) ● Most features are custom coded plugins. Third-party plugins just doesn’t scale well and didn’t meet our requirements.
  • 4. Walking Down Memory Lane 18th August 2014 Product Team Formed
  • 5. Walking Down Memory Lane 27th October 2014 List View
  • 6. Walking Down Memory Lane 17th October 2014 Trending Articles / Member System
  • 7. Walking Down Memory Lane 20th April 2015 Added Facebook & Google Login
  • 8. Walking Down Memory Lane 28th May 2015 User Generated Content / Upvoting Articles
  • 9. Walking Down Memory Lane 17th August 2015 Whiter, Flatter, Sleeker Design
  • 10. Walking Down Memory Lane 16th December 2015 Major Redesign Using WP API And React
  • 11. Walking Down Memory Lane 31st May 2016 Jobs
  • 12. WordPress as our Back-end WordPress as our Back-end
  • 13. WordPress API ● WordPress REST API infrastructure was in WordPress core since WordPress 4.4 (8th December 2015) ● Prior to WordPress 4.4, we have been testing WordPress REST API Plugin (https://wordpress.org/plugins/rest-api/) in preparation for the release ● We are not using the default namespace provided by the plugin ○ Eg: /wp-json/wp/v2/posts ● We are using our own namespace with our own payload format ○ Eg: /wp-json/techinasia/2.0/posts
  • 14. Namespace / Version / Payload Format ● Namespace /techinasia/ ○ Avoid conflicts ○ Our own identity ● Version /2.0/ ○ We used “2.0” instead of “v2” ■ Float for easy validation ● Payload ○ Only return what the client needs ○ Standardized payload format and pagination format ○ Eg: https://www.techinasia.com/wp-json/techinasia/2.0/posts
  • 15. The Move To WordPress API ● Unified API ○ Same API for web, iOS and Android ● Service-Oriented Architecture (SOA) ○ Laravel used for Startups & Jobs database ○ WordPress used for Editorial & Community content ● Separation of concerns ○ FE engineers need not touch API and vice versa ● Hiring ○ Easier to hire a JS guy to implement an API then a WordPress engineer
  • 16. Features ● Can’t use most of the WordPress plugins ○ Custom coded feature as a plugin ■ Comment upvoting, notification, registration, login ● 3rd party plugins mainly backend related ○ AMP, Google XML Sitemaps, Instant Articles, Redis Object Cache, TinyMCE Advanced
  • 17. Services ● Impossible to built everything ourselves ● Search in WordPress is horrible ○ Google Custom Search ○ https://developers.google.com/custom-search/ ● Jetpack Notification is a closed service ○ Stream ○ https://getstream.io/ ● Jetpack Proton doesn’t work for our use-case ○ Kraken ○ https://kraken.io/
  • 18. Authentication, Authorization and Session ● Deal with Authentication, Authorization and Session management ● Authentication / Authorization ○ WordPress ○ wp_signon() and user_can() function ● Session ○ Data stored in Redis ○ Overwrite WP session data with “determine_current_user” filter ○ Session information is set in cookie in the browser ○ Cookie sent along with API request (web) or via Authorization
  • 19. Rate Limiting / Caching ● API is open, prone to abuse ● Rate limiting GET / PUT / POST requests ○ Discourage spamming ○ Return 429 Too Many Requests when that happens ● Caching ○ Most of our users are “logged out” which makes caching easy ○ Most GET requests should be cached ○ Even a 1-minute cache would help for a heavy traffic site like TIA
  • 20. Future? ● Editorial CMS like Automattic’s Calypso ○ Bypass WP-Admin ○ Desktop app using React with Electron ○ Customized to our editor’s workflow ○ More APIs needed
  • 21. React as our Front-end React as our Front-end
  • 22. Choosing a front-end framework ● 2015 was an interesting year for front-end development. ○ React’s popularity exploded. ○ Angular 2 was being announced; not fully backward compatible with Angular 1. ○ ES2015 - the most significant upgrade to JavaScript was finalised in June.
  • 23. React’s Virtual DOM Credits: http://calendar.perfplanet.com/2013/diff/
  • 26. React Ops Stuff ● Babel (https://babeljs.io/) ○ Transpile JSX and ES2015+ code to ES5 ● webpack (http://webpack.github.io/) ○ Module bundler (with a lot of magic) ○ Code splitting ○ Hot reloading
  • 27. Flux Architecture ● An architecture to manage data between different views ● Data travels in a unidirectional flow ● Many variants of Flux - Redux is currently the most popular Credits: https://code-cartoons.com/a-cartoon-guide-to-flux-6157355ab207
  • 28. Routing with React ● Routing separate from WordPress ● Using react-router (https://github.com/reactjs/react-router) ● How do we handle pretty permalinks? (https://www.techinasia.com/%postname%) ○ Custom WP REST API that takes in the slug ○ Call the API that returns the post object ○ Get post type from the object ○ Render the correct component accordingly (page / post)
  • 29. Search Engine Optimization ● SPA + SEO don’t really go well together ○ Not all search engines can “understand” JavaScript ● One trick: take a “screenshot” of the page ○ Service: Prerender.io (https://prerender.io/) ● Dynamically adding meta tags into the document: ○ react-helmet (https://github.com/nfl/react-helmet)
  • 30. Tips on Starting out React ● Cover the basics without the ops part: https://facebook.github.io/react/docs/getting-started.html ● Start with a good boilerplate (react-boilerplate) ● Learn JavaScript (ES2015+) ○ Challenge: Functional Programming with JS Free book: https://leanpub.com/javascriptallongesix ● Redux: https://egghead.io/courses/getting-started-with-redux