Slide 1

Slide 1 text

Taking E-commerce Syliusly Symfony CAMP UA 2015

Slide 2

Slide 2 text

Saša Stamenković @umpirsky

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

KNP Labs

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

E-commerce is hard

Slide 7

Slide 7 text

E-commerce это хуёвая работа!

Slide 8

Slide 8 text

Programming is hard

Slide 9

Slide 9 text

We are Symfony developers And we love Symfony

Slide 10

Slide 10 text

Why do you love Symfony?

Slide 11

Slide 11 text

You will love Sylius for the same reasons And more...

Slide 12

Slide 12 text

Everything is dedicated to provide exceptional developer experience.

Slide 13

Slide 13 text

Sylius Stack Sylius platform Sylius bundles Sylius components

Slide 14

Slide 14 text

General Resource Flow Taxonomy Settings Attribute Addressing Rbac Locale Variation Mailer Translation

Slide 15

Slide 15 text

E-commerce Product Order Shipping Payment Promotion Inventory Taxation Money Currency Pricing Cart

Slide 16

Slide 16 text

Using Sylius components $ composer require sylius/taxonomy

Slide 17

Slide 17 text

Using Sylius bundles $ composer require sylius/taxonomy-bundle Enable it in kernel, configure: sylius_taxonomy: driver: doctrine/orm ...

Slide 18

Slide 18 text

Developer friendly installer $ composer create-project sylius/sylius $ cd sylius $ php app/console sylius:install

Slide 19

Slide 19 text

$ ./app/console sylius:install Installing Sylius... Step 1 of 4. Checking system requirements. +--------------------+----------------+ | Issue | Recommendation | +--------------------+----------------+ | short_open_tag | | | session.auto_start | | +--------------------+----------------+ Success! Your system can run Sylius properly. Step 2 of 4. Setting up the database. Creating Sylius database for environment dev. 4/4 [||||||||||||||||||||||||||||] 100%

Slide 20

Slide 20 text

Easy breezy.

Slide 21

Slide 21 text

Standing on the shoulder of giants

Slide 22

Slide 22 text

...and many non reinvented wheels!

Slide 23

Slide 23 text

Full stack BDD

Slide 24

Slide 24 text

Sylius\Component\Addressing\Matcher\ZoneMatcher 45 ✔ returns null if there are no zones 51 ✔ should match address by province 68 ✔ should match address by province and scope 85 ✔ should match address by country 102 ✔ should match address by country and scope 119 ✔ should match address for nested zones 143 ✔ should match address for nested zones and scope 167 ✔ should match address from province when many are found 194 ✔ should match address from province when many are found by scope 221 ✔ should match all zones when one zone for address is defined 238 ✔ should match all zones by scope when one zone for address is defined

Slide 25

Slide 25 text

Scenario: Placing the order Given I am logged in user And I added product "PHP Top" to cart And I go to the checkout start page And I fill in the shipping address to United Kingdom And I press "Continue" And I select the "DHL Express" radio button And I press "Continue" And I select the "Dummy" radio button And I press "Continue" When I click "Place order" Then I should be on the store homepage And I should see "Thank you for your order!"

Slide 26

Slide 26 text

No content

Slide 27

Slide 27 text

Code Quality

Slide 28

Slide 28 text

No content

Slide 29

Slide 29 text

No content

Slide 30

Slide 30 text

Is it production ready?

Slide 31

Slide 31 text

No content

Slide 32

Slide 32 text

No content

Slide 33

Slide 33 text

No content

Slide 34

Slide 34 text

40M+ page views 3000 orders/month 30K+ products

Slide 35

Slide 35 text

★ Community ★ Clean code ★ BDD ★ Hard updates ★ Steep learning curve ★ Growing codebase

Slide 36

Slide 36 text

Спасибо! @umpirsky