Successfully reported this slideshow.
Your SlideShare is downloading. ×

Modern PerlCommerce

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Loading in …3
×

Check these out next

1 of 44 Ad
Advertisement

More Related Content

Advertisement

Modern PerlCommerce

  1. 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. 2. Modern PerlCommerce Perl Buzzwords Past and Future Modern Perl API PerlCommerce Choices Development & Deployment Nitesi racke Modern PerlCommerce
  3. 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. 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. 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. 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. 7. Modern PerlCommerce Past and Future Past API Future Development & Deployment Interchange Development Lot of things Small community Same codebase racke Modern PerlCommerce
  8. 8. Modern PerlCommerce Past and Future Past API Future Development & Deployment Status quo racke Modern PerlCommerce
  9. 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. 10. Modern PerlCommerce Past and Future Past API Future Development & Deployment Future racke Modern PerlCommerce
  11. 11. Modern PerlCommerce Past and Future Past API Future Development & Deployment Principles KISS Components Agnostic Expressive racke Modern PerlCommerce
  12. 12. Modern PerlCommerce Past and Future Past API Future Development & Deployment Agnostic Cart Session DBI Webservice * racke Modern PerlCommerce
  13. 13. Modern PerlCommerce Past and Future Past API Future Development & Deployment Agnostic Account Manager DBI LDAP * OpenID * racke Modern PerlCommerce
  14. 14. Modern PerlCommerce Past and Future Past API Future Development & Deployment Agnostic Templating Engine Template::Toolkit Template::Flute racke Modern PerlCommerce
  15. 15. Modern PerlCommerce Past and Future Past API Future Development & Deployment Agnostic Web framework Catalyst Mojo Dancer racke Modern PerlCommerce
  16. 16. Modern PerlCommerce Past and Future Past API Future Development & Deployment Preferences Dancer Template::Flute DBI racke Modern PerlCommerce
  17. 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. 18. Modern PerlCommerce Past and Future Past API Future Development & Deployment Extensions Bundles Plugins Hooks racke Modern PerlCommerce
  19. 19. Modern PerlCommerce Past and Future Past API Future Development & Deployment Features Navigation Cart Checkout Accounts racke Modern PerlCommerce
  20. 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. 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. 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. 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. 24. Modern PerlCommerce Cart Past and Future Checkout API Accounts and Access Control Development & Deployment Forms Cart Backends Session DBI racke Modern PerlCommerce
  25. 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. 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. 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. 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. 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. 30. Modern PerlCommerce Cart Past and Future Checkout API Accounts and Access Control Development & Deployment Forms Payment Business::OnlinePayment racke Modern PerlCommerce
  31. 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. 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. 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. 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. 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. 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. 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. 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. 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. 40. Modern PerlCommerce Cart Past and Future Checkout API Accounts and Access Control Development & Deployment Forms Forms Display Validation Storage racke Modern PerlCommerce
  41. 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. 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. 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. 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

×