SlideShare uma empresa Scribd logo
1 de 44
Baixar para ler 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

Mais conteúdo relacionado

Semelhante a Modern PerlCommerce

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
 
Phalcon / Zephir Introduction at PHPConfTW2013
Phalcon / Zephir Introduction at PHPConfTW2013Phalcon / Zephir Introduction at PHPConfTW2013
Phalcon / Zephir Introduction at PHPConfTW2013
Rack Lin
 

Semelhante a 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
 

Último

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

Último (20)

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 

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