modern perlcommerce - dancer - perl web framework for easy...

44
Modern PerlCommerce Past and Future API Development & Deployment Modern PerlCommerce Stefan Hornburg (Racke) [email protected] Pittsburgh Perl Workshop, 8th October 2011 racke Modern PerlCommerce

Upload: others

Post on 26-May-2020

9 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Modern PerlCommerce - Dancer - Perl Web Framework for easy …perldancer.org/slides/perlcommerce-beamer.pdf · 2018-09-22 · Modern PerlCommerce Past and Future API Development &

Modern PerlCommercePast and Future

APIDevelopment & Deployment

Modern PerlCommerce

Stefan Hornburg (Racke)[email protected]

Pittsburgh Perl Workshop, 8th October 2011

racke Modern PerlCommerce

Page 2: Modern PerlCommerce - Dancer - Perl Web Framework for easy …perldancer.org/slides/perlcommerce-beamer.pdf · 2018-09-22 · Modern PerlCommerce Past and Future API Development &

Modern PerlCommercePast and Future

APIDevelopment & Deployment

Perl BuzzwordsModern PerlPerlCommerce Choices

Nitesi

racke Modern PerlCommerce

Page 3: Modern PerlCommerce - Dancer - Perl Web Framework for easy …perldancer.org/slides/perlcommerce-beamer.pdf · 2018-09-22 · Modern PerlCommerce Past and Future API Development &

Modern PerlCommercePast and Future

APIDevelopment & Deployment

Perl BuzzwordsModern PerlPerlCommerce Choices

Perl Buzzwords

I Marketing Perl

I Modern Perl

I Postmodern Perl

racke Modern PerlCommerce

Page 4: Modern PerlCommerce - Dancer - Perl Web Framework for easy …perldancer.org/slides/perlcommerce-beamer.pdf · 2018-09-22 · Modern PerlCommerce Past and Future API Development &

Modern PerlCommercePast and Future

APIDevelopment & Deployment

Perl BuzzwordsModern PerlPerlCommerce Choices

Modern Perl

I CPAN

I Best Practices

I Tests

I Separation (Modules, Plugins, Hooks, Templates)

I PSGI/Plack

racke Modern PerlCommerce

Page 5: Modern PerlCommerce - Dancer - Perl Web Framework for easy …perldancer.org/slides/perlcommerce-beamer.pdf · 2018-09-22 · Modern PerlCommerce Past and Future API Development &

Modern PerlCommercePast and Future

APIDevelopment & Deployment

Perl BuzzwordsModern PerlPerlCommerce Choices

PerlCommerce Choices

I Interchange

I Handel

I Agora

I Business::Cart::Generic

racke Modern PerlCommerce

Page 6: Modern PerlCommerce - Dancer - Perl Web Framework for easy …perldancer.org/slides/perlcommerce-beamer.pdf · 2018-09-22 · Modern PerlCommerce Past and Future API Development &

Modern PerlCommercePast and Future

APIDevelopment & Deployment

PastFuture

Past

I 1995 CGI

I 1995 MiniVend

I 1998 http://www.materialboerse.de/

I 2001 Interchange

racke Modern PerlCommerce

Page 7: Modern PerlCommerce - Dancer - Perl Web Framework for easy …perldancer.org/slides/perlcommerce-beamer.pdf · 2018-09-22 · Modern PerlCommerce Past and Future API Development &

Modern PerlCommercePast and Future

APIDevelopment & Deployment

PastFuture

Interchange Development

I Lot of things

I Small community

I Same codebase

racke Modern PerlCommerce

Page 8: Modern PerlCommerce - Dancer - Perl Web Framework for easy …perldancer.org/slides/perlcommerce-beamer.pdf · 2018-09-22 · Modern PerlCommerce Past and Future API Development &

Modern PerlCommercePast and Future

APIDevelopment & Deployment

PastFuture

Status quo

racke Modern PerlCommerce

Page 9: Modern PerlCommerce - Dancer - Perl Web Framework for easy …perldancer.org/slides/perlcommerce-beamer.pdf · 2018-09-22 · Modern PerlCommerce Past and Future API Development &

Modern PerlCommercePast and Future

APIDevelopment & Deployment

PastFuture

References

I Backcountry http://www.backcountry.com/

I FragnanceNet http://www.fragrancenet.com/

racke Modern PerlCommerce

Page 10: Modern PerlCommerce - Dancer - Perl Web Framework for easy …perldancer.org/slides/perlcommerce-beamer.pdf · 2018-09-22 · Modern PerlCommerce Past and Future API Development &

Modern PerlCommercePast and Future

APIDevelopment & Deployment

PastFuture

Future

racke Modern PerlCommerce

Page 11: Modern PerlCommerce - Dancer - Perl Web Framework for easy …perldancer.org/slides/perlcommerce-beamer.pdf · 2018-09-22 · Modern PerlCommerce Past and Future API Development &

Modern PerlCommercePast and Future

APIDevelopment & Deployment

PastFuture

Principles

I KISS

I Components

I Agnostic

I Expressive

racke Modern PerlCommerce

Page 12: Modern PerlCommerce - Dancer - Perl Web Framework for easy …perldancer.org/slides/perlcommerce-beamer.pdf · 2018-09-22 · Modern PerlCommerce Past and Future API Development &

Modern PerlCommercePast and Future

APIDevelopment & Deployment

PastFuture

Agnostic

Cart

I Session

I DBI

I Webservice *

racke Modern PerlCommerce

Page 13: Modern PerlCommerce - Dancer - Perl Web Framework for easy …perldancer.org/slides/perlcommerce-beamer.pdf · 2018-09-22 · Modern PerlCommerce Past and Future API Development &

Modern PerlCommercePast and Future

APIDevelopment & Deployment

PastFuture

Agnostic

Account Manager

I DBI

I LDAP *

I OpenID *

racke Modern PerlCommerce

Page 14: Modern PerlCommerce - Dancer - Perl Web Framework for easy …perldancer.org/slides/perlcommerce-beamer.pdf · 2018-09-22 · Modern PerlCommerce Past and Future API Development &

Modern PerlCommercePast and Future

APIDevelopment & Deployment

PastFuture

Agnostic

Templating Engine

I Template::Toolkit

I Template::Flute

racke Modern PerlCommerce

Page 15: Modern PerlCommerce - Dancer - Perl Web Framework for easy …perldancer.org/slides/perlcommerce-beamer.pdf · 2018-09-22 · Modern PerlCommerce Past and Future API Development &

Modern PerlCommercePast and Future

APIDevelopment & Deployment

PastFuture

Agnostic

Web framework

I Catalyst

I Mojo

I Dancer

racke Modern PerlCommerce

Page 16: Modern PerlCommerce - Dancer - Perl Web Framework for easy …perldancer.org/slides/perlcommerce-beamer.pdf · 2018-09-22 · Modern PerlCommerce Past and Future API Development &

Modern PerlCommercePast and Future

APIDevelopment & Deployment

PastFuture

Preferences

I Dancer

I Template::Flute

I DBI

racke Modern PerlCommerce

Page 17: Modern PerlCommerce - Dancer - Perl Web Framework for easy …perldancer.org/slides/perlcommerce-beamer.pdf · 2018-09-22 · Modern PerlCommerce Past and Future API Development &

Modern PerlCommercePast and Future

APIDevelopment & Deployment

PastFuture

Framework

I Dispatching requests

I Parameter parsing

I Session handling

I Template engine

I I18N

racke Modern PerlCommerce

Page 18: Modern PerlCommerce - Dancer - Perl Web Framework for easy …perldancer.org/slides/perlcommerce-beamer.pdf · 2018-09-22 · Modern PerlCommerce Past and Future API Development &

Modern PerlCommercePast and Future

APIDevelopment & Deployment

PastFuture

Extensions

I Bundles

I Plugins

I Hooks

racke Modern PerlCommerce

Page 19: Modern PerlCommerce - Dancer - Perl Web Framework for easy …perldancer.org/slides/perlcommerce-beamer.pdf · 2018-09-22 · Modern PerlCommerce Past and Future API Development &

Modern PerlCommercePast and Future

APIDevelopment & Deployment

PastFuture

Features

I Navigation

I Cart

I Checkout

I Accounts

racke Modern PerlCommerce

Page 20: Modern PerlCommerce - Dancer - Perl Web Framework for easy …perldancer.org/slides/perlcommerce-beamer.pdf · 2018-09-22 · Modern PerlCommerce Past and Future API Development &

Modern PerlCommercePast and Future

APIDevelopment & Deployment

CartCheckoutAccounts and Access ControlForms

Cart

I SKU, Name, Quantity, Price

I Price > 0

I Combines automatically

I Multiple carts

I Storage everywhere

I Price caching

racke Modern PerlCommerce

Page 21: Modern PerlCommerce - Dancer - Perl Web Framework for easy …perldancer.org/slides/perlcommerce-beamer.pdf · 2018-09-22 · Modern PerlCommerce Past and Future API Development &

Modern PerlCommercePast and Future

APIDevelopment & Deployment

CartCheckoutAccounts and Access ControlForms

Nitesi::Cart Methods

use Dancer : : P lug in : : N i t e s i ;

car t−>add ( sku => ’POM253 ’ , name => ’ Pomelo ’ ,p r i ce => 3.00 , q u a n t i t y => 10 ) ;

car t−>remove ( sku => ’POM253 ’ ) ;

car t−>count ( ) ;

car t−>c lea r ( ) ;

car t−>t o t a l ( ) ;

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

racke Modern PerlCommerce

Page 22: Modern PerlCommerce - Dancer - Perl Web Framework for easy …perldancer.org/slides/perlcommerce-beamer.pdf · 2018-09-22 · Modern PerlCommerce Past and Future API Development &

Modern PerlCommercePast and Future

APIDevelopment & Deployment

CartCheckoutAccounts and Access ControlForms

Everything is a Cart

I Saved Carts

I Wishlists

I Collections

racke Modern PerlCommerce

Page 23: Modern PerlCommerce - Dancer - Perl Web Framework for easy …perldancer.org/slides/perlcommerce-beamer.pdf · 2018-09-22 · Modern PerlCommerce Past and Future API Development &

Modern PerlCommercePast and Future

APIDevelopment & Deployment

CartCheckoutAccounts and Access ControlForms

Multiple Carts

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

racke Modern PerlCommerce

Page 24: Modern PerlCommerce - Dancer - Perl Web Framework for easy …perldancer.org/slides/perlcommerce-beamer.pdf · 2018-09-22 · Modern PerlCommerce Past and Future API Development &

Modern PerlCommercePast and Future

APIDevelopment & Deployment

CartCheckoutAccounts and Access ControlForms

Cart Backends

I Session

I DBI

racke Modern PerlCommerce

Page 25: Modern PerlCommerce - Dancer - Perl Web Framework for easy …perldancer.org/slides/perlcommerce-beamer.pdf · 2018-09-22 · Modern PerlCommerce Past and Future API Development &

Modern PerlCommercePast and Future

APIDevelopment & Deployment

CartCheckoutAccounts and Access ControlForms

Inventory Check

MinQuant i t yF ie ld min_quant i tyMaxQuant i tyFie ld i nven to ry : q u a n t i t y

racke Modern PerlCommerce

Page 26: Modern PerlCommerce - Dancer - Perl Web Framework for easy …perldancer.org/slides/perlcommerce-beamer.pdf · 2018-09-22 · Modern PerlCommerce Past and Future API Development &

Modern PerlCommercePast and Future

APIDevelopment & Deployment

CartCheckoutAccounts and Access ControlForms

Inventory Check Hook

hook ’ before_car t_add ’ => sub {my ( $car t , $i tem ) = @_;my ( $ inven to ry ) ;

$ inven to ry = query−>s e l e c t _ f i e l d ( t ab l e => ’ products ’ ,f i e l d => ’ i nven to ry ’ ,where => { sku => $item−>{sku } } ) ;

i f ( $item−>{ q u a n t i t y } > $ inven to ry ) {$item−>{ e r r o r } = ’ Out o f s tock ’ ;

}} ;

racke Modern PerlCommerce

Page 27: Modern PerlCommerce - Dancer - Perl Web Framework for easy …perldancer.org/slides/perlcommerce-beamer.pdf · 2018-09-22 · Modern PerlCommerce Past and Future API Development &

Modern PerlCommercePast and Future

APIDevelopment & Deployment

CartCheckoutAccounts and Access ControlForms

Cart Hooks

I before_cart_add

I after_cart_add

racke Modern PerlCommerce

Page 28: Modern PerlCommerce - Dancer - Perl Web Framework for easy …perldancer.org/slides/perlcommerce-beamer.pdf · 2018-09-22 · Modern PerlCommerce Past and Future API Development &

Modern PerlCommercePast and Future

APIDevelopment & Deployment

CartCheckoutAccounts and Access ControlForms

Cart Hooks

I before_cart_remove

I after_cart_remove

racke Modern PerlCommerce

Page 29: Modern PerlCommerce - Dancer - Perl Web Framework for easy …perldancer.org/slides/perlcommerce-beamer.pdf · 2018-09-22 · Modern PerlCommerce Past and Future API Development &

Modern PerlCommercePast and Future

APIDevelopment & Deployment

CartCheckoutAccounts and Access ControlForms

Checkout

I Taxes

I Shipping

I Payment

I Invoice

racke Modern PerlCommerce

Page 30: Modern PerlCommerce - Dancer - Perl Web Framework for easy …perldancer.org/slides/perlcommerce-beamer.pdf · 2018-09-22 · Modern PerlCommerce Past and Future API Development &

Modern PerlCommercePast and Future

APIDevelopment & Deployment

CartCheckoutAccounts and Access ControlForms

Payment

I Business::OnlinePayment

racke Modern PerlCommerce

Page 31: Modern PerlCommerce - Dancer - Perl Web Framework for easy …perldancer.org/slides/perlcommerce-beamer.pdf · 2018-09-22 · Modern PerlCommerce Past and Future API Development &

Modern PerlCommercePast and Future

APIDevelopment & Deployment

CartCheckoutAccounts and Access ControlForms

Tax Modules on CPAN

I Business::Tax::Canada

I Business::CA::GST

I Business::Tax::VAT

I Business::Tax::VAT::Validation

racke Modern PerlCommerce

Page 32: Modern PerlCommerce - Dancer - Perl Web Framework for easy …perldancer.org/slides/perlcommerce-beamer.pdf · 2018-09-22 · Modern PerlCommerce Past and Future API Development &

Modern PerlCommercePast and Future

APIDevelopment & Deployment

CartCheckoutAccounts and Access ControlForms

Shipping

I Simple Shipping

I Crazy Shipping

I Shipping API

racke Modern PerlCommerce

Page 33: Modern PerlCommerce - Dancer - Perl Web Framework for easy …perldancer.org/slides/perlcommerce-beamer.pdf · 2018-09-22 · Modern PerlCommerce Past and Future API Development &

Modern PerlCommercePast and Future

APIDevelopment & Deployment

CartCheckoutAccounts and Access ControlForms

Costs

$car t−>apply_cost ( amount => 5 ) ;

$car t−>apply_cost ( amount => 0.19 , r e l a t i v e => 1 ) ;

racke Modern PerlCommerce

Page 34: Modern PerlCommerce - Dancer - Perl Web Framework for easy …perldancer.org/slides/perlcommerce-beamer.pdf · 2018-09-22 · Modern PerlCommerce Past and Future API Development &

Modern PerlCommercePast and Future

APIDevelopment & Deployment

CartCheckoutAccounts and Access ControlForms

PDF Invoices

I HTML template

I Template::Flute::PDF

racke Modern PerlCommerce

Page 35: Modern PerlCommerce - Dancer - Perl Web Framework for easy …perldancer.org/slides/perlcommerce-beamer.pdf · 2018-09-22 · Modern PerlCommerce Past and Future API Development &

Modern PerlCommercePast and Future

APIDevelopment & Deployment

CartCheckoutAccounts and Access ControlForms

Accounts

post ’ / 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 ’ / customerserv ice ’ ;

}else {

r e d i r e c t ’ / l o g i n ’ ;}

} ;

racke Modern PerlCommerce

Page 36: Modern PerlCommerce - Dancer - Perl Web Framework for easy …perldancer.org/slides/perlcommerce-beamer.pdf · 2018-09-22 · Modern PerlCommerce Past and Future API Development &

Modern PerlCommercePast and Future

APIDevelopment & Deployment

CartCheckoutAccounts and Access ControlForms

Accounts

get ’ / checkout ’ => sub {i f ( account−>ac l ( check => ’ submit_orders ’ ) ) {

return template ’ checkout ’ ;}

r e d i r e c t ’ / access_denied ’ ;} ;

racke Modern PerlCommerce

Page 37: Modern PerlCommerce - Dancer - Perl Web Framework for easy …perldancer.org/slides/perlcommerce-beamer.pdf · 2018-09-22 · Modern PerlCommerce Past and Future API Development &

Modern PerlCommercePast and Future

APIDevelopment & Deployment

CartCheckoutAccounts and Access ControlForms

Account manager

I Account Providers

I Login/Logout

I Account Information

I Login status

I Forgot password

I Registration

racke Modern PerlCommerce

Page 38: Modern PerlCommerce - Dancer - Perl Web Framework for easy …perldancer.org/slides/perlcommerce-beamer.pdf · 2018-09-22 · Modern PerlCommerce Past and Future API Development &

Modern PerlCommercePast and Future

APIDevelopment & Deployment

CartCheckoutAccounts and Access ControlForms

Account Provider

I DBI

I LDAP *

I Htpasswd *

I OpenID *

I OAuth *

racke Modern PerlCommerce

Page 39: Modern PerlCommerce - Dancer - Perl Web Framework for easy …perldancer.org/slides/perlcommerce-beamer.pdf · 2018-09-22 · Modern PerlCommerce Past and Future API Development &

Modern PerlCommercePast and Future

APIDevelopment & Deployment

CartCheckoutAccounts and Access ControlForms

Access Control

I User

I Roles

I Permissions

racke Modern PerlCommerce

Page 40: Modern PerlCommerce - Dancer - Perl Web Framework for easy …perldancer.org/slides/perlcommerce-beamer.pdf · 2018-09-22 · Modern PerlCommerce Past and Future API Development &

Modern PerlCommercePast and Future

APIDevelopment & Deployment

CartCheckoutAccounts and Access ControlForms

Forms

I Display

I Validation

I Storage

racke Modern PerlCommerce

Page 41: Modern PerlCommerce - Dancer - Perl Web Framework for easy …perldancer.org/slides/perlcommerce-beamer.pdf · 2018-09-22 · Modern PerlCommerce Past and Future API Development &

Modern PerlCommercePast and Future

APIDevelopment & Deployment

DancerContributionThe End

Routes

I Categories

I Products

I Cart

I Checkout

I Login/Logout

I Customer Service

racke Modern PerlCommerce

Page 42: Modern PerlCommerce - Dancer - Perl Web Framework for easy …perldancer.org/slides/perlcommerce-beamer.pdf · 2018-09-22 · Modern PerlCommerce Past and Future API Development &

Modern PerlCommercePast and Future

APIDevelopment & Deployment

DancerContributionThe End

Default Route

get qr { / ( . ∗ ) } => sub {my ( $sku ) = s p l a t ;my $product ;

# check f o r e x i s t i n g producti f ( $product = database−>qu ick_se lec t ( ’ products ’ , { sku => $sku } ) ) {

# d i sp lay f l ypagetemplate ’ f l ypage ’ , $product ;

}else {

# d i sp lay not found pages ta tus ’ not_found ’ ;forward ’ 404 ’ ;

}} ;

racke Modern PerlCommerce

Page 43: Modern PerlCommerce - Dancer - Perl Web Framework for easy …perldancer.org/slides/perlcommerce-beamer.pdf · 2018-09-22 · Modern PerlCommerce Past and Future API Development &

Modern PerlCommercePast and Future

APIDevelopment & Deployment

DancerContributionThe End

CPAN/GitHub

I http://search.cpan.org/dist/Nitesi/

I http://search.cpan.org/dist/Nitesi-DBI/

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

I https://github.com/racke/Nitesi

I https://github.com/racke/Nitesi-DBI

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

racke Modern PerlCommerce

Page 44: Modern PerlCommerce - Dancer - Perl Web Framework for easy …perldancer.org/slides/perlcommerce-beamer.pdf · 2018-09-22 · Modern PerlCommerce Past and Future API Development &

Modern PerlCommercePast and Future

APIDevelopment & Deployment

DancerContributionThe End

The End

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

racke Modern PerlCommerce