SlideShare uma empresa Scribd logo
1 de 41
SilverStripe & Vue.js
Payload Injection for a hybrid frontend approach
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
SilverStripers since 2009 (v2.3.x  )
Small team: 2 1/2 Devs
MVP Development for StartUps
Our tools of choice:
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
Vue.js GitHub Facts
A progressive, incrementally­adoptable JavaScript framework for building UI on the web.
Version 2.5.17 (228 Releases)
2.617 Commits
193 Contributors
~115k Stars
~16k Forks
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
Trivia
Developed as Rapid Prototyping Tool at Google Creative Labs
Super flexible: Usage from library­ to full stack approach
Easy to get started due to a flat learning curve
Implements the Reactive Data­Binding Pattern
Approx as fast as React when it comes to Rendering
0 prod dependencies!
Can be used alongside other libraries or frameworks, e.g. to enhance legacy system
(jQuery... cough...)
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
Patterns & Features
MVVM
Virtual DOM
Components
Directives
Filter
Computed Properties
Lifecycle Hooks
Routing
Flux/Data­Store implementation ("Vuex")
SSR
...
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
Vue.js Instance
...with minimal config:
new Vue({
el: '#app',
data: {
message: 'Welcome to StripeCon EU 2018!'
}
});
<div id="app">
<span>{{ message }}</span>
</div>
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
Vue.js Instance
MVVM implementation with reactive bindings.
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
Anatomy
A Vue.js App can be considered as composition of components with a clear top­to­bottom
hierarchy.
Public APIs for component­2­component interaction.
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
(Simplified) Instance/Component Data Flow
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
Vue.js with Superpowers: Single File Components
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
Tooling: CLI, IDEs, Chrome Extension
Great CLI for project scaffolding with hot reloading, test setup, ...
PlugIns for Atom, VS Code, Sublime, IntelliJ Suite, ...
Chrome extension comes in handy for development!
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
Getting started
# Install CLI
npm i -g vue-cli
# Lean setup
vue init simple my-first-vue-app
# Full Nerd-Mode setup
vue init webpack my-crazy-vue-app
cd my-crazy-vue-app && npm run dev
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
So... what about SilverStripe + Vue.js?
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
Case Study
Social Media Content Platform for FIFA WSC 2018 
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
The Team
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
Requirements
Web Interface for Content Team
Form for creating content snippets of types "video", "image" and "infographic"
Preview/Streaming and Download funcationality
User Roles: "Content Author" and "Admin"
Permission­ and Publishing­Process
Extended Reporting (Download and Access Stats)
Web Interface for MRLs (Media Rights Licensees)
Lean UI with rich presentation of content snippets
Multiple filter options (by team, category, type, ...)
Search functionality
International availability
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
Early Platform Mockup
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
Challenges
Asset abstraction with v3.6.5
Clean normalized data structure vs. number of DB queries
Frontend data scaffolding on initial request
Fast API
Hybrid Frontend Approach
(MainView as scaffolded SPA, other pages statically via Template Engine)
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
Decisions
Image Delivery via Cloudinary
Video Delivery via AWS S3 (Pseudo­Streaming via Byte­Range Requests)
Web App Hosting via Rackspace Cloud
SilverStripe Admin UI for Content Team
Customized GridField
Custom modules for Cloudinary and AWS S3 Uploader
HybridSession Module for LoadBalancer support
Vue.js SPA for MainView (only)
Masonry Grid for content snippets ("Postings")
Delivery of most recent data set on initial request ("Payload Injection")
Subsequent requests (filtering, update polling, ...) in RESTful manner
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
What we wanted
Pseudo Hydration: A convenient way to prepare the
posting payload for Vue.js on the initial main view request.
(SSR/Universal App approach whould have been sexy but over engineered)
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
Payload Injection Flow
MariaDB        fetch  Interface       JSON­to­DOM Injection       "Pickup" by Vue.js
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
Posting Model
 Posting  as central  DataObject  with several relations (CLImage, S3File, ....)
Raw Query to minimize the load of DB operations
Desired document format:
- id: number
- created: string
- type: string
- title: string
- recommended: boolean
- category: string
- team: string
- previewImage: string Full URL
- asset: string Full URL
- attachment: string Full URL (optional; e.g. .psd Files)
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
 Posting::fetch() 
/**
* @param array $options
* - limit: number, default: 40
* - offset: number, default: 0
* - type: string (see db enum field "Type")
* - created: string (date)
* - recommended: boolean
* - category: string
* - team: string
* - term: string For free text search (>= 3 chars)
* - sortOrder: string (ASC|DESC), default: DESC
* - minID: int
*
* @return array Posting Documents
* @throws FetchException
*/
public static function fetch(array $options = []): array;
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
Injecting the payload
public function index(SS_HttpRequest $req) {
// Get options compliant with interface
$opts = $this->extractFetchOptions($req);
// Staging the posting payload for DOM injection
PayloadInjector::stage([
'postings' => Posting::fetch($opts);
]);
return $this->renderWith('MainView');
}
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
 PayloadInjector ...
...collects array data through out request processing.
...normalizes data and converts it to JSON.
...hands it to the renderable data.
Basically it's a convenience wrapper for:
// Consider $data is everything you have "staged" so far
Controller::curr()->customize([
'Payload' => Convert::array2json($payload);
]);
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
Making payload available for Vue.js
<!-- MainView.ss -->
<% if $Payload %>
<script>window.payload = $Payload;</script>
<% end_if %>
Note:  PayloadInjector  will handle this in v2
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
Making payload available for Vue.js
// main-view.js
import Vue from 'vue';
// Initial data for Vue instance
let data = {
showPreview: false
};
// Merging injected payload
if (typeof payload !== undefined) Object.assign(data, payload);
new Vue(
el: '#app',
data // <--- prepared payload is available through instance data prop
);
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
Displaying the payload
<!-- MainView.ss -->
<div id="#app">
<main class="grid">
<div
v-for="posting in postings"
v-bind:key="posting.id"
class="posting-card">
<h2>{{ posting.title }}</h2>
...
</div>
</main>
</div>
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
Subsequent Requests
1. SilverStripe Controller Logic (Action­Mapping, Validation, ...)
2.  Posting::fetch($opts)  with options from Request
3. Delivering Posting Documents as JSON
4. Updating the Vue.js data property and let reactive bindings to it's magic 
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
Subsequent Requests
// main-view.js
new Vue({
el: '#app',
data,
methods: {
fetch(filterOptions) {
axios.get('http://localhost:8080/posting', {
params: { ...filterOptions }
}).then(res => {
const { payload } = res.data;
// This mutates the postings prop of "data"
// and triggers the attached reactive bindings
this.postings = payload.postings;
});
}
}
});
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
Validating the HTTP method for action mapping
private static $url_handlers = [
'posting/$id' => [
'GET' => 'fetchPostings',
'POST' => 'createPosting'
]
];
...powered by a Trait overloading RequestHandler's protected  findAction()  method.
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
Working on v2
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
Hybrid Rendering
Pattern proposed at GoogleIO 2018
Check if a crawler is requesting and deliver optimized resources
The idea is to use the staged data wrapped via  ArrayData  and  ArrayList  and auto­
use templates with  _static.ss  suffix.
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
Hybrid Rendering: Flow
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
CQRS Utils
Command Query Responsibility Segregation
Different models/flows for creating and reading data
The idea is to have a conventional relational DB as "Write Database" and another store
for prepared documents (e.g. Redis, MongoDB or Elastic) as "Read Database"
Step towards the Headless CMS world
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
CQRS Utils: Flow
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
CQRS Utils: Config
# config.yml
Posting:
extensions:
- CQRSExtension('ID', [ 'store' => 'redis', 'db' => 2 ])
// Posting.php; content of $read_payload is considered the "Payload Manifest"
private static $read_payload = [
'ID',
'Title',
'Category' => 'getCategoryLabel',
'Tags' => [
'required' => false,
'mapping' => 'getTagList'
]
];
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
CQRS Utils:  IPayloadStore 
interface IPayloadStore {
public function read(string $key): array;
public function write(string $key, array $payload);
public function delete(string $key);
public function info(string $option = null): array;
public function getName(): string;
}
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
Resources 
Official Docs: https://vuejs.org/v2/guide
Weekly Podcast: https://news.vuejs.org
Tutorial: https://laracasts.com/series/learn­vue­2­step­by­step
State of Vue Report: https://www.monterail.com/state­of­vuejs­report
Cheat Sheet: http://www.vuemastery.com
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
https://akryum.github.io/vue­apollo/
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51
Thanks!   
StripeCon EU 18 :: Julian Scheuchenzuber <js@lvl51.de> :: Level51

Mais conteúdo relacionado

Último

S1S2 B.Arch MGU - HOA1&2 Module 3 -Temple Architecture of Kerala.pptx
S1S2 B.Arch MGU - HOA1&2 Module 3 -Temple Architecture of Kerala.pptxS1S2 B.Arch MGU - HOA1&2 Module 3 -Temple Architecture of Kerala.pptx
S1S2 B.Arch MGU - HOA1&2 Module 3 -Temple Architecture of Kerala.pptxSCMS School of Architecture
 
"Lesotho Leaps Forward: A Chronicle of Transformative Developments"
"Lesotho Leaps Forward: A Chronicle of Transformative Developments""Lesotho Leaps Forward: A Chronicle of Transformative Developments"
"Lesotho Leaps Forward: A Chronicle of Transformative Developments"mphochane1998
 
PE 459 LECTURE 2- natural gas basic concepts and properties
PE 459 LECTURE 2- natural gas basic concepts and propertiesPE 459 LECTURE 2- natural gas basic concepts and properties
PE 459 LECTURE 2- natural gas basic concepts and propertiessarkmank1
 
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...Arindam Chakraborty, Ph.D., P.E. (CA, TX)
 
HAND TOOLS USED AT ELECTRONICS WORK PRESENTED BY KOUSTAV SARKAR
HAND TOOLS USED AT ELECTRONICS WORK PRESENTED BY KOUSTAV SARKARHAND TOOLS USED AT ELECTRONICS WORK PRESENTED BY KOUSTAV SARKAR
HAND TOOLS USED AT ELECTRONICS WORK PRESENTED BY KOUSTAV SARKARKOUSTAV SARKAR
 
A CASE STUDY ON CERAMIC INDUSTRY OF BANGLADESH.pptx
A CASE STUDY ON CERAMIC INDUSTRY OF BANGLADESH.pptxA CASE STUDY ON CERAMIC INDUSTRY OF BANGLADESH.pptx
A CASE STUDY ON CERAMIC INDUSTRY OF BANGLADESH.pptxmaisarahman1
 
Employee leave management system project.
Employee leave management system project.Employee leave management system project.
Employee leave management system project.Kamal Acharya
 
HOA1&2 - Module 3 - PREHISTORCI ARCHITECTURE OF KERALA.pptx
HOA1&2 - Module 3 - PREHISTORCI ARCHITECTURE OF KERALA.pptxHOA1&2 - Module 3 - PREHISTORCI ARCHITECTURE OF KERALA.pptx
HOA1&2 - Module 3 - PREHISTORCI ARCHITECTURE OF KERALA.pptxSCMS School of Architecture
 
Thermal Engineering Unit - I & II . ppt
Thermal Engineering  Unit - I & II . pptThermal Engineering  Unit - I & II . ppt
Thermal Engineering Unit - I & II . pptDineshKumar4165
 
Online food ordering system project report.pdf
Online food ordering system project report.pdfOnline food ordering system project report.pdf
Online food ordering system project report.pdfKamal Acharya
 
Kuwait City MTP kit ((+919101817206)) Buy Abortion Pills Kuwait
Kuwait City MTP kit ((+919101817206)) Buy Abortion Pills KuwaitKuwait City MTP kit ((+919101817206)) Buy Abortion Pills Kuwait
Kuwait City MTP kit ((+919101817206)) Buy Abortion Pills Kuwaitjaanualu31
 
COST-EFFETIVE and Energy Efficient BUILDINGS ptx
COST-EFFETIVE  and Energy Efficient BUILDINGS ptxCOST-EFFETIVE  and Energy Efficient BUILDINGS ptx
COST-EFFETIVE and Energy Efficient BUILDINGS ptxJIT KUMAR GUPTA
 
DC MACHINE-Motoring and generation, Armature circuit equation
DC MACHINE-Motoring and generation, Armature circuit equationDC MACHINE-Motoring and generation, Armature circuit equation
DC MACHINE-Motoring and generation, Armature circuit equationBhangaleSonal
 
Introduction to Serverless with AWS Lambda
Introduction to Serverless with AWS LambdaIntroduction to Serverless with AWS Lambda
Introduction to Serverless with AWS LambdaOmar Fathy
 
Computer Networks Basics of Network Devices
Computer Networks  Basics of Network DevicesComputer Networks  Basics of Network Devices
Computer Networks Basics of Network DevicesChandrakantDivate1
 
Verification of thevenin's theorem for BEEE Lab (1).pptx
Verification of thevenin's theorem for BEEE Lab (1).pptxVerification of thevenin's theorem for BEEE Lab (1).pptx
Verification of thevenin's theorem for BEEE Lab (1).pptxchumtiyababu
 
Thermal Engineering-R & A / C - unit - V
Thermal Engineering-R & A / C - unit - VThermal Engineering-R & A / C - unit - V
Thermal Engineering-R & A / C - unit - VDineshKumar4165
 

Último (20)

Integrated Test Rig For HTFE-25 - Neometrix
Integrated Test Rig For HTFE-25 - NeometrixIntegrated Test Rig For HTFE-25 - Neometrix
Integrated Test Rig For HTFE-25 - Neometrix
 
S1S2 B.Arch MGU - HOA1&2 Module 3 -Temple Architecture of Kerala.pptx
S1S2 B.Arch MGU - HOA1&2 Module 3 -Temple Architecture of Kerala.pptxS1S2 B.Arch MGU - HOA1&2 Module 3 -Temple Architecture of Kerala.pptx
S1S2 B.Arch MGU - HOA1&2 Module 3 -Temple Architecture of Kerala.pptx
 
"Lesotho Leaps Forward: A Chronicle of Transformative Developments"
"Lesotho Leaps Forward: A Chronicle of Transformative Developments""Lesotho Leaps Forward: A Chronicle of Transformative Developments"
"Lesotho Leaps Forward: A Chronicle of Transformative Developments"
 
PE 459 LECTURE 2- natural gas basic concepts and properties
PE 459 LECTURE 2- natural gas basic concepts and propertiesPE 459 LECTURE 2- natural gas basic concepts and properties
PE 459 LECTURE 2- natural gas basic concepts and properties
 
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
 
FEA Based Level 3 Assessment of Deformed Tanks with Fluid Induced Loads
FEA Based Level 3 Assessment of Deformed Tanks with Fluid Induced LoadsFEA Based Level 3 Assessment of Deformed Tanks with Fluid Induced Loads
FEA Based Level 3 Assessment of Deformed Tanks with Fluid Induced Loads
 
HAND TOOLS USED AT ELECTRONICS WORK PRESENTED BY KOUSTAV SARKAR
HAND TOOLS USED AT ELECTRONICS WORK PRESENTED BY KOUSTAV SARKARHAND TOOLS USED AT ELECTRONICS WORK PRESENTED BY KOUSTAV SARKAR
HAND TOOLS USED AT ELECTRONICS WORK PRESENTED BY KOUSTAV SARKAR
 
Call Girls in South Ex (delhi) call me [🔝9953056974🔝] escort service 24X7
Call Girls in South Ex (delhi) call me [🔝9953056974🔝] escort service 24X7Call Girls in South Ex (delhi) call me [🔝9953056974🔝] escort service 24X7
Call Girls in South Ex (delhi) call me [🔝9953056974🔝] escort service 24X7
 
A CASE STUDY ON CERAMIC INDUSTRY OF BANGLADESH.pptx
A CASE STUDY ON CERAMIC INDUSTRY OF BANGLADESH.pptxA CASE STUDY ON CERAMIC INDUSTRY OF BANGLADESH.pptx
A CASE STUDY ON CERAMIC INDUSTRY OF BANGLADESH.pptx
 
Employee leave management system project.
Employee leave management system project.Employee leave management system project.
Employee leave management system project.
 
HOA1&2 - Module 3 - PREHISTORCI ARCHITECTURE OF KERALA.pptx
HOA1&2 - Module 3 - PREHISTORCI ARCHITECTURE OF KERALA.pptxHOA1&2 - Module 3 - PREHISTORCI ARCHITECTURE OF KERALA.pptx
HOA1&2 - Module 3 - PREHISTORCI ARCHITECTURE OF KERALA.pptx
 
Thermal Engineering Unit - I & II . ppt
Thermal Engineering  Unit - I & II . pptThermal Engineering  Unit - I & II . ppt
Thermal Engineering Unit - I & II . ppt
 
Online food ordering system project report.pdf
Online food ordering system project report.pdfOnline food ordering system project report.pdf
Online food ordering system project report.pdf
 
Kuwait City MTP kit ((+919101817206)) Buy Abortion Pills Kuwait
Kuwait City MTP kit ((+919101817206)) Buy Abortion Pills KuwaitKuwait City MTP kit ((+919101817206)) Buy Abortion Pills Kuwait
Kuwait City MTP kit ((+919101817206)) Buy Abortion Pills Kuwait
 
COST-EFFETIVE and Energy Efficient BUILDINGS ptx
COST-EFFETIVE  and Energy Efficient BUILDINGS ptxCOST-EFFETIVE  and Energy Efficient BUILDINGS ptx
COST-EFFETIVE and Energy Efficient BUILDINGS ptx
 
DC MACHINE-Motoring and generation, Armature circuit equation
DC MACHINE-Motoring and generation, Armature circuit equationDC MACHINE-Motoring and generation, Armature circuit equation
DC MACHINE-Motoring and generation, Armature circuit equation
 
Introduction to Serverless with AWS Lambda
Introduction to Serverless with AWS LambdaIntroduction to Serverless with AWS Lambda
Introduction to Serverless with AWS Lambda
 
Computer Networks Basics of Network Devices
Computer Networks  Basics of Network DevicesComputer Networks  Basics of Network Devices
Computer Networks Basics of Network Devices
 
Verification of thevenin's theorem for BEEE Lab (1).pptx
Verification of thevenin's theorem for BEEE Lab (1).pptxVerification of thevenin's theorem for BEEE Lab (1).pptx
Verification of thevenin's theorem for BEEE Lab (1).pptx
 
Thermal Engineering-R & A / C - unit - V
Thermal Engineering-R & A / C - unit - VThermal Engineering-R & A / C - unit - V
Thermal Engineering-R & A / C - unit - V
 

Destaque

How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Applitools
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at WorkGetSmarter
 
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...DevGAMM Conference
 
Barbie - Brand Strategy Presentation
Barbie - Brand Strategy PresentationBarbie - Brand Strategy Presentation
Barbie - Brand Strategy PresentationErica Santiago
 
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them wellGood Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them wellSaba Software
 
Introduction to C Programming Language
Introduction to C Programming LanguageIntroduction to C Programming Language
Introduction to C Programming LanguageSimplilearn
 

Destaque (20)

How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
 
ChatGPT webinar slides
ChatGPT webinar slidesChatGPT webinar slides
ChatGPT webinar slides
 
More than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike RoutesMore than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike Routes
 
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
 
Barbie - Brand Strategy Presentation
Barbie - Brand Strategy PresentationBarbie - Brand Strategy Presentation
Barbie - Brand Strategy Presentation
 
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them wellGood Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
 
Introduction to C Programming Language
Introduction to C Programming LanguageIntroduction to C Programming Language
Introduction to C Programming Language
 

SilverStripe & Vue.js - A case study