SlideShare uma empresa Scribd logo
1 de 143
Baixar para ler offline
Sylius and API Platform


The story of integration
Foreword
Application & Infrastructure


Hexagonal
3 topcis


Application, API Design, Testing
What did we want to
achieve?
Become modern,


API-
fi
rst e-commerce
Deliver a new quality in the
headless e-commerce
Be closer to Symfony
Always up-to-date
documentation
Application architecture
Photo by Marc-Olivier Jodoin on Unsplash
How to preserve Api Platform
usage easiness and Sylius
fl
exibility?
How to handle typical create,
update and read operations?
CRUD
Easy to setup
Easy to setup


Easy to use
Easy to setup


Easy to use


Easy to extend
Familiar for most developers
How?
#[ORMEntity
]

#[ApiResource
]

class Produc
t

{

/** */
}
Cons
Harder to bend to business
expectations
How to handle business
expectations?
Commands
Super
fl
exible


Gives possible to defer execution


Decouples layers
Infrastructure
Application
Infrastructure
Command
Application
Infrastructure
Handler
Command
Application
Infrastructure
Handler
Command
Messenger
Application
How?
class AddItemToCar
t

{

public ProductVariant $productVariant
;

public int $quantity;
}
final class AddItemToCartHandle
r

{

public function __invoke(AddItemToCart $command): Orde
r

{

$cart = $this->cartContext->getCart()
;

$cartItem = $this->cartItemFactory->createNew()
;

$cartItem->setVariant($command->productVariant)
;

$this->orderItemQuantityModifier->modify
(

$cartItem,
 

$command->quantit
y

)
;

$this->orderModifier->addToOrder($cart, $cartItem)
;

return $cart;
}

}
final class AddItemToCartHandle
r

{

public function __invoke(AddItemToCart $command): Orde
r

{
$cart = $this->cartContext->getCart()
;

$cartItem = $this->cartItemFactory->createNew()
;

$cartItem->setVariant($command->productVariant)
;

$this->orderItemQuantityModifier->modify
(

$cartItem,
 

$command->quantit
y

)
;

$this->orderModifier->addToOrder($cart, $cartItem)
;

return $cart
;

}

}
final class AddItemToCartHandle
r

{

public function __invoke(AddItemToCart $command): Orde
r

{

$cart = $this->cartContext->getCart()
;

$cartItem = $this->cartItemFactory->createNew()
;

$cartItem->setVariant($command->productVariant)
;

$this->orderItemQuantityModifier->modify
(

$cartItem,
 

$command->quantit
y

)
;

$this->orderModifier->addToOrder($cart, $cartItem)
;

return $cart
;

}

}
final class AddItemToCartHandle
r

{

public function __invoke(AddItemToCart $command): Orde
r

{

$cart = $this->cartContext->getCart()
;

$cartItem = $this->cartItemFactory->createNew()
;

$cartItem->setVariant($command->productVariant)
;

$this->orderItemQuantityModifier->modify
(

$cartItem,
 

$command->quantit
y

)
;

$this->orderModifier->addToOrder($cart, $cartItem)
;

return $cart
;

}

}
final class AddItemToCartHandle
r

{

public function __invoke(AddItemToCart $command): Orde
r

{

$cart = $this->cartContext->getCart()
;

$cartItem = $this->cartItemFactory->createNew()
;

$cartItem->setVariant($command->productVariant)
;

$this->orderItemQuantityModifier->modify
(

$cartItem,
 

$command->quantit
y

)
;

$this->orderModifier->addToOrder($cart, $cartItem)
;

return $cart;
}

}
One command


One handler
Transaction & Validation
Middleware's
Super
fl
exible


Gives possible to defer execution


Decouples layers
Are they separated?
final class AddItemToCartHandle
r

{

public function __invoke(AddItemToCart $command): Orde
r

{

$cart = $this->cartContext->getCart()
;

$cartItem = $this->cartItemFactory->createNew()
;

$cartItem->setVariant($command->productVariant)
;

$this->orderItemQuantityModifier->modify
(

$cartItem,
 

$command->quantit
y

)
;

$this->orderModifier->addToOrder($cart, $cartItem)
;

return $cart;
}

}
final class AddItemToCartHandle
r

{

public function __invoke(AddItemToCart $command): Orde
r

{
$cart = $this->cartContext->getCart()
;

$cartItem = $this->cartItemFactory->createNew()
;

$cartItem->setVariant($command->productVariant)
;

$this->orderItemQuantityModifier->modify
(

$cartItem,
 

$command->quantit
y

)
;

$this->orderModifier->addToOrder($cart, $cartItem)
;

return $cart
;

}

}
class AddItemToCar
t

{

public Order $order;
public ProductVariant $productVariant
;

public int $quantity
;

}
final class AddItemToCartHandle
r

{

public function __invoke(AddItemToCart $command): Orde
r

{
$cart = $command->order
;

$cartItem = $this->cartItemFactory->createNew()
;

$cartItem->setVariant($command->productVariant)
;

$this->orderItemQuantityModifier->modify
(

$cartItem,
 

$command->quantit
y

)
;

$this->orderModifier->addToOrder($cart, $cartItem)
;

return $cart
;

}

}
No session/request data


in handlers and below
Command should contain


all information required


to perform an action
Super
fl
exible


Gives possible to defer execution or
send it outside


Decouples layers
Can we defer it?
class AddItemToCar
t

{

public Order $order
;

public ProductVariant $productVariant
;

public int $quantity
;

}
class AddItemToCar
t

{

public string $orderToken;
public string $productVariantCode
;

public int $quantity;
}
final class AddItemToCartHandle
r

{

public function __invoke(AddItemToCart $command): Orde
r

{
$productVariant = $this->productVariantRepository->findOneBy
(

['code' => $addItemToCart->productVariantCode
]

)
;

$cart = $this->orderRepository->findCartByTokenValue
(

$addItemToCart->orderTokenValu
e

);
$cartItem = $this->cartItemFactory->createNew()
;

$cartItem->setVariant($command->productVariant)
;

$this->orderItemQuantityModifier->modify
(

$cartItem,
 

$command->quantit
y

)
;

$this->orderModifier->addToOrder($cart, $cartItem)
;

return $cart
;

}

}
Commands with raw data only
But where this data came from?
DataTransformer?
Every “new” keyword couples you to
given implementation
Not relevant for 87% of developers
Faked Data Institute ®
Command enrichment!
class AddItemToCart implements OrderTokenValueAwareInterfac
e

{

public ?string $orderTokenValue
;

public string $productVariantCode
;

public int $quantity
;

public function getOrderTokenValue(): ?strin
g

{

return $this->orderTokenValue
;

}

public function setOrderTokenValue(?string $orderTokenValue): voi
d

{

$this->orderTokenValue = $orderTokenValue
;

}

}
final class OrderTokenValueAwareInputCommandDataTransforme
r

implements CommandDataTransformerInterfac
e

{

public function transform($object, string $to, array $context = []
)

{

/** @var OrderInterface $cart *
/

$cart = $context['object_to_populate']
;

$object->setOrderTokenValue($cart->getTokenValue())
;

return $object
;

}

public function supportsTransformation($object): boo
l

{

return $object instanceof OrderTokenValueAwareInterface
;

}

}
DataTransformer


vs


DataEnrichment
Current user
Current user


Current locale
Current user


Current locale


Current channel(Sylius speci
fi
c)
Current user


Current locale


Current channel(Sylius speci
fi
c)


Current order
Current user


Current locale


Current channel(Sylius speci
fi
c)


Current order
No session/request data


in handlers and below
Enrichments provide better class
extendibility for framework
Interfaces as contracts
Cons
More complicated architecture


Steeper learning curve
API Design
Photo by Halacious on Unsplash
How to model our API?
IRI usage
{

"@context": "/api/v2/contexts/ProductVariant"
,

"@id": "/api/v2/shop/product-variants/MUG_BLUE"
,

"@type": "ProductVariant"
,

"id": @integer@
,

"onHand": 10
,

"code": "MUG_BLUE"
,

"currentStock": 5
,

"product": "/api/v2/shop/products/MUG"
,

"optionValues":
[

"/api/v2/shop/product-option-values/COLOR_BLUE
"

]
,

"translations": {...}
,

"price": 2000
,

"originalPrice": 2000
,

"inStock": tru
e

}
{

"@context": "/api/v2/contexts/ProductVariant"
,

"@id": "/api/v2/shop/product-variants/MUG_BLUE"
,

"@type": "ProductVariant"
,

"id": @integer@
,

"onHand": 10
,

"code": "MUG_BLUE"
,

"currentStock": 5
,

"product": "/api/v2/shop/products/MUG"
,

"optionValues":
[

"/api/v2/shop/product-option-values/COLOR_BLUE
"

]
,

"translations": {...}
,

"price": 2000
,

"originalPrice": 2000
,

"inStock": tru
e

}
{

"@context": "/api/v2/contexts/ProductVariant"
,

"@id": "/api/v2/shop/product-variants/MUG_BLUE"
,

"@type": "ProductVariant"
,

"id": @integer@
,

"onHand": 10
,

"code": "MUG_BLUE"
,

"currentStock": 5
,

"product": "/api/v2/shop/products/MUG"
,

"optionValues":
[

"/api/v2/shop/product-option-values/COLOR_BLUE
"

]
,

"translations": {...}
,

"price": 2000
,

"originalPrice": 2000
,

"inStock": tru
e

}
{

"@context": "/api/v2/contexts/ProductVariant"
,

"@id": "/api/v2/shop/product-variants/MUG_BLUE"
,

"@type": "ProductVariant"
,

"id": @integer@
,

"onHand": 10
,

"code": "MUG_BLUE"
,

"currentStock": 5
,

"product": "/api/v2/shop/products/MUG"
,

"optionValues":
[

"/api/v2/shop/product-option-values/COLOR_BLUE
"

]
,

"translations": {...}
,

"price": 2000
,

"originalPrice": 2000
,

"inStock": tru
e

}
class AddItemToCar
t

{

public string $orderToken;
public string $productVariantCode
;

public int $quantity;
}
How?
<class name="SyliusBundleApiBundleCommandCartAddItemToCart">
<attribute name="productVariantCode
"

serialized-name="productVariant
"

>

<group>shop:cart:add_item</group
>

</attribute
>

<attribute name="quantity"
>

<group>shop:cart:add_item</group
>

</attribute
>

</class>
class AddItemToCart implements IriToIdenti
fi
erConversionAwareInterfac
e

{

public string $orderToken
;

public string $productVariantCode
;

public int $quantity
;

}
Database =/= resource
Reset password
<resource
 

class=“SyliusBundleApiBundleCommandResetPassword
"

shortName="ResetPasswordRequest"
>

<collectionOperations
>

<collectionOperation name="shop_create_reset_password_request"
>

<attribute name="method">POST</attribute
>

<attribute name="path">/reset-password-requests</attribute
>

<attribute name=“input"
>

SyliusBundleApiBundleCommandRequestResetPasswordToke
n

</attribute
>

<attribute name="output">false</attribute
>

<attribute name="status">202</attribute
>

</collectionOperation
>

</collectionOperations
>

<itemOperations
>

<itemOperation name="shop_update_reset_password_request"
>

<attribute name="method">PATCH</attribute
>

<attribute name="path">/reset-password-requests/{id}</attribute
>

<attribute name=“input"
>

SyliusBundleApiBundleCommandResetPasswor
d

</attribute
>

<attribute name="output">false</attribute
>

<attribute name="status">202</attribute
>

</itemOperation
>

</itemOperations
>

</resource>
<resource
 

class=“SyliusBundleApiBundleCommandResetPassword
"

shortName="ResetPasswordRequest"
>

<collectionOperations
>

<collectionOperation name="shop_create_reset_password_request">
<attribute name="method">POST</attribute
>

<attribute name="path">/reset-password-requests</attribute
>

<attribute name=“input"
>

SyliusBundleApiBundleCommandRequestResetPasswordToke
n

</attribute
>

<attribute name="output">false</attribute
>

<attribute name="status">202</attribute
>

</collectionOperation
>

</collectionOperations
>

<itemOperations
>

<itemOperation name="shop_update_reset_password_request"
>

<attribute name="method">PATCH</attribute
>

<attribute name="path">/reset-password-requests/{id}</attribute
>

<attribute name=“input"
>

SyliusBundleApiBundleCommandResetPasswor
d

</attribute
>

<attribute name="output">false</attribute
>

<attribute name="status">202</attribute
>

</itemOperation
>

</itemOperations
>

</resource>
<resource
 

class=“SyliusBundleApiBundleCommandResetPassword
"

shortName="ResetPasswordRequest"
>

<collectionOperations
>

<collectionOperation name="shop_create_reset_password_request"
>

<attribute name="method">POST</attribute
>

<attribute name="path">/reset-password-requests</attribute
>

<attribute name=“input"
>

SyliusBundleApiBundleCommandRequestResetPasswordToke
n

</attribute
>

<attribute name="output">false</attribute
>

<attribute name="status">202</attribute
>

</collectionOperation
>

</collectionOperations
>

<itemOperations
>

<itemOperation name="shop_update_reset_password_request">
<attribute name="method">PATCH</attribute
>

<attribute name="path">/reset-password-requests/{id}</attribute
>

<attribute name=“input"
>

SyliusBundleApiBundleCommandResetPasswor
d

</attribute
>

<attribute name="output">false</attribute
>

<attribute name="status">202</attribute
>

</itemOperation
>

</itemOperations
>

</resource>
<resource
 

class=“SyliusBundleApiBundleCommandResetPassword
"

shortName="ResetPasswordRequest"
>

<collectionOperations
>

<collectionOperation name="shop_create_reset_password_request"
>

<attribute name="method">POST</attribute
>

<attribute name="path">/reset-password-requests</attribute
>

<attribute name=“input"
>

SyliusBundleApiBundleCommandRequestResetPasswordToke
n

</attribute
>

<attribute name="output">false</attribute
>

<attribute name="status">202</attribute
>

</collectionOperation
>

</collectionOperations
>

<itemOperations
>

<itemOperation name="shop_update_reset_password_request"
>

<attribute name="method">PATCH</attribute
>

<attribute name="path">/reset-password-requests/{id}</attribute
>

<attribute name=“input"
>

SyliusBundleApiBundleCommandResetPasswor
d

</attribute
>

<attribute name="output">false</attribute
>

<attribute name="status">202</attribute
>

</itemOperation
>

</itemOperations
>

</resource>
Testing Architecture
Photo by Danist Soh on Unsplash
Sylius aka BDD Warriors
1500+ scenario
s

17000+ steps
~2000 scenario
s

~22000 steps
Behat
Business oriented scenarios
Gherkin notation
Feature: Signing in to the stor
e

In order to view my order
s

As a Visito
r

I want to be able to log in to the stor
e

Background:
Given there is a user "ted@example.com" identi
fi
ed by "bear
"

Scenario: Sign in with email and passwor
d

When I want to log in with the "ted@example.com" email and the "bear" passwor
d

Then I should be logged in
Great to keep conversation
about features
Abstraction over the
implementation
How to test our new
infrastructure?
@customer_logi
n

Feature: Signing in to the stor
e

In order to view my order
s

As a Visito
r

I want to be able to log in to the stor
e

Background
:

Given the store operates on a single channel in "United States
"

And there is a user "ted@example.com" identi
fi
ed by "bear
"

@ui @ap
i

Scenario: Sign in with email and passwor
d

When I want to log i
n

And I specify the username as "ted@example.com
"

And I specify the password as "bear
"

And I log i
n

Then I should be logged in
@customer_logi
n

Feature: Signing in to the stor
e

In order to view my order
s

As a Visito
r

I want to be able to log in to the stor
e

Background
:

Given the store operates on a single channel in "United States
"

And there is a user "ted@example.com" identi
fi
ed by "bear
"

@ui @api
Scenario: Sign in with email and passwor
d

When I want to log i
n

And I specify the username as "ted@example.com
"

And I specify the password as "bear
"

And I log i
n

Then I should be logged in
@customer_logi
n

Feature: Signing in to the stor
e

In order to view my order
s

As a Visito
r

I want to be able to log in to the stor
e

Background
:

Given the store operates on a single channel in "United States
"

And there is a user "ted@example.com" identi
fi
ed by "bear
"

@ui @ap
i

Scenario: Sign in with email and passwor
d

When I want to log i
n

And I specify the username as "ted@example.com
"

And I specify the password as "bear
"

And I log i
n

Then I should be logged in
@customer_logi
n

Feature: Signing in to the stor
e

In order to view my order
s

As a Visito
r

I want to be able to log in to the stor
e

Background
:

Given the store operates on a single channel in "United States
"

And there is a user "ted@example.com" identi
fi
ed by "bear
"

@ui @ap
i

Scenario: Sign in with email and passwor
d

When I want to log i
n

And I specify the username as "ted@example.com
"

And I specify the password as "bear
"

And I log i
n

Then I should be logged in
@customer_logi
n

Feature: Signing in to the stor
e

In order to view my order
s

As a Visito
r

I want to be able to log in to the stor
e

Background
:

Given the store operates on a single channel in "United States
"

And there is a user "ted@example.com" identi
fi
ed by "bear
"

@ui @ap
i

Scenario: Sign in with email and passwor
d

When I want to log i
n

And I specify the username as "ted@example.com
"

And I specify the password as "bear
"

And I log i
n

Then I should be logged in
@customer_logi
n

Feature: Signing in to the stor
e

In order to view my order
s

As a Visito
r

I want to be able to log in to the stor
e

Background:
Given the store operates on a single channel in "United States
"

And there is a user "ted@example.com" identi
fi
ed by "bear
"

@ui @ap
i

Scenario: Sign in with email and passwor
d

When I want to log i
n

And I specify the username as "ted@example.com
"

And I specify the password as "bear
"

And I log i
n

Then I should be logged in
/*
*

* @When I log i
n

*
/

public function iLogIn(
)

{

$this->loginPage->logIn()
;

}
@customer_logi
n

Feature: Signing in to the stor
e

In order to view my order
s

As a Visito
r

I want to be able to log in to the stor
e

Background:
Given the store operates on a single channel in "United States
"

And there is a user "ted@example.com" identi
fi
ed by "bear
"

@ui @api
Scenario: Sign in with email and passwor
d

When I want to log i
n

And I specify the username as "ted@example.com
"

And I specify the password as "bear
"

And I log i
n

Then I should be logged in
/*
*

* @When I log i
n

*
/

public function iLogIn(): voi
d

{

$this->client->call()
;

}
Behat as migration tool
Cons
Implementation overhead


New syntax to be familiar with
We didn’t seen our APIs
that much
How to keep contracts and
design our APIs?
PHPUnit
Whole response easily visible
{

"@context": "/api/v2/contexts/Payment"
,

"@id": "/api/v2/shop/payments/@integer@"
,

"@type": "Payment"
,

"order": "/api/v2/shop/orders/nAWw2jewpA"
,

"id": @integer@
,

"method":
{

"@id": "/api/v2/shop/payment-methods/CASH_ON_DELIVERY"
,

"@type": "PaymentMethod"
,

"name": "Cash on delivery
"

}
,

"currencyCode": "USD"
,

"amount": 6500
,

"state": "new"
,

"details": []
,

"createdAt": "@string@"
,

"updatedAt": "@string@
"

}
It will fail if anything will be
removed or added
Easy to setup and maintain
lchrusciel/ApiTestCase


or


Internal Api Platform ApiTestCase
Simpli
fi
ed tests only
Mostly one API call only


Arrangement => DB
fi
xtures + commands


No business
fl
ow checks
/** @test *
/

public function it_gets_details_about_product_variant(): voi
d

{

$this->loadFixturesFromFile('test_data.yaml')
;

$this->client->request
(

'GET'
,

'/api/v2/shop/product-variants/MUG_BLUE',
 

[],
 

[],
 

self::CONTENT_TYPE_HEADE
R

)
;

$response = $this->client->getResponse()
;

$this->assertResponse($response, 'get_product_variant_response', Response::HTTP_OK)
;

}
/** @test *
/

public function it_gets_details_about_product_variant(): voi
d

{

$this->loadFixturesFromFile('test_data.yaml')
;

$this->client->request
(

'GET'
,

'/api/v2/shop/product-variants/MUG_BLUE',
 

[],
 

[],
 

self::CONTENT_TYPE_HEADE
R

)
;

$response = $this->client->getResponse()
;

$this->assertResponse($response, 'get_product_variant_response', Response::HTTP_OK)
;

}
/** @test *
/

public function it_gets_details_about_product_variant(): voi
d

{

$this->loadFixturesFromFile('test_data.yaml')
;

$this->client->request
(

'GET'
,

'/api/v2/shop/product-variants/MUG_BLUE',
 

[],
 

[],
 

self::CONTENT_TYPE_HEADE
R

)
;

$response = $this->client->getResponse()
;

$this->assertResponse($response, 'get_product_variant_response', Response::HTTP_OK)
;

}
/** @test *
/

public function it_gets_details_about_product_variant(): voi
d

{

$this->loadFixturesFromFile('test_data.yaml')
;

$this->client->request
(

'GET'
,

'/api/v2/shop/product-variants/MUG_BLUE',
 

[],
 

[],
 

self::CONTENT_TYPE_HEADE
R

)
;

$response = $this->client->getResponse()
;

$this->assertResponse($response, 'get_product_variant_response', Response::HTTP_OK)
;

}
/** @test */
public function it_gets_details_about_product_variant(): voi
d

{

$this->loadFixturesFromFile('test_data.yaml')
;

$this->client->request
(

'GET'
,

'/api/v2/shop/product-variants/MUG_BLUE',
 

[],
 

[],
 

self::CONTENT_TYPE_HEADE
R

)
;

$response = $this->client->getResponse()
;

$this->assertResponse($response, 'get_product_variant_response', Response::HTTP_OK)
;

}
{

"@context": "/api/v2/contexts/ProductVariant"
,

"@id": "/api/v2/shop/product-variants/MUG_BLUE"
,

"@type": "ProductVariant"
,

"id": @integer@
,

"onHand": 10
,

"code": "MUG_BLUE"
,

"currentStock": 5
,

"product": "/api/v2/shop/products/MUG"
,

"optionValues":
[

"/api/v2/shop/product-option-values/COLOR_BLUE
"

]
,

"translations":
{

"en_US":
{

"@id": "/api/v2/shop/product-variant-translation/@integer@"
,

"@type": "ProductVariantTranslation"
,

"id": @integer@
,

"name": "Blue Mug"
,

"locale": "en_US
"

}

}
,

"price": 2000
,

"originalPrice": 2000
,

"inStock": tru
e

}
Cons
Developer oriented usage
Summary
What are the pros & cons of
this integration?
https://master.demo.sylius.com/api/v2/docs
@Sylius
Thank you!
@lukaszchrusciel

Mais conteúdo relacionado

Mais procurados

Introduction to Coroutines @ KotlinConf 2017
Introduction to Coroutines @ KotlinConf 2017Introduction to Coroutines @ KotlinConf 2017
Introduction to Coroutines @ KotlinConf 2017Roman Elizarov
 
Sum and Product Types - The Fruit Salad & Fruit Snack Example - From F# to Ha...
Sum and Product Types -The Fruit Salad & Fruit Snack Example - From F# to Ha...Sum and Product Types -The Fruit Salad & Fruit Snack Example - From F# to Ha...
Sum and Product Types - The Fruit Salad & Fruit Snack Example - From F# to Ha...Philip Schwarz
 
7 rules of simple and maintainable code
7 rules of simple and maintainable code7 rules of simple and maintainable code
7 rules of simple and maintainable codeGeshan Manandhar
 
Object-oriented Programming-with C#
Object-oriented Programming-with C#Object-oriented Programming-with C#
Object-oriented Programming-with C#Doncho Minkov
 
Py.test
Py.testPy.test
Py.testsoasme
 
Introduction to kotlin for android app development gdg ahmedabad dev fest 2017
Introduction to kotlin for android app development   gdg ahmedabad dev fest 2017Introduction to kotlin for android app development   gdg ahmedabad dev fest 2017
Introduction to kotlin for android app development gdg ahmedabad dev fest 2017Hardik Trivedi
 
Test Driven Development (TDD) Preso 360|Flex 2010
Test Driven Development (TDD) Preso 360|Flex 2010Test Driven Development (TDD) Preso 360|Flex 2010
Test Driven Development (TDD) Preso 360|Flex 2010guest5639fa9
 
Android Navigation Component
Android Navigation ComponentAndroid Navigation Component
Android Navigation ComponentŁukasz Ciupa
 
Automation testing material by Durgasoft,hyderabad
Automation testing material by Durgasoft,hyderabadAutomation testing material by Durgasoft,hyderabad
Automation testing material by Durgasoft,hyderabadDurga Prasad
 
The Death of Final Tagless
The Death of Final TaglessThe Death of Final Tagless
The Death of Final TaglessJohn De Goes
 
Terraform -- Infrastructure as Code
Terraform -- Infrastructure as CodeTerraform -- Infrastructure as Code
Terraform -- Infrastructure as CodeMartin Schütte
 
Functional Patterns in Domain Modeling
Functional Patterns in Domain ModelingFunctional Patterns in Domain Modeling
Functional Patterns in Domain ModelingDebasish Ghosh
 
Python For Data Science Cheat Sheet
Python For Data Science Cheat SheetPython For Data Science Cheat Sheet
Python For Data Science Cheat SheetKarlijn Willems
 
Kotlin InDepth Tutorial for beginners 2022
Kotlin InDepth Tutorial for beginners 2022Kotlin InDepth Tutorial for beginners 2022
Kotlin InDepth Tutorial for beginners 2022Simplilearn
 
Unix shell scripting basics
Unix shell scripting basicsUnix shell scripting basics
Unix shell scripting basicsManav Prasad
 
Coroutines in Kotlin
Coroutines in KotlinCoroutines in Kotlin
Coroutines in KotlinAlexey Soshin
 

Mais procurados (20)

C# - Part 1
C# - Part 1C# - Part 1
C# - Part 1
 
Introduction to Coroutines @ KotlinConf 2017
Introduction to Coroutines @ KotlinConf 2017Introduction to Coroutines @ KotlinConf 2017
Introduction to Coroutines @ KotlinConf 2017
 
Sum and Product Types - The Fruit Salad & Fruit Snack Example - From F# to Ha...
Sum and Product Types -The Fruit Salad & Fruit Snack Example - From F# to Ha...Sum and Product Types -The Fruit Salad & Fruit Snack Example - From F# to Ha...
Sum and Product Types - The Fruit Salad & Fruit Snack Example - From F# to Ha...
 
Retrofit
RetrofitRetrofit
Retrofit
 
7 rules of simple and maintainable code
7 rules of simple and maintainable code7 rules of simple and maintainable code
7 rules of simple and maintainable code
 
Object-oriented Programming-with C#
Object-oriented Programming-with C#Object-oriented Programming-with C#
Object-oriented Programming-with C#
 
Py.test
Py.testPy.test
Py.test
 
Introduction to kotlin for android app development gdg ahmedabad dev fest 2017
Introduction to kotlin for android app development   gdg ahmedabad dev fest 2017Introduction to kotlin for android app development   gdg ahmedabad dev fest 2017
Introduction to kotlin for android app development gdg ahmedabad dev fest 2017
 
Full Stack Flutter Testing
Full Stack Flutter Testing Full Stack Flutter Testing
Full Stack Flutter Testing
 
Test Driven Development (TDD) Preso 360|Flex 2010
Test Driven Development (TDD) Preso 360|Flex 2010Test Driven Development (TDD) Preso 360|Flex 2010
Test Driven Development (TDD) Preso 360|Flex 2010
 
Flutter
FlutterFlutter
Flutter
 
Android Navigation Component
Android Navigation ComponentAndroid Navigation Component
Android Navigation Component
 
Automation testing material by Durgasoft,hyderabad
Automation testing material by Durgasoft,hyderabadAutomation testing material by Durgasoft,hyderabad
Automation testing material by Durgasoft,hyderabad
 
The Death of Final Tagless
The Death of Final TaglessThe Death of Final Tagless
The Death of Final Tagless
 
Terraform -- Infrastructure as Code
Terraform -- Infrastructure as CodeTerraform -- Infrastructure as Code
Terraform -- Infrastructure as Code
 
Functional Patterns in Domain Modeling
Functional Patterns in Domain ModelingFunctional Patterns in Domain Modeling
Functional Patterns in Domain Modeling
 
Python For Data Science Cheat Sheet
Python For Data Science Cheat SheetPython For Data Science Cheat Sheet
Python For Data Science Cheat Sheet
 
Kotlin InDepth Tutorial for beginners 2022
Kotlin InDepth Tutorial for beginners 2022Kotlin InDepth Tutorial for beginners 2022
Kotlin InDepth Tutorial for beginners 2022
 
Unix shell scripting basics
Unix shell scripting basicsUnix shell scripting basics
Unix shell scripting basics
 
Coroutines in Kotlin
Coroutines in KotlinCoroutines in Kotlin
Coroutines in Kotlin
 

Semelhante a Sylius and Api Platform The story of integration

Doctrine For Beginners
Doctrine For BeginnersDoctrine For Beginners
Doctrine For BeginnersJonathan Wage
 
Building Multi-Tenant and SaaS products in PHP - CloudConf 2015
Building Multi-Tenant and SaaS products in PHP - CloudConf 2015Building Multi-Tenant and SaaS products in PHP - CloudConf 2015
Building Multi-Tenant and SaaS products in PHP - CloudConf 2015Innomatic Platform
 
Protocol-Oriented Programming in Swift
Protocol-Oriented Programming in SwiftProtocol-Oriented Programming in Swift
Protocol-Oriented Programming in SwiftOleksandr Stepanov
 
Working With The Symfony Admin Generator
Working With The Symfony Admin GeneratorWorking With The Symfony Admin Generator
Working With The Symfony Admin GeneratorJohn Cleveley
 
Crafting Quality PHP Applications (Bucharest Tech Week 2017)
Crafting Quality PHP Applications (Bucharest Tech Week 2017)Crafting Quality PHP Applications (Bucharest Tech Week 2017)
Crafting Quality PHP Applications (Bucharest Tech Week 2017)James Titcumb
 
Application Layer in PHP
Application Layer in PHPApplication Layer in PHP
Application Layer in PHPPer Bernhardt
 
How to switch stack without downtime
How to switch stack without downtimeHow to switch stack without downtime
How to switch stack without downtimeFabien Penso
 
DDD on example of Symfony (Webcamp Odessa 2014)
DDD on example of Symfony (Webcamp Odessa 2014)DDD on example of Symfony (Webcamp Odessa 2014)
DDD on example of Symfony (Webcamp Odessa 2014)Oleg Zinchenko
 
Domain-driven Design in PHP and Symfony - Drupal Camp Wroclaw!
Domain-driven Design in PHP and Symfony - Drupal Camp Wroclaw!Domain-driven Design in PHP and Symfony - Drupal Camp Wroclaw!
Domain-driven Design in PHP and Symfony - Drupal Camp Wroclaw!Kacper Gunia
 
How to code to code less
How to code to code lessHow to code to code less
How to code to code lessAnton Novikau
 
Dart for Java Developers
Dart for Java DevelopersDart for Java Developers
Dart for Java DevelopersYakov Fain
 
Code Generation in Magento 2
Code Generation in Magento 2Code Generation in Magento 2
Code Generation in Magento 2Sergii Shymko
 
Need for Speed: Removing speed bumps in API Projects
Need for Speed: Removing speed bumps in API ProjectsNeed for Speed: Removing speed bumps in API Projects
Need for Speed: Removing speed bumps in API ProjectsŁukasz Chruściel
 
Crafting Quality PHP Applications (PHP Benelux 2018)
Crafting Quality PHP Applications (PHP Benelux 2018)Crafting Quality PHP Applications (PHP Benelux 2018)
Crafting Quality PHP Applications (PHP Benelux 2018)James Titcumb
 
AEM & eCommerce integration
AEM & eCommerce integrationAEM & eCommerce integration
AEM & eCommerce integrationLokesh BS
 
Michiel Overeem (AFAS) - Enterprise software schaalbaar maken met Service Fab...
Michiel Overeem (AFAS) - Enterprise software schaalbaar maken met Service Fab...Michiel Overeem (AFAS) - Enterprise software schaalbaar maken met Service Fab...
Michiel Overeem (AFAS) - Enterprise software schaalbaar maken met Service Fab...AFAS Software
 
Developing A Real World Logistic Application With Oracle Application - UKOUG ...
Developing A Real World Logistic Application With Oracle Application - UKOUG ...Developing A Real World Logistic Application With Oracle Application - UKOUG ...
Developing A Real World Logistic Application With Oracle Application - UKOUG ...Roel Hartman
 

Semelhante a Sylius and Api Platform The story of integration (20)

Hexagonal architecture
Hexagonal architectureHexagonal architecture
Hexagonal architecture
 
Doctrine For Beginners
Doctrine For BeginnersDoctrine For Beginners
Doctrine For Beginners
 
Building Multi-Tenant and SaaS products in PHP - CloudConf 2015
Building Multi-Tenant and SaaS products in PHP - CloudConf 2015Building Multi-Tenant and SaaS products in PHP - CloudConf 2015
Building Multi-Tenant and SaaS products in PHP - CloudConf 2015
 
Protocol-Oriented Programming in Swift
Protocol-Oriented Programming in SwiftProtocol-Oriented Programming in Swift
Protocol-Oriented Programming in Swift
 
Working With The Symfony Admin Generator
Working With The Symfony Admin GeneratorWorking With The Symfony Admin Generator
Working With The Symfony Admin Generator
 
Event Sourcing with php
Event Sourcing with phpEvent Sourcing with php
Event Sourcing with php
 
Crafting Quality PHP Applications (Bucharest Tech Week 2017)
Crafting Quality PHP Applications (Bucharest Tech Week 2017)Crafting Quality PHP Applications (Bucharest Tech Week 2017)
Crafting Quality PHP Applications (Bucharest Tech Week 2017)
 
Application Layer in PHP
Application Layer in PHPApplication Layer in PHP
Application Layer in PHP
 
How to switch stack without downtime
How to switch stack without downtimeHow to switch stack without downtime
How to switch stack without downtime
 
DDD on example of Symfony (Webcamp Odessa 2014)
DDD on example of Symfony (Webcamp Odessa 2014)DDD on example of Symfony (Webcamp Odessa 2014)
DDD on example of Symfony (Webcamp Odessa 2014)
 
Domain-driven Design in PHP and Symfony - Drupal Camp Wroclaw!
Domain-driven Design in PHP and Symfony - Drupal Camp Wroclaw!Domain-driven Design in PHP and Symfony - Drupal Camp Wroclaw!
Domain-driven Design in PHP and Symfony - Drupal Camp Wroclaw!
 
How to code to code less
How to code to code lessHow to code to code less
How to code to code less
 
Dart for Java Developers
Dart for Java DevelopersDart for Java Developers
Dart for Java Developers
 
Using the Windows 8 Runtime from C++
Using the Windows 8 Runtime from C++Using the Windows 8 Runtime from C++
Using the Windows 8 Runtime from C++
 
Code Generation in Magento 2
Code Generation in Magento 2Code Generation in Magento 2
Code Generation in Magento 2
 
Need for Speed: Removing speed bumps in API Projects
Need for Speed: Removing speed bumps in API ProjectsNeed for Speed: Removing speed bumps in API Projects
Need for Speed: Removing speed bumps in API Projects
 
Crafting Quality PHP Applications (PHP Benelux 2018)
Crafting Quality PHP Applications (PHP Benelux 2018)Crafting Quality PHP Applications (PHP Benelux 2018)
Crafting Quality PHP Applications (PHP Benelux 2018)
 
AEM & eCommerce integration
AEM & eCommerce integrationAEM & eCommerce integration
AEM & eCommerce integration
 
Michiel Overeem (AFAS) - Enterprise software schaalbaar maken met Service Fab...
Michiel Overeem (AFAS) - Enterprise software schaalbaar maken met Service Fab...Michiel Overeem (AFAS) - Enterprise software schaalbaar maken met Service Fab...
Michiel Overeem (AFAS) - Enterprise software schaalbaar maken met Service Fab...
 
Developing A Real World Logistic Application With Oracle Application - UKOUG ...
Developing A Real World Logistic Application With Oracle Application - UKOUG ...Developing A Real World Logistic Application With Oracle Application - UKOUG ...
Developing A Real World Logistic Application With Oracle Application - UKOUG ...
 

Mais de Łukasz Chruściel

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
 
ConFoo 2024 - Need for Speed: Removing speed bumps in API Projects
ConFoo 2024  - Need for Speed: Removing speed bumps in API ProjectsConFoo 2024  - Need for Speed: Removing speed bumps in API Projects
ConFoo 2024 - Need for Speed: Removing speed bumps in API ProjectsŁukasz Chruściel
 
ConFoo 2024 - Sylius 2.0, top-notch eCommerce for customizable solution
ConFoo 2024 - Sylius 2.0, top-notch eCommerce for customizable solutionConFoo 2024 - Sylius 2.0, top-notch eCommerce for customizable solution
ConFoo 2024 - Sylius 2.0, top-notch eCommerce for customizable solutionŁukasz Chruściel
 
SyliusCon - Typical pitfalls of Sylius development.pdf
SyliusCon - Typical pitfalls of Sylius development.pdfSyliusCon - Typical pitfalls of Sylius development.pdf
SyliusCon - Typical pitfalls of Sylius development.pdfŁukasz Chruściel
 
SymfonyLive Online 2023 - Is SOLID dead? .pdf
SymfonyLive Online 2023 - Is SOLID dead? .pdfSymfonyLive Online 2023 - Is SOLID dead? .pdf
SymfonyLive Online 2023 - Is SOLID dead? .pdfŁukasz Chruściel
 
Worldwide Software Architecture Summit'23 - BDD and why most of us do it wron...
Worldwide Software Architecture Summit'23 - BDD and why most of us do it wron...Worldwide Software Architecture Summit'23 - BDD and why most of us do it wron...
Worldwide Software Architecture Summit'23 - BDD and why most of us do it wron...Łukasz Chruściel
 
4Developers - Rozterki i decyzje.pdf
4Developers - Rozterki i decyzje.pdf4Developers - Rozterki i decyzje.pdf
4Developers - Rozterki i decyzje.pdfŁukasz Chruściel
 
4Developers - Sylius CRUD generation revisited.pdf
4Developers - Sylius CRUD generation revisited.pdf4Developers - Sylius CRUD generation revisited.pdf
4Developers - Sylius CRUD generation revisited.pdfŁukasz Chruściel
 
BoilingFrogs - Rozterki i decyzje. Czego się nauczyliśmy projektując API Syliusa
BoilingFrogs - Rozterki i decyzje. Czego się nauczyliśmy projektując API SyliusaBoilingFrogs - Rozterki i decyzje. Czego się nauczyliśmy projektując API Syliusa
BoilingFrogs - Rozterki i decyzje. Czego się nauczyliśmy projektując API SyliusaŁukasz Chruściel
 
What we've learned designing new Sylius API
What we've learned designing new Sylius APIWhat we've learned designing new Sylius API
What we've learned designing new Sylius APIŁukasz Chruściel
 
How to optimize background processes.pdf
How to optimize background processes.pdfHow to optimize background processes.pdf
How to optimize background processes.pdfŁukasz Chruściel
 
SymfonyCon - Dilemmas and decisions..pdf
SymfonyCon - Dilemmas and decisions..pdfSymfonyCon - Dilemmas and decisions..pdf
SymfonyCon - Dilemmas and decisions..pdfŁukasz Chruściel
 
How to optimize background processes - when Sylius meets Blackfire
How to optimize background processes - when Sylius meets BlackfireHow to optimize background processes - when Sylius meets Blackfire
How to optimize background processes - when Sylius meets BlackfireŁukasz Chruściel
 
Symfony World - Symfony components and design patterns
Symfony World - Symfony components and design patternsSymfony World - Symfony components and design patterns
Symfony World - Symfony components and design patternsŁukasz Chruściel
 
Dutch php a short tale about state machine
Dutch php   a short tale about state machineDutch php   a short tale about state machine
Dutch php a short tale about state machineŁukasz Chruściel
 
A short tale about state machine
A short tale about state machineA short tale about state machine
A short tale about state machineŁukasz Chruściel
 
A short tale about state machine
A short tale about state machineA short tale about state machine
A short tale about state machineŁukasz Chruściel
 
BDD in practice based on an open source project
BDD in practice based on an open source projectBDD in practice based on an open source project
BDD in practice based on an open source projectŁukasz Chruściel
 
Diversified application testing based on a Sylius project
Diversified application testing based on a Sylius projectDiversified application testing based on a Sylius project
Diversified application testing based on a Sylius projectŁukasz Chruściel
 

Mais de Łukasz Chruściel (20)

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
 
ConFoo 2024 - Need for Speed: Removing speed bumps in API Projects
ConFoo 2024  - Need for Speed: Removing speed bumps in API ProjectsConFoo 2024  - Need for Speed: Removing speed bumps in API Projects
ConFoo 2024 - Need for Speed: Removing speed bumps in API Projects
 
ConFoo 2024 - Sylius 2.0, top-notch eCommerce for customizable solution
ConFoo 2024 - Sylius 2.0, top-notch eCommerce for customizable solutionConFoo 2024 - Sylius 2.0, top-notch eCommerce for customizable solution
ConFoo 2024 - Sylius 2.0, top-notch eCommerce for customizable solution
 
SyliusCon - Typical pitfalls of Sylius development.pdf
SyliusCon - Typical pitfalls of Sylius development.pdfSyliusCon - Typical pitfalls of Sylius development.pdf
SyliusCon - Typical pitfalls of Sylius development.pdf
 
SymfonyLive Online 2023 - Is SOLID dead? .pdf
SymfonyLive Online 2023 - Is SOLID dead? .pdfSymfonyLive Online 2023 - Is SOLID dead? .pdf
SymfonyLive Online 2023 - Is SOLID dead? .pdf
 
Worldwide Software Architecture Summit'23 - BDD and why most of us do it wron...
Worldwide Software Architecture Summit'23 - BDD and why most of us do it wron...Worldwide Software Architecture Summit'23 - BDD and why most of us do it wron...
Worldwide Software Architecture Summit'23 - BDD and why most of us do it wron...
 
4Developers - Rozterki i decyzje.pdf
4Developers - Rozterki i decyzje.pdf4Developers - Rozterki i decyzje.pdf
4Developers - Rozterki i decyzje.pdf
 
4Developers - Sylius CRUD generation revisited.pdf
4Developers - Sylius CRUD generation revisited.pdf4Developers - Sylius CRUD generation revisited.pdf
4Developers - Sylius CRUD generation revisited.pdf
 
BoilingFrogs - Rozterki i decyzje. Czego się nauczyliśmy projektując API Syliusa
BoilingFrogs - Rozterki i decyzje. Czego się nauczyliśmy projektując API SyliusaBoilingFrogs - Rozterki i decyzje. Czego się nauczyliśmy projektując API Syliusa
BoilingFrogs - Rozterki i decyzje. Czego się nauczyliśmy projektując API Syliusa
 
What we've learned designing new Sylius API
What we've learned designing new Sylius APIWhat we've learned designing new Sylius API
What we've learned designing new Sylius API
 
How to optimize background processes.pdf
How to optimize background processes.pdfHow to optimize background processes.pdf
How to optimize background processes.pdf
 
SymfonyCon - Dilemmas and decisions..pdf
SymfonyCon - Dilemmas and decisions..pdfSymfonyCon - Dilemmas and decisions..pdf
SymfonyCon - Dilemmas and decisions..pdf
 
How to optimize background processes - when Sylius meets Blackfire
How to optimize background processes - when Sylius meets BlackfireHow to optimize background processes - when Sylius meets Blackfire
How to optimize background processes - when Sylius meets Blackfire
 
Symfony World - Symfony components and design patterns
Symfony World - Symfony components and design patternsSymfony World - Symfony components and design patterns
Symfony World - Symfony components and design patterns
 
Dutch php a short tale about state machine
Dutch php   a short tale about state machineDutch php   a short tale about state machine
Dutch php a short tale about state machine
 
A short tale about state machine
A short tale about state machineA short tale about state machine
A short tale about state machine
 
A short tale about state machine
A short tale about state machineA short tale about state machine
A short tale about state machine
 
BDD in practice based on an open source project
BDD in practice based on an open source projectBDD in practice based on an open source project
BDD in practice based on an open source project
 
Diversified application testing based on a Sylius project
Diversified application testing based on a Sylius projectDiversified application testing based on a Sylius project
Diversified application testing based on a Sylius project
 
Why do I love and hate php?
Why do I love and hate php?Why do I love and hate php?
Why do I love and hate php?
 

Último

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
 
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.
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
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
 
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
 
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
 
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
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
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
 
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
 
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
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 

Último (20)

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
 
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 ...
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
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
 
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...
 
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
 
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 ☂️
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
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
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
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 ...
 
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
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 

Sylius and Api Platform The story of integration