SlideShare a Scribd company logo
1 of 44
Download to read offline
Modern PerlCommerce
             Past and Future
                         API
   Development & Deployment




       Modern PerlCommerce

           Stefan Hornburg (Racke)
            racke@linuxia.de


Pittsburgh Perl Workshop, 8th October 2011




                       racke   Modern PerlCommerce
Modern PerlCommerce
                                     Perl Buzzwords
                   Past and Future
                                     Modern Perl
                               API
                                     PerlCommerce Choices
         Development & Deployment



Nitesi




                             racke   Modern PerlCommerce
Modern PerlCommerce
                                             Perl Buzzwords
                           Past and Future
                                             Modern Perl
                                       API
                                             PerlCommerce Choices
                 Development & Deployment



Perl Buzzwords




      Marketing Perl
      Modern Perl
      Postmodern Perl




                                     racke   Modern PerlCommerce
Modern PerlCommerce
                                               Perl Buzzwords
                             Past and Future
                                               Modern Perl
                                         API
                                               PerlCommerce Choices
                   Development & Deployment



Modern Perl




      CPAN
      Best Practices
      Tests
      Separation (Modules, Plugins, Hooks, Templates)
      PSGI/Plack




                                       racke   Modern PerlCommerce
Modern PerlCommerce
                                             Perl Buzzwords
                           Past and Future
                                             Modern Perl
                                       API
                                             PerlCommerce Choices
                 Development & Deployment



PerlCommerce Choices




      Interchange
      Handel
      Agora
      Business::Cart::Generic




                                     racke   Modern PerlCommerce
Modern PerlCommerce
                            Past and Future   Past
                                        API   Future
                  Development & Deployment



Past




       1995 CGI
       1995 MiniVend
       1998 http://www.materialboerse.de/
       2001 Interchange




                                      racke   Modern PerlCommerce
Modern PerlCommerce
                            Past and Future   Past
                                        API   Future
                  Development & Deployment



Interchange Development




      Lot of things
      Small community
      Same codebase




                                      racke   Modern PerlCommerce
Modern PerlCommerce
                       Past and Future   Past
                                   API   Future
             Development & Deployment



Status quo




                                 racke   Modern PerlCommerce
Modern PerlCommerce
                        Past and Future   Past
                                    API   Future
              Development & Deployment



References




      Backcountry http://www.backcountry.com/
      FragnanceNet http://www.fragrancenet.com/




                                  racke   Modern PerlCommerce
Modern PerlCommerce
                   Past and Future   Past
                               API   Future
         Development & Deployment



Future




                             racke   Modern PerlCommerce
Modern PerlCommerce
                              Past and Future   Past
                                          API   Future
                    Development & Deployment



Principles




       KISS
       Components
       Agnostic
       Expressive




                                        racke   Modern PerlCommerce
Modern PerlCommerce
                              Past and Future   Past
                                          API   Future
                    Development & Deployment



Agnostic




   Cart
          Session
          DBI
          Webservice *




                                        racke   Modern PerlCommerce
Modern PerlCommerce
                            Past and Future   Past
                                        API   Future
                  Development & Deployment



Agnostic




   Account Manager
       DBI
       LDAP *
       OpenID *




                                      racke   Modern PerlCommerce
Modern PerlCommerce
                             Past and Future   Past
                                         API   Future
                   Development & Deployment



Agnostic




   Templating Engine
       Template::Toolkit
       Template::Flute




                                       racke   Modern PerlCommerce
Modern PerlCommerce
                             Past and Future   Past
                                         API   Future
                   Development & Deployment



Agnostic




   Web framework
       Catalyst
       Mojo
       Dancer




                                       racke   Modern PerlCommerce
Modern PerlCommerce
                           Past and Future   Past
                                       API   Future
                 Development & Deployment



Preferences




      Dancer
      Template::Flute
      DBI




                                     racke   Modern PerlCommerce
Modern PerlCommerce
                          Past and Future   Past
                                      API   Future
                Development & Deployment



Framework




     Dispatching requests
     Parameter parsing
     Session handling
     Template engine
     I18N




                                    racke   Modern PerlCommerce
Modern PerlCommerce
                          Past and Future   Past
                                      API   Future
                Development & Deployment



Extensions




      Bundles
      Plugins
      Hooks




                                    racke   Modern PerlCommerce
Modern PerlCommerce
                             Past and Future   Past
                                         API   Future
                   Development & Deployment



Features




      Navigation
      Cart
      Checkout
      Accounts




                                       racke   Modern PerlCommerce
Modern PerlCommerce     Cart
                             Past and Future   Checkout
                                         API   Accounts and Access Control
                   Development & Deployment    Forms



Cart



       SKU, Name, Quantity, Price
       Price > 0
       Combines automatically
       Multiple carts
       Storage everywhere
       Price caching




                                       racke   Modern PerlCommerce
Modern PerlCommerce     Cart
                                          Past and Future   Checkout
                                                      API   Accounts and Access Control
                                Development & Deployment    Forms



Nitesi::Cart Methods

   use Dancer : : P l u g i n : : N i t e s i ;

   c a r t −>add ( sku => ’POM253 ’ , name => ’ Pomelo ’ ,
           p r i c e => 3 . 0 0 , q u a n t i t y => 1 0 ) ;

   c a r t −>remove ( sku => ’POM253 ’ ) ;

   c a r t −>count ( ) ;

   c a r t −>c l e a r ( ) ;

   c a r t −> t o t a l ( ) ;

   c a r t −>s u b t o t a l ( ) ;



                                                    racke   Modern PerlCommerce
Modern PerlCommerce     Cart
                               Past and Future   Checkout
                                           API   Accounts and Access Control
                     Development & Deployment    Forms



Everything is a Cart




       Saved Carts
       Wishlists
       Collections




                                         racke   Modern PerlCommerce
Modern PerlCommerce     Cart
                                 Past and Future   Checkout
                                             API   Accounts and Access Control
                       Development & Deployment    Forms



Multiple Carts




   c a r t ( ’ w i s h l i s t ’ )−>add ( sku => ’ORA322 ’ , name => ’ Orange ’ ,
             p r i c e => 2 . 0 0 , q u a n t i t y => 5 ) ;




                                           racke   Modern PerlCommerce
Modern PerlCommerce     Cart
                          Past and Future   Checkout
                                      API   Accounts and Access Control
                Development & Deployment    Forms



Cart Backends




      Session
      DBI




                                    racke   Modern PerlCommerce
Modern PerlCommerce     Cart
                                Past and Future   Checkout
                                            API   Accounts and Access Control
                      Development & Deployment    Forms



Inventory Check




   MinQuantityField min_quantity
   MaxQuantityField inventory : q u a n t i t y




                                          racke   Modern PerlCommerce
Modern PerlCommerce       Cart
                                    Past and Future     Checkout
                                                API     Accounts and Access Control
                          Development & Deployment      Forms



Inventory Check Hook


   hook ’ b e f o r e _ c a r t _ a d d ’ => sub {
       my ( $ c a r t , $item ) = @_;
       my ( $ i n v e n t o r y ) ;

         $ i n v e n t o r y = query −> s e l e c t _ f i e l d ( t a b l e => ’ p r o d u c t s ’ ,
                                                                  f i e l d => ’ i n v e n t o r y ’ ,
                                                                  where => { sku => $item −>{sku } } ) ;

         i f ( $item −>{ q u a n t i t y } > $ i n v e n t o r y ) {
               $item −>{ e r r o r } = ’ Out o f s t o c k ’ ;
         }
   };




                                              racke     Modern PerlCommerce
Modern PerlCommerce     Cart
                           Past and Future   Checkout
                                       API   Accounts and Access Control
                 Development & Deployment    Forms



Cart Hooks




      before_cart_add
      after_cart_add




                                     racke   Modern PerlCommerce
Modern PerlCommerce     Cart
                          Past and Future   Checkout
                                      API   Accounts and Access Control
                Development & Deployment    Forms



Cart Hooks




      before_cart_remove
      after_cart_remove




                                    racke   Modern PerlCommerce
Modern PerlCommerce     Cart
                           Past and Future   Checkout
                                       API   Accounts and Access Control
                 Development & Deployment    Forms



Checkout




      Taxes
      Shipping
      Payment
      Invoice




                                     racke   Modern PerlCommerce
Modern PerlCommerce     Cart
                         Past and Future   Checkout
                                     API   Accounts and Access Control
               Development & Deployment    Forms



Payment




     Business::OnlinePayment




                                   racke   Modern PerlCommerce
Modern PerlCommerce     Cart
                           Past and Future   Checkout
                                       API   Accounts and Access Control
                 Development & Deployment    Forms



Tax Modules on CPAN




      Business::Tax::Canada
      Business::CA::GST
      Business::Tax::VAT
      Business::Tax::VAT::Validation




                                     racke   Modern PerlCommerce
Modern PerlCommerce     Cart
                          Past and Future   Checkout
                                      API   Accounts and Access Control
                Development & Deployment    Forms



Shipping




      Simple Shipping
      Crazy Shipping
      Shipping API




                                    racke   Modern PerlCommerce
Modern PerlCommerce      Cart
                                     Past and Future    Checkout
                                                 API    Accounts and Access Control
                           Development & Deployment     Forms



Costs




   $ c a r t −>a p p l y _ c o s t ( amount => 5 ) ;

   $ c a r t −>a p p l y _ c o s t ( amount => 0 . 1 9 , r e l a t i v e => 1 ) ;




                                               racke    Modern PerlCommerce
Modern PerlCommerce     Cart
                           Past and Future   Checkout
                                       API   Accounts and Access Control
                 Development & Deployment    Forms



PDF Invoices




      HTML template
      Template::Flute::PDF




                                     racke   Modern PerlCommerce
Modern PerlCommerce     Cart
                                 Past and Future   Checkout
                                             API   Accounts and Access Control
                       Development & Deployment    Forms



Accounts



   p o s t ’ / l o g i n ’ => sub {
          i f ( account −>l o g i n ( username => params ( ’ body ’ ) − >{username } ,
                                         password => params ( ’ body ’ ) − >{password } ) ) {
                 r e d i r e c t ’ / customerservice ’ ;
          }
          else {
                 redirect ’ / login ’ ;
          }
   };




                                           racke   Modern PerlCommerce
Modern PerlCommerce     Cart
                                   Past and Future   Checkout
                                               API   Accounts and Access Control
                         Development & Deployment    Forms



Accounts




   g e t ’ / checkout ’ => sub {
         i f ( account −>a c l ( check => ’ s u b m i t _ o r d e r s ’ ) ) {
               r e t u r n t e m p l a t e ’ checkout ’ ;
         }

         redirect      ’ / access_denied ’ ;
   };




                                             racke   Modern PerlCommerce
Modern PerlCommerce     Cart
                           Past and Future   Checkout
                                       API   Accounts and Access Control
                 Development & Deployment    Forms



Account manager



      Account Providers
      Login/Logout
      Account Information
      Login status
      Forgot password
      Registration




                                     racke   Modern PerlCommerce
Modern PerlCommerce     Cart
                             Past and Future   Checkout
                                         API   Accounts and Access Control
                   Development & Deployment    Forms



Account Provider




      DBI
      LDAP *
      Htpasswd *
      OpenID *
      OAuth *




                                       racke   Modern PerlCommerce
Modern PerlCommerce     Cart
                           Past and Future   Checkout
                                       API   Accounts and Access Control
                 Development & Deployment    Forms



Access Control




      User
      Roles
      Permissions




                                     racke   Modern PerlCommerce
Modern PerlCommerce     Cart
                               Past and Future   Checkout
                                           API   Accounts and Access Control
                     Development & Deployment    Forms



Forms




        Display
        Validation
        Storage




                                         racke   Modern PerlCommerce
Modern PerlCommerce
                                                  Dancer
                                Past and Future
                                                  Contribution
                                            API
                                                  The End
                      Development & Deployment



Routes




         Categories
         Products
         Cart
         Checkout
         Login/Logout
         Customer Service




                                          racke   Modern PerlCommerce
Modern PerlCommerce
                                                      Dancer
                                   Past and Future
                                                      Contribution
                                               API
                                                      The End
                         Development & Deployment



Default Route

   g e t q r { / ( . ∗ ) } => sub {
         my ( $sku ) = s p l a t ;
         my $ p r o d u c t ;

        # check f o r e x i s t i n g p r o d u c t
        i f ( $ p r o d u c t = database −>q u i c k _ s e l e c t ( ’ p r o d u c t s ’ , { sku => $sku } ) )
              # display flypage
              template ’ flypage ’ , $product ;
        }
        else {
              # d i s p l a y n o t found page
              s t a t u s ’ not_found ’ ;
              f o r w a r d ’ 404 ’ ;
        }
   };


                                             racke    Modern PerlCommerce
Modern PerlCommerce
                                          Dancer
                        Past and Future
                                          Contribution
                                    API
                                          The End
              Development & Deployment



CPAN/GitHub


     http://search.cpan.org/dist/Nitesi/
     http://search.cpan.org/dist/Nitesi-DBI/
     http://search.cpan.org/dist/
     Dancer-Plugin-Nitesi/

     https://github.com/racke/Nitesi
     https://github.com/racke/Nitesi-DBI
     https:
     //github.com/racke/Dancer-Plugin-Nitesi



                                  racke   Modern PerlCommerce
Modern PerlCommerce
                                          Dancer
                        Past and Future
                                          Contribution
                                    API
                                          The End
              Development & Deployment



The End




  Slides: http://www.linuxia.de/talks/perlcommerce/
  perlcommerce-beamer.pdf
  Project: https://vsc.state.gov/




                                  racke   Modern PerlCommerce

More Related Content

Similar to Modern PerlCommerce

Ruby on rails | iteron
Ruby on rails | iteronRuby on rails | iteron
Ruby on rails | iteronIteron Group
 
[2011-17-C-4] Heroku & database.com
[2011-17-C-4] Heroku & database.com[2011-17-C-4] Heroku & database.com
[2011-17-C-4] Heroku & database.comMitch Okamoto
 
Mobile and API identity – The New Challenges
Mobile and API identity – The New ChallengesMobile and API identity – The New Challenges
Mobile and API identity – The New ChallengesCA API Management
 
Trends in Web APIs Layer 7 API Management Workshop London
Trends in Web APIs Layer 7 API Management Workshop LondonTrends in Web APIs Layer 7 API Management Workshop London
Trends in Web APIs Layer 7 API Management Workshop LondonCA API Management
 
Merb For The Enterprise
Merb For The EnterpriseMerb For The Enterprise
Merb For The EnterpriseMatt Aimonetti
 
Laravel vs ASP.NET Framework .pdf
Laravel vs ASP.NET Framework .pdfLaravel vs ASP.NET Framework .pdf
Laravel vs ASP.NET Framework .pdfWPWeb Infotech
 
MLLeap, or How to Productionize Data Science Workflows Using Spark by Mikha...
  MLLeap, or How to Productionize Data Science Workflows Using Spark by Mikha...  MLLeap, or How to Productionize Data Science Workflows Using Spark by Mikha...
MLLeap, or How to Productionize Data Science Workflows Using Spark by Mikha...Spark Summit
 
Spark Summit East 2016 - MLeap Presentation
Spark Summit East 2016 -   MLeap PresentationSpark Summit East 2016 -   MLeap Presentation
Spark Summit East 2016 - MLeap PresentationMikhail Semeniuk
 
RDF and SPARQL for PHP Developers (at New York Semantic Web Meetup)
RDF and SPARQL for PHP Developers (at New York Semantic Web Meetup)RDF and SPARQL for PHP Developers (at New York Semantic Web Meetup)
RDF and SPARQL for PHP Developers (at New York Semantic Web Meetup)Benjamin Nowack
 
Phalcon / Zephir Introduction at PHPConfTW2013
Phalcon / Zephir Introduction at PHPConfTW2013Phalcon / Zephir Introduction at PHPConfTW2013
Phalcon / Zephir Introduction at PHPConfTW2013Rack Lin
 
Techniques for Scaling the Netflix API - QCon SF
Techniques for Scaling the Netflix API - QCon SFTechniques for Scaling the Netflix API - QCon SF
Techniques for Scaling the Netflix API - QCon SFDaniel Jacobson
 
Top 15 Ruby on Rails (RoR) Gems by Code Garage Tech
Top 15 Ruby on Rails (RoR) Gems by Code Garage TechTop 15 Ruby on Rails (RoR) Gems by Code Garage Tech
Top 15 Ruby on Rails (RoR) Gems by Code Garage TechCode Garage Tech
 

Similar to Modern PerlCommerce (20)

Ruby on rails
Ruby on railsRuby on rails
Ruby on rails
 
Practical Semantic Web
Practical Semantic WebPractical Semantic Web
Practical Semantic Web
 
Ruby on rails | iteron
Ruby on rails | iteronRuby on rails | iteron
Ruby on rails | iteron
 
API Best Practices
API Best PracticesAPI Best Practices
API Best Practices
 
Ruby on rails api Development case study
Ruby on rails api Development case studyRuby on rails api Development case study
Ruby on rails api Development case study
 
[2011-17-C-4] Heroku & database.com
[2011-17-C-4] Heroku & database.com[2011-17-C-4] Heroku & database.com
[2011-17-C-4] Heroku & database.com
 
Mobile and API identity – The New Challenges
Mobile and API identity – The New ChallengesMobile and API identity – The New Challenges
Mobile and API identity – The New Challenges
 
Trends in Web APIs Layer 7 API Management Workshop London
Trends in Web APIs Layer 7 API Management Workshop LondonTrends in Web APIs Layer 7 API Management Workshop London
Trends in Web APIs Layer 7 API Management Workshop London
 
Merb For The Enterprise
Merb For The EnterpriseMerb For The Enterprise
Merb For The Enterprise
 
Laravel vs ASP.NET Framework .pdf
Laravel vs ASP.NET Framework .pdfLaravel vs ASP.NET Framework .pdf
Laravel vs ASP.NET Framework .pdf
 
MLLeap, or How to Productionize Data Science Workflows Using Spark by Mikha...
  MLLeap, or How to Productionize Data Science Workflows Using Spark by Mikha...  MLLeap, or How to Productionize Data Science Workflows Using Spark by Mikha...
MLLeap, or How to Productionize Data Science Workflows Using Spark by Mikha...
 
Spark Summit East 2016 - MLeap Presentation
Spark Summit East 2016 -   MLeap PresentationSpark Summit East 2016 -   MLeap Presentation
Spark Summit East 2016 - MLeap Presentation
 
Ruby On Rails
Ruby On RailsRuby On Rails
Ruby On Rails
 
RDF and SPARQL for PHP Developers (at New York Semantic Web Meetup)
RDF and SPARQL for PHP Developers (at New York Semantic Web Meetup)RDF and SPARQL for PHP Developers (at New York Semantic Web Meetup)
RDF and SPARQL for PHP Developers (at New York Semantic Web Meetup)
 
SCIO : Apache Beam API
SCIO : Apache Beam APISCIO : Apache Beam API
SCIO : Apache Beam API
 
Phalcon / Zephir Introduction at PHPConfTW2013
Phalcon / Zephir Introduction at PHPConfTW2013Phalcon / Zephir Introduction at PHPConfTW2013
Phalcon / Zephir Introduction at PHPConfTW2013
 
Techniques for Scaling the Netflix API - QCon SF
Techniques for Scaling the Netflix API - QCon SFTechniques for Scaling the Netflix API - QCon SF
Techniques for Scaling the Netflix API - QCon SF
 
Varun-CV-J
Varun-CV-JVarun-CV-J
Varun-CV-J
 
MLeap: Release Spark ML Pipelines
MLeap: Release Spark ML PipelinesMLeap: Release Spark ML Pipelines
MLeap: Release Spark ML Pipelines
 
Top 15 Ruby on Rails (RoR) Gems by Code Garage Tech
Top 15 Ruby on Rails (RoR) Gems by Code Garage TechTop 15 Ruby on Rails (RoR) Gems by Code Garage Tech
Top 15 Ruby on Rails (RoR) Gems by Code Garage Tech
 

Recently uploaded

New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 

Recently uploaded (20)

New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
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
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 

Modern PerlCommerce

  • 1. Modern PerlCommerce Past and Future API Development & Deployment Modern PerlCommerce Stefan Hornburg (Racke) racke@linuxia.de Pittsburgh Perl Workshop, 8th October 2011 racke Modern PerlCommerce
  • 2. Modern PerlCommerce Perl Buzzwords Past and Future Modern Perl API PerlCommerce Choices Development & Deployment Nitesi racke Modern PerlCommerce
  • 3. Modern PerlCommerce Perl Buzzwords Past and Future Modern Perl API PerlCommerce Choices Development & Deployment Perl Buzzwords Marketing Perl Modern Perl Postmodern Perl racke Modern PerlCommerce
  • 4. Modern PerlCommerce Perl Buzzwords Past and Future Modern Perl API PerlCommerce Choices Development & Deployment Modern Perl CPAN Best Practices Tests Separation (Modules, Plugins, Hooks, Templates) PSGI/Plack racke Modern PerlCommerce
  • 5. Modern PerlCommerce Perl Buzzwords Past and Future Modern Perl API PerlCommerce Choices Development & Deployment PerlCommerce Choices Interchange Handel Agora Business::Cart::Generic racke Modern PerlCommerce
  • 6. Modern PerlCommerce Past and Future Past API Future Development & Deployment Past 1995 CGI 1995 MiniVend 1998 http://www.materialboerse.de/ 2001 Interchange racke Modern PerlCommerce
  • 7. Modern PerlCommerce Past and Future Past API Future Development & Deployment Interchange Development Lot of things Small community Same codebase racke Modern PerlCommerce
  • 8. Modern PerlCommerce Past and Future Past API Future Development & Deployment Status quo racke Modern PerlCommerce
  • 9. Modern PerlCommerce Past and Future Past API Future Development & Deployment References Backcountry http://www.backcountry.com/ FragnanceNet http://www.fragrancenet.com/ racke Modern PerlCommerce
  • 10. Modern PerlCommerce Past and Future Past API Future Development & Deployment Future racke Modern PerlCommerce
  • 11. Modern PerlCommerce Past and Future Past API Future Development & Deployment Principles KISS Components Agnostic Expressive racke Modern PerlCommerce
  • 12. Modern PerlCommerce Past and Future Past API Future Development & Deployment Agnostic Cart Session DBI Webservice * racke Modern PerlCommerce
  • 13. Modern PerlCommerce Past and Future Past API Future Development & Deployment Agnostic Account Manager DBI LDAP * OpenID * racke Modern PerlCommerce
  • 14. Modern PerlCommerce Past and Future Past API Future Development & Deployment Agnostic Templating Engine Template::Toolkit Template::Flute racke Modern PerlCommerce
  • 15. Modern PerlCommerce Past and Future Past API Future Development & Deployment Agnostic Web framework Catalyst Mojo Dancer racke Modern PerlCommerce
  • 16. Modern PerlCommerce Past and Future Past API Future Development & Deployment Preferences Dancer Template::Flute DBI racke Modern PerlCommerce
  • 17. Modern PerlCommerce Past and Future Past API Future Development & Deployment Framework Dispatching requests Parameter parsing Session handling Template engine I18N racke Modern PerlCommerce
  • 18. Modern PerlCommerce Past and Future Past API Future Development & Deployment Extensions Bundles Plugins Hooks racke Modern PerlCommerce
  • 19. Modern PerlCommerce Past and Future Past API Future Development & Deployment Features Navigation Cart Checkout Accounts racke Modern PerlCommerce
  • 20. Modern PerlCommerce Cart Past and Future Checkout API Accounts and Access Control Development & Deployment Forms Cart SKU, Name, Quantity, Price Price > 0 Combines automatically Multiple carts Storage everywhere Price caching racke Modern PerlCommerce
  • 21. Modern PerlCommerce Cart Past and Future Checkout API Accounts and Access Control Development & Deployment Forms Nitesi::Cart Methods use Dancer : : P l u g i n : : N i t e s i ; c a r t −>add ( sku => ’POM253 ’ , name => ’ Pomelo ’ , p r i c e => 3 . 0 0 , q u a n t i t y => 1 0 ) ; c a r t −>remove ( sku => ’POM253 ’ ) ; c a r t −>count ( ) ; c a r t −>c l e a r ( ) ; c a r t −> t o t a l ( ) ; c a r t −>s u b t o t a l ( ) ; racke Modern PerlCommerce
  • 22. Modern PerlCommerce Cart Past and Future Checkout API Accounts and Access Control Development & Deployment Forms Everything is a Cart Saved Carts Wishlists Collections racke Modern PerlCommerce
  • 23. Modern PerlCommerce Cart Past and Future Checkout API Accounts and Access Control Development & Deployment Forms Multiple Carts c a r t ( ’ w i s h l i s t ’ )−>add ( sku => ’ORA322 ’ , name => ’ Orange ’ , p r i c e => 2 . 0 0 , q u a n t i t y => 5 ) ; racke Modern PerlCommerce
  • 24. Modern PerlCommerce Cart Past and Future Checkout API Accounts and Access Control Development & Deployment Forms Cart Backends Session DBI racke Modern PerlCommerce
  • 25. Modern PerlCommerce Cart Past and Future Checkout API Accounts and Access Control Development & Deployment Forms Inventory Check MinQuantityField min_quantity MaxQuantityField inventory : q u a n t i t y racke Modern PerlCommerce
  • 26. Modern PerlCommerce Cart Past and Future Checkout API Accounts and Access Control Development & Deployment Forms Inventory Check Hook hook ’ b e f o r e _ c a r t _ a d d ’ => sub { my ( $ c a r t , $item ) = @_; my ( $ i n v e n t o r y ) ; $ i n v e n t o r y = query −> s e l e c t _ f i e l d ( t a b l e => ’ p r o d u c t s ’ , f i e l d => ’ i n v e n t o r y ’ , where => { sku => $item −>{sku } } ) ; i f ( $item −>{ q u a n t i t y } > $ i n v e n t o r y ) { $item −>{ e r r o r } = ’ Out o f s t o c k ’ ; } }; racke Modern PerlCommerce
  • 27. Modern PerlCommerce Cart Past and Future Checkout API Accounts and Access Control Development & Deployment Forms Cart Hooks before_cart_add after_cart_add racke Modern PerlCommerce
  • 28. Modern PerlCommerce Cart Past and Future Checkout API Accounts and Access Control Development & Deployment Forms Cart Hooks before_cart_remove after_cart_remove racke Modern PerlCommerce
  • 29. Modern PerlCommerce Cart Past and Future Checkout API Accounts and Access Control Development & Deployment Forms Checkout Taxes Shipping Payment Invoice racke Modern PerlCommerce
  • 30. Modern PerlCommerce Cart Past and Future Checkout API Accounts and Access Control Development & Deployment Forms Payment Business::OnlinePayment racke Modern PerlCommerce
  • 31. Modern PerlCommerce Cart Past and Future Checkout API Accounts and Access Control Development & Deployment Forms Tax Modules on CPAN Business::Tax::Canada Business::CA::GST Business::Tax::VAT Business::Tax::VAT::Validation racke Modern PerlCommerce
  • 32. Modern PerlCommerce Cart Past and Future Checkout API Accounts and Access Control Development & Deployment Forms Shipping Simple Shipping Crazy Shipping Shipping API racke Modern PerlCommerce
  • 33. Modern PerlCommerce Cart Past and Future Checkout API Accounts and Access Control Development & Deployment Forms Costs $ c a r t −>a p p l y _ c o s t ( amount => 5 ) ; $ c a r t −>a p p l y _ c o s t ( amount => 0 . 1 9 , r e l a t i v e => 1 ) ; racke Modern PerlCommerce
  • 34. Modern PerlCommerce Cart Past and Future Checkout API Accounts and Access Control Development & Deployment Forms PDF Invoices HTML template Template::Flute::PDF racke Modern PerlCommerce
  • 35. Modern PerlCommerce Cart Past and Future Checkout API Accounts and Access Control Development & Deployment Forms Accounts p o s t ’ / l o g i n ’ => sub { i f ( account −>l o g i n ( username => params ( ’ body ’ ) − >{username } , password => params ( ’ body ’ ) − >{password } ) ) { r e d i r e c t ’ / customerservice ’ ; } else { redirect ’ / login ’ ; } }; racke Modern PerlCommerce
  • 36. Modern PerlCommerce Cart Past and Future Checkout API Accounts and Access Control Development & Deployment Forms Accounts g e t ’ / checkout ’ => sub { i f ( account −>a c l ( check => ’ s u b m i t _ o r d e r s ’ ) ) { r e t u r n t e m p l a t e ’ checkout ’ ; } redirect ’ / access_denied ’ ; }; racke Modern PerlCommerce
  • 37. Modern PerlCommerce Cart Past and Future Checkout API Accounts and Access Control Development & Deployment Forms Account manager Account Providers Login/Logout Account Information Login status Forgot password Registration racke Modern PerlCommerce
  • 38. Modern PerlCommerce Cart Past and Future Checkout API Accounts and Access Control Development & Deployment Forms Account Provider DBI LDAP * Htpasswd * OpenID * OAuth * racke Modern PerlCommerce
  • 39. Modern PerlCommerce Cart Past and Future Checkout API Accounts and Access Control Development & Deployment Forms Access Control User Roles Permissions racke Modern PerlCommerce
  • 40. Modern PerlCommerce Cart Past and Future Checkout API Accounts and Access Control Development & Deployment Forms Forms Display Validation Storage racke Modern PerlCommerce
  • 41. Modern PerlCommerce Dancer Past and Future Contribution API The End Development & Deployment Routes Categories Products Cart Checkout Login/Logout Customer Service racke Modern PerlCommerce
  • 42. Modern PerlCommerce Dancer Past and Future Contribution API The End Development & Deployment Default Route g e t q r { / ( . ∗ ) } => sub { my ( $sku ) = s p l a t ; my $ p r o d u c t ; # check f o r e x i s t i n g p r o d u c t i f ( $ p r o d u c t = database −>q u i c k _ s e l e c t ( ’ p r o d u c t s ’ , { sku => $sku } ) ) # display flypage template ’ flypage ’ , $product ; } else { # d i s p l a y n o t found page s t a t u s ’ not_found ’ ; f o r w a r d ’ 404 ’ ; } }; racke Modern PerlCommerce
  • 43. Modern PerlCommerce Dancer Past and Future Contribution API The End Development & Deployment CPAN/GitHub http://search.cpan.org/dist/Nitesi/ http://search.cpan.org/dist/Nitesi-DBI/ http://search.cpan.org/dist/ Dancer-Plugin-Nitesi/ https://github.com/racke/Nitesi https://github.com/racke/Nitesi-DBI https: //github.com/racke/Dancer-Plugin-Nitesi racke Modern PerlCommerce
  • 44. Modern PerlCommerce Dancer Past and Future Contribution API The End Development & Deployment The End Slides: http://www.linuxia.de/talks/perlcommerce/ perlcommerce-beamer.pdf Project: https://vsc.state.gov/ racke Modern PerlCommerce