SlideShare a Scribd company logo
1 of 26
Silverstripe & E-commerce
History

●   Originally started by Silverstripe Ltd at least five
    years ago – abandoned due to lack of
    community buy-in
      ●   Payment module continued to be developed
          by Silvertripe (and now part of GSOC)
●   Since then, developed by Nicolaas and Jeremy,
    Jeremy later starting his own module: shop
●   Silvercart and SwipeStripe are more recent e-
    commerce modules.
Today

●   Four über-developed modules, including
    demo sites, installers, tests, in-depth
    documentation
     ●  Do you see this level of development in
        any of the other modules ?
●   Lots of developers (and their clients) are keen
    to be develop e-commerce applications
     ●   Are they confused by the options?
     ●   Do they use Magento or other applications
         rather than Silverstripe ones?
Modules out there
●   Silvertripe Shop:
      ●   Jeremy, NZ
●   SwipeStripe:
      ●   Frank, NZ
●   Silvercart:
      ●   Roland, Germany
●   Silverstripe E-commerce
      ●   Nicolaas, New Zealand
Silverstripe Shop

●   Author: Jeremy Shipman
●   Excellent documentation
●   Best practice release process
●   Quality tests through TravisCI
●   Code simplicity as well as strong usage of
    Silverstripe core code base and Best
    Practice
●   http://ss-shop.org/
SwipeStripe

●   Author: Frank Mullenger
●   Lots of tests
●   Innovative CMS features
●   Xero integration
●   Virtual products
●   Small licensing fee
●   3.0 ready!
●   http://www.swipestripe.com/
SilverCart

●   Author: Roland Lehmann et al.
●   Probably most polished documentation and out-of-
    the-box solution
●   Does not use the original e-commerce as code base
●   Master-Slave product relationships
      ●   product variations can be grouped while the
          variations can be independently maintained
●   PDF invoices
●   Most usage of third-party tools (e.g.
    DataObjectManager, the YAML CSS framework) and
    most intrusive (e.g. Page extends SilvercartPage)
●   http://www.silvercart.org/
select an e-commerce module

●   What features do I need?
●   What is the smallest code base to achieve this
      ●   The bigger the code base, the more to
          develop / test / maintain
●   Documentation
●   Tests
●   DYI vs Pre-Baked
●   Can I get help? How much will it cost?
E-commerce is Zpeshial
E-commerce is zpeshial 1

●   My experience: all parties underestimate the work
    involved
      ●   Site owner:
            ●   entering / importing products: Images, pricing,
                descriptions, product grouping, variations
            ●   Policies and business processes: delivery costs, tax,
                cancellations, customer communication
      ●   Designer: the amount of screens to design
            ●   You can save a lot of time by standardising forms, etc...
                but many web designers are not very good at this.
      ●   Front-end developer: interaction required
            ●   Ajax stuff, difficult forms, products and product category
                pages work with few or many – definitely diverse -
                products
E-commerce is zpeshial 2

●   Back-end developer:
     ●   this is more an application than a website
           ● Keep a record of transactions (e.g.
             address of the member at time of order –
             not just today)
           ● Many tricky relationships and coding

             challenges
               ● Discounts, delivery, tax, etc... etc...

           ● You have to be precise otherwise end

             customers get upset (websites can be
             more loosely coded)
Silverstripe E-commerce Module
Silverstripe E-commerce

●   Based on the original e-commerce
●   Developers include: Sean, Romain, Jeremy,
    Nicolaas and many others!
●   Original idea: very flexible data structure
●   Currently being developed mainly by Nicolaas
●   Uses Payment Module
Data Structure
●   Config                                             ●   Sales
             EcommerceDBConfig
                                                                 Order
       ●
                                                             ●

       ●     YAML file replaces traditional
             static variables
                                                             ●   Order has many
                                                                 OrderAttributes (abstract
●   Product Pages / Objects                                      class)
       ●     Product Category                                        ●   Item
             (ProductGroupPage)
                                                                     ●   Modifier
                 ●   Can show all sorts of
                     combination of products                 ●   Order has one Billing +
       ●     Product Page                                        Shipping Address
                 ●   Product Variation (many for one                 ●   Linked to Country + Region
                     Product)
                                                       ●   Customer (Member extension)
       ●     Other buyables
                 ●   Create as needed, any
                                                       ●   Process
                     DataObject can be turned into a
                     buyable                                 ●   OrderStep
●   Other Pages                                              ●   OrderStatusLog
       ●     CartPage + CheckoutPage +
             OrderConfirmationPage
                                                             ●   OrderEmailRecord
       ●     AccountPage
Product (buyable) Features

●   Product Categories CMS customisation
    ●   products to show, filter, sorting
●   Full Site Tree Sorting
    ●   retain product sorting outside of traditional
        structure
●   Best Available Image
    ●   inherit image from parent (be it Product,
        ProductGroup or Default Image)
●   Optional weight, model (SKU), IsFeatured,
    quantifier (e.g. per month)
●   Full (hidden) Title for efficient Keyword Searching
Cart / Checkout Features

●   All cart functions “ajaxified”
●   Currency conversion
●   Editable checkout steps (one to many steps) –
    always ending in a confirm and pay then “print
    invoice” page.
●   Ability to add zero to many forms / fields for
    collecting additional info in checkout
●   Optional password field
        ●   Customer has option but does not feel like they have to
            create an account
●   Remember previous addresses for Member
●   Shop Admin (separate security group) can create
    also create full Order from CMS
Post Sale Features

●   Ability to pay again / later
●   Customisable Order Steps (Jeremy's idea) from
    “creation” through to “archiving”
      ●   Allows connectivity with third-party applications at
          “precise” step in order process
      ●   Admin reviews Orders “stuck” at each step
            ●   e.g. 10 orders to mail out, 7 orders to confirm payment
●   Ability to send updates to customer (e.g. courier
    code)
●   Customer can cancel Order (if configured this way)
●   Nicely formatted emails with logo, shop address,
    etc...
●   Restful API
A few add-ons we have built
●   also recommended - if you buy         ●   corporate account (approve account,
    this, also buy ...                        security groups as customers)

●   any price product + donations
                                          ●   discount coupon
    including round-up donation           ●   product tags: alternative product
                                              grouping
●   check product availability: place
    order, but hold to confirm            ●   product variations with colours
●   club order: place order for a group   ●   repeat orders
    of people                             ●   stock control
●   combination product: combine          ●   tax – per country / per product
    products into a package
                                          ●   quick add system
●   complex pricing: pricing based on
    country or member security group      ●   delivery costings for NZ + AU based on
                                              postal system
●   delivery based on weight, price,      ●   reward system
    country, etc...
                                          ●   Favourites
●   electronic download product
                                          ●   Quick Checkout: fastest way to add lots
                                              of products
Features in the pipe-line

●   3.0 !
●   Xero Connectivity
●   PDF invoices
●   Many Images for each product
●   Improved importing
●   Twitter + Facebook integration
●   Multi-shop
Development tools

●   YAML configuration
●   /dev/ecommerce/
●   Templates broken up into smaller snippets for
    mix and match
●   Migration task takes you from 0.5 to 1.0
●   Variables for Ajax html classes and Ids
YAML example
/dev/ecommerce
Settings review
Coding challenges in e-commerce
●   Versioning / rules about                    ●   Keep code flexible enough
    changing data                                   to work with many
                                                    requirements
      ●   canCreate, canEdit,
          canDelete are carefully                     ●   Add lots of “hooks”
          defined                                     ●   Allow class replacement
      ●   Keep version number                                ●   e.g. Order = new
          relating to sales                                      $MyOrderClassName
      ●   Referential integrity                 ●   Many objects relationship
             ●   can we delete a product?             ●   BAD: one Order HasMany
      ●   “De-normalisation”                              Products
             ●   product price changes !=             ●   GOOD: one Order
                 price in old orders for this
                 product                                  HasMany “Buyables”
                                                      ●   Save ClassName + ID (+
                                                          Version)
                                                      ●   Challenge: Buyable Form
                                                          Field
Silverstripe improvements needed

●   ModelAdmin: better presentation and easier to
    customise
      ●   Solution: gridfield?
●   Versioning and staging
      ●   Clearer documentation
      ●   Easier to implement
●   Forms more flexible
●   Many of these features are available in 3.0!
THANK YOU – QUESTIONS?

More Related Content

Similar to Silverstripe Ecommerce

Drupal 414: Meet Commerce 2.0
Drupal 414: Meet Commerce 2.0Drupal 414: Meet Commerce 2.0
Drupal 414: Meet Commerce 2.0Matt Glaman
 
Migration of a high-traffic E-commerce website from Legacy Monolith to Micros...
Migration of a high-traffic E-commerce website from Legacy Monolith to Micros...Migration of a high-traffic E-commerce website from Legacy Monolith to Micros...
Migration of a high-traffic E-commerce website from Legacy Monolith to Micros...Pavel Pratyush
 
Drupal commerce 2.x for Drupal 8
Drupal commerce 2.x for Drupal 8Drupal commerce 2.x for Drupal 8
Drupal commerce 2.x for Drupal 8Iztok Smolic
 
openERP- How to connect OpenERP with external Systems, AkretionAkretion base...
openERP-  How to connect OpenERP with external Systems, AkretionAkretion base...openERP-  How to connect OpenERP with external Systems, AkretionAkretion base...
openERP- How to connect OpenERP with external Systems, AkretionAkretion base...Odoo
 
The (Long) Road to Commerce 1.0
The (Long) Road to Commerce 1.0The (Long) Road to Commerce 1.0
The (Long) Road to Commerce 1.0Mark Hamstra
 
Joomla User Group Suffolk - July 2012 - Crossing the line first or last - per...
Joomla User Group Suffolk - July 2012 - Crossing the line first or last - per...Joomla User Group Suffolk - July 2012 - Crossing the line first or last - per...
Joomla User Group Suffolk - July 2012 - Crossing the line first or last - per...Ruth Cheesley
 
Managing Multiple Store Fronts on Magento
Managing Multiple Store Fronts on MagentoManaging Multiple Store Fronts on Magento
Managing Multiple Store Fronts on MagentoGeoffrey Mobisson
 
Drupal Commerce contributed modules overview
Drupal Commerce contributed modules overviewDrupal Commerce contributed modules overview
Drupal Commerce contributed modules overviewPedro Cambra
 
Akretion magento erp_connect
Akretion magento erp_connectAkretion magento erp_connect
Akretion magento erp_connectNico Tristan
 
E-Commerce and MongoDB at Backcountry.com
E-Commerce and MongoDB at Backcountry.comE-Commerce and MongoDB at Backcountry.com
E-Commerce and MongoDB at Backcountry.comMongoDB
 
MongoDB@sfr.fr
MongoDB@sfr.frMongoDB@sfr.fr
MongoDB@sfr.frbeboutou
 
Drupal Commerce 2 for Drupal 8 - Drupal camp Antwerp 2017
Drupal Commerce 2 for Drupal 8 - Drupal camp Antwerp 2017Drupal Commerce 2 for Drupal 8 - Drupal camp Antwerp 2017
Drupal Commerce 2 for Drupal 8 - Drupal camp Antwerp 2017Iztok Smolic
 
Magento live eCommerce demo tutorial for beginners by Magento Universe
Magento live eCommerce demo tutorial for beginners by Magento UniverseMagento live eCommerce demo tutorial for beginners by Magento Universe
Magento live eCommerce demo tutorial for beginners by Magento UniverseMagento Universe
 
Magento Live eCommerce Demo Tutorial for Beginners » Magento Universe
Magento Live eCommerce Demo Tutorial for Beginners » Magento UniverseMagento Live eCommerce Demo Tutorial for Beginners » Magento Universe
Magento Live eCommerce Demo Tutorial for Beginners » Magento UniversePuneet Parashar
 
Enterprise PHP Architecture through Design Patterns and Modularization (Midwe...
Enterprise PHP Architecture through Design Patterns and Modularization (Midwe...Enterprise PHP Architecture through Design Patterns and Modularization (Midwe...
Enterprise PHP Architecture through Design Patterns and Modularization (Midwe...Aaron Saray
 
Myntra.com's Big Data Platform
Myntra.com's Big Data PlatformMyntra.com's Big Data Platform
Myntra.com's Big Data PlatformApoorva Gaurav
 
Let's go shopping with Drupal!
Let's go shopping with Drupal!Let's go shopping with Drupal!
Let's go shopping with Drupal!agileware
 
Spring 21 Salesforce Release Webinar
Spring 21 Salesforce Release WebinarSpring 21 Salesforce Release Webinar
Spring 21 Salesforce Release Webinarbrightgenss
 
[Srijan Wednesday Webinars] Meet Commerce 2.X
[Srijan Wednesday Webinars]  Meet Commerce 2.X[Srijan Wednesday Webinars]  Meet Commerce 2.X
[Srijan Wednesday Webinars] Meet Commerce 2.XSrijan Technologies
 

Similar to Silverstripe Ecommerce (20)

Drupal 414: Meet Commerce 2.0
Drupal 414: Meet Commerce 2.0Drupal 414: Meet Commerce 2.0
Drupal 414: Meet Commerce 2.0
 
Migration of a high-traffic E-commerce website from Legacy Monolith to Micros...
Migration of a high-traffic E-commerce website from Legacy Monolith to Micros...Migration of a high-traffic E-commerce website from Legacy Monolith to Micros...
Migration of a high-traffic E-commerce website from Legacy Monolith to Micros...
 
Drupal commerce 2.x for Drupal 8
Drupal commerce 2.x for Drupal 8Drupal commerce 2.x for Drupal 8
Drupal commerce 2.x for Drupal 8
 
Odoo Akeneo Connector
Odoo Akeneo ConnectorOdoo Akeneo Connector
Odoo Akeneo Connector
 
openERP- How to connect OpenERP with external Systems, AkretionAkretion base...
openERP-  How to connect OpenERP with external Systems, AkretionAkretion base...openERP-  How to connect OpenERP with external Systems, AkretionAkretion base...
openERP- How to connect OpenERP with external Systems, AkretionAkretion base...
 
The (Long) Road to Commerce 1.0
The (Long) Road to Commerce 1.0The (Long) Road to Commerce 1.0
The (Long) Road to Commerce 1.0
 
Joomla User Group Suffolk - July 2012 - Crossing the line first or last - per...
Joomla User Group Suffolk - July 2012 - Crossing the line first or last - per...Joomla User Group Suffolk - July 2012 - Crossing the line first or last - per...
Joomla User Group Suffolk - July 2012 - Crossing the line first or last - per...
 
Managing Multiple Store Fronts on Magento
Managing Multiple Store Fronts on MagentoManaging Multiple Store Fronts on Magento
Managing Multiple Store Fronts on Magento
 
Drupal Commerce contributed modules overview
Drupal Commerce contributed modules overviewDrupal Commerce contributed modules overview
Drupal Commerce contributed modules overview
 
Akretion magento erp_connect
Akretion magento erp_connectAkretion magento erp_connect
Akretion magento erp_connect
 
E-Commerce and MongoDB at Backcountry.com
E-Commerce and MongoDB at Backcountry.comE-Commerce and MongoDB at Backcountry.com
E-Commerce and MongoDB at Backcountry.com
 
MongoDB@sfr.fr
MongoDB@sfr.frMongoDB@sfr.fr
MongoDB@sfr.fr
 
Drupal Commerce 2 for Drupal 8 - Drupal camp Antwerp 2017
Drupal Commerce 2 for Drupal 8 - Drupal camp Antwerp 2017Drupal Commerce 2 for Drupal 8 - Drupal camp Antwerp 2017
Drupal Commerce 2 for Drupal 8 - Drupal camp Antwerp 2017
 
Magento live eCommerce demo tutorial for beginners by Magento Universe
Magento live eCommerce demo tutorial for beginners by Magento UniverseMagento live eCommerce demo tutorial for beginners by Magento Universe
Magento live eCommerce demo tutorial for beginners by Magento Universe
 
Magento Live eCommerce Demo Tutorial for Beginners » Magento Universe
Magento Live eCommerce Demo Tutorial for Beginners » Magento UniverseMagento Live eCommerce Demo Tutorial for Beginners » Magento Universe
Magento Live eCommerce Demo Tutorial for Beginners » Magento Universe
 
Enterprise PHP Architecture through Design Patterns and Modularization (Midwe...
Enterprise PHP Architecture through Design Patterns and Modularization (Midwe...Enterprise PHP Architecture through Design Patterns and Modularization (Midwe...
Enterprise PHP Architecture through Design Patterns and Modularization (Midwe...
 
Myntra.com's Big Data Platform
Myntra.com's Big Data PlatformMyntra.com's Big Data Platform
Myntra.com's Big Data Platform
 
Let's go shopping with Drupal!
Let's go shopping with Drupal!Let's go shopping with Drupal!
Let's go shopping with Drupal!
 
Spring 21 Salesforce Release Webinar
Spring 21 Salesforce Release WebinarSpring 21 Salesforce Release Webinar
Spring 21 Salesforce Release Webinar
 
[Srijan Wednesday Webinars] Meet Commerce 2.X
[Srijan Wednesday Webinars]  Meet Commerce 2.X[Srijan Wednesday Webinars]  Meet Commerce 2.X
[Srijan Wednesday Webinars] Meet Commerce 2.X
 

Recently uploaded

Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Neo4j
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraDeakin University
 

Recently uploaded (20)

Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
The transition to renewables in India.pdf
The transition to renewables in India.pdfThe transition to renewables in India.pdf
The transition to renewables in India.pdf
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning era
 

Silverstripe Ecommerce

  • 2. History ● Originally started by Silverstripe Ltd at least five years ago – abandoned due to lack of community buy-in ● Payment module continued to be developed by Silvertripe (and now part of GSOC) ● Since then, developed by Nicolaas and Jeremy, Jeremy later starting his own module: shop ● Silvercart and SwipeStripe are more recent e- commerce modules.
  • 3. Today ● Four über-developed modules, including demo sites, installers, tests, in-depth documentation ● Do you see this level of development in any of the other modules ? ● Lots of developers (and their clients) are keen to be develop e-commerce applications ● Are they confused by the options? ● Do they use Magento or other applications rather than Silverstripe ones?
  • 4. Modules out there ● Silvertripe Shop: ● Jeremy, NZ ● SwipeStripe: ● Frank, NZ ● Silvercart: ● Roland, Germany ● Silverstripe E-commerce ● Nicolaas, New Zealand
  • 5. Silverstripe Shop ● Author: Jeremy Shipman ● Excellent documentation ● Best practice release process ● Quality tests through TravisCI ● Code simplicity as well as strong usage of Silverstripe core code base and Best Practice ● http://ss-shop.org/
  • 6. SwipeStripe ● Author: Frank Mullenger ● Lots of tests ● Innovative CMS features ● Xero integration ● Virtual products ● Small licensing fee ● 3.0 ready! ● http://www.swipestripe.com/
  • 7. SilverCart ● Author: Roland Lehmann et al. ● Probably most polished documentation and out-of- the-box solution ● Does not use the original e-commerce as code base ● Master-Slave product relationships ● product variations can be grouped while the variations can be independently maintained ● PDF invoices ● Most usage of third-party tools (e.g. DataObjectManager, the YAML CSS framework) and most intrusive (e.g. Page extends SilvercartPage) ● http://www.silvercart.org/
  • 8. select an e-commerce module ● What features do I need? ● What is the smallest code base to achieve this ● The bigger the code base, the more to develop / test / maintain ● Documentation ● Tests ● DYI vs Pre-Baked ● Can I get help? How much will it cost?
  • 10. E-commerce is zpeshial 1 ● My experience: all parties underestimate the work involved ● Site owner: ● entering / importing products: Images, pricing, descriptions, product grouping, variations ● Policies and business processes: delivery costs, tax, cancellations, customer communication ● Designer: the amount of screens to design ● You can save a lot of time by standardising forms, etc... but many web designers are not very good at this. ● Front-end developer: interaction required ● Ajax stuff, difficult forms, products and product category pages work with few or many – definitely diverse - products
  • 11. E-commerce is zpeshial 2 ● Back-end developer: ● this is more an application than a website ● Keep a record of transactions (e.g. address of the member at time of order – not just today) ● Many tricky relationships and coding challenges ● Discounts, delivery, tax, etc... etc... ● You have to be precise otherwise end customers get upset (websites can be more loosely coded)
  • 13. Silverstripe E-commerce ● Based on the original e-commerce ● Developers include: Sean, Romain, Jeremy, Nicolaas and many others! ● Original idea: very flexible data structure ● Currently being developed mainly by Nicolaas ● Uses Payment Module
  • 14. Data Structure ● Config ● Sales EcommerceDBConfig Order ● ● ● YAML file replaces traditional static variables ● Order has many OrderAttributes (abstract ● Product Pages / Objects class) ● Product Category ● Item (ProductGroupPage) ● Modifier ● Can show all sorts of combination of products ● Order has one Billing + ● Product Page Shipping Address ● Product Variation (many for one ● Linked to Country + Region Product) ● Customer (Member extension) ● Other buyables ● Create as needed, any ● Process DataObject can be turned into a buyable ● OrderStep ● Other Pages ● OrderStatusLog ● CartPage + CheckoutPage + OrderConfirmationPage ● OrderEmailRecord ● AccountPage
  • 15. Product (buyable) Features ● Product Categories CMS customisation ● products to show, filter, sorting ● Full Site Tree Sorting ● retain product sorting outside of traditional structure ● Best Available Image ● inherit image from parent (be it Product, ProductGroup or Default Image) ● Optional weight, model (SKU), IsFeatured, quantifier (e.g. per month) ● Full (hidden) Title for efficient Keyword Searching
  • 16. Cart / Checkout Features ● All cart functions “ajaxified” ● Currency conversion ● Editable checkout steps (one to many steps) – always ending in a confirm and pay then “print invoice” page. ● Ability to add zero to many forms / fields for collecting additional info in checkout ● Optional password field ● Customer has option but does not feel like they have to create an account ● Remember previous addresses for Member ● Shop Admin (separate security group) can create also create full Order from CMS
  • 17. Post Sale Features ● Ability to pay again / later ● Customisable Order Steps (Jeremy's idea) from “creation” through to “archiving” ● Allows connectivity with third-party applications at “precise” step in order process ● Admin reviews Orders “stuck” at each step ● e.g. 10 orders to mail out, 7 orders to confirm payment ● Ability to send updates to customer (e.g. courier code) ● Customer can cancel Order (if configured this way) ● Nicely formatted emails with logo, shop address, etc... ● Restful API
  • 18. A few add-ons we have built ● also recommended - if you buy ● corporate account (approve account, this, also buy ... security groups as customers) ● any price product + donations ● discount coupon including round-up donation ● product tags: alternative product grouping ● check product availability: place order, but hold to confirm ● product variations with colours ● club order: place order for a group ● repeat orders of people ● stock control ● combination product: combine ● tax – per country / per product products into a package ● quick add system ● complex pricing: pricing based on country or member security group ● delivery costings for NZ + AU based on postal system ● delivery based on weight, price, ● reward system country, etc... ● Favourites ● electronic download product ● Quick Checkout: fastest way to add lots of products
  • 19. Features in the pipe-line ● 3.0 ! ● Xero Connectivity ● PDF invoices ● Many Images for each product ● Improved importing ● Twitter + Facebook integration ● Multi-shop
  • 20. Development tools ● YAML configuration ● /dev/ecommerce/ ● Templates broken up into smaller snippets for mix and match ● Migration task takes you from 0.5 to 1.0 ● Variables for Ajax html classes and Ids
  • 24. Coding challenges in e-commerce ● Versioning / rules about ● Keep code flexible enough changing data to work with many requirements ● canCreate, canEdit, canDelete are carefully ● Add lots of “hooks” defined ● Allow class replacement ● Keep version number ● e.g. Order = new relating to sales $MyOrderClassName ● Referential integrity ● Many objects relationship ● can we delete a product? ● BAD: one Order HasMany ● “De-normalisation” Products ● product price changes != ● GOOD: one Order price in old orders for this product HasMany “Buyables” ● Save ClassName + ID (+ Version) ● Challenge: Buyable Form Field
  • 25. Silverstripe improvements needed ● ModelAdmin: better presentation and easier to customise ● Solution: gridfield? ● Versioning and staging ● Clearer documentation ● Easier to implement ● Forms more flexible ● Many of these features are available in 3.0!
  • 26. THANK YOU – QUESTIONS?