Difference between revisions of "Web Stores and Shopping Carts"
Jump to navigation
Jump to search
BobJonkman (talk | contribs) (Meeting Notes) |
BobJonkman (talk | contribs) (Clean up meeting notes) |
||
Line 26: | Line 26: | ||
** Goods and Services | ** Goods and Services | ||
** Media Production (rental of cameras, lights, &c) | ** Media Production (rental of cameras, lights, &c) | ||
+ | * People want to make things easier for sellers and buyers | ||
− | * | + | |
+ | * Sam started as a city planner, moved to a startup doing web development | ||
+ | ** Then, Sam bought a retail store, [https://www.fullcirclefoods.ca/ Full Circle Foods] | ||
+ | ** ...the inherited system is a series of linked spreadsheets :/ | ||
+ | ** Full Circle Foods has 90 suppliers. Seems a lot, but many are small, local businesses | ||
+ | ** Lots to be done digitizing the order system of Full Circle Foods | ||
===== Shopkit ===== | ===== Shopkit ===== | ||
* https://github.com/samnabi/shopkit | * https://github.com/samnabi/shopkit | ||
− | * Plugin for CMS called "Kirby" | + | * Plugin for CMS called "Kirby" https://getkirby.com/ |
* Sam sells code for other developers to use on their websites | * Sam sells code for other developers to use on their websites | ||
** Doesn't want to deal with the actual credit card processing | ** Doesn't want to deal with the actual credit card processing | ||
Line 42: | Line 48: | ||
− | * Using Stripe and Square | + | * Using [https://stripe.com/ca Stripe] and [https://squareup.com/ca Square] |
* Sample sites: | * Sample sites: | ||
Line 53: | Line 59: | ||
* Had an idea to pool resources for pooled shipping, delivery, advertising | * Had an idea to pool resources for pooled shipping, delivery, advertising | ||
− | + | ** (not sure if this is a feature of ShopKit --Bob.) | |
− | |||
− | |||
− | ** | ||
− | |||
− | |||
− | |||
Line 82: | Line 82: | ||
** Select product, increase/decrease quantity, totals are updated | ** Select product, increase/decrease quantity, totals are updated | ||
** Uses AJAX, but the site is not Javascript dependent | ** Uses AJAX, but the site is not Javascript dependent | ||
− | *** Jeremy Keith is Sam's inspiration, he knows about good design. | + | *** [https://adactio.com/ Jeremy Keith] is Sam's inspiration, he knows about good design. |
** There can be different shipping rules, different tax rates for different localities | ** There can be different shipping rules, different tax rates for different localities | ||
** Add personal details (name, e-mail) | ** Add personal details (name, e-mail) | ||
Line 106: | Line 106: | ||
* Reporting in Shopkit | * Reporting in Shopkit | ||
** Done from the Shopkit backend | ** Done from the Shopkit backend | ||
− | ** Invoices are created by PHP into PDF files using " | + | ** Invoices are created by PHP into PDF files using "dompdf" https://github.com/dompdf/dompdf |
** Report invoices are generated dynamically every time, but from a static "transactions" file | ** Report invoices are generated dynamically every time, but from a static "transactions" file | ||
** Added some widgets on the dashboard, eg. "Abandoned, Pending, Paid/Shipped" | ** Added some widgets on the dashboard, eg. "Abandoned, Pending, Paid/Shipped" | ||
Line 115: | Line 115: | ||
** Implemented at "gateways" in Shopkit | ** Implemented at "gateways" in Shopkit | ||
*** Each gateway has a "process" and a "callback" | *** Each gateway has a "process" and a "callback" | ||
− | ** Some processors ( | + | ** Some processors (Square) expect money values to be in cents |
*** Performing only integer operations on cents seems to be best practice | *** Performing only integer operations on cents seems to be best practice | ||
** There are thousands of processors, so Sam has created an open system for processor gateways | ** There are thousands of processors, so Sam has created an open system for processor gateways | ||
+ | *** This separates the payment processing from Shopkit itself, absolving Sam of dealing with payment issues | ||
** Payment processors provide an SDK for the gateway code | ** Payment processors provide an SDK for the gateway code | ||
*** Each payment processor has its own API, unique for each installation. | *** Each payment processor has its own API, unique for each installation. | ||
− | |||
− | |||
Line 141: | Line 140: | ||
− | * Order file | + | * A look at the data: Order file |
** A YAML file that builds up as order information is entereed | ** A YAML file that builds up as order information is entereed | ||
** Based on server's session ID (uniqueness?) | ** Based on server's session ID (uniqueness?) | ||
Line 151: | Line 150: | ||
− | * Kirby developer, Bastian | + | * Kirby developer, Bastian Allgeier, is known for Zootool, and making a living off Kirby |
Line 160: | Line 159: | ||
==== General Business ==== | ==== General Business ==== | ||
− | * | + | * [http://bob.jonkman.ca/blogs/2018/07/06/sysadminday-dinner-2018-at-abe-erb-in-kitchener/ SysAdminDay Dinner] - 6:00pm on Friday, 27 July 2018 at Abe Erb Restaurant in Kitchener |
+ | ** All System Administrators, Non-Profit, For-Profit, and their friends and relations are invited! | ||
Revision as of 00:50, 19 July 2018
Contents
Web Stores and Shopping Carts
- Date
- Monday 16 July 2018 from 7:00pm to 9:00pm
- Meetup Event
- https://www.meetup.com/NetSquared-Kitchener-Waterloo/events/250380630/
- Location
- Room 1301 -- Conrad Grebel University College, 140 Westmount Rd. N., Waterloo, Ontario Map
- Event Announcement
- Web Stores and Shopping Carts/Announcement 2018-07-16
Does your NonProfit organization sell things? Does it provide paid services? Do you need a web presence for your sales? Will you need a separate server for your web store? Or can you add a shopping cart to your existing web site? Or is it better to outsource all online commerce?
Meet our guest speaker Sam Nabi, developer of Shopkit, and let's discuss what a System Administrator needs to join a NonProfit organization to the world of web commerce.
--Marc Paré & Bob Jonkman
Resources
Meeting Notes
Introductions
- Where is everyone coming from? Sam Nabi will tailor his tour to our needs.
- Nonprofit org wants online registrations with payment
- Bookseller
- Online donations
- Goods and Services
- Media Production (rental of cameras, lights, &c)
- People want to make things easier for sellers and buyers
- Sam started as a city planner, moved to a startup doing web development
- Then, Sam bought a retail store, Full Circle Foods
- ...the inherited system is a series of linked spreadsheets :/
- Full Circle Foods has 90 suppliers. Seems a lot, but many are small, local businesses
- Lots to be done digitizing the order system of Full Circle Foods
Shopkit
- https://github.com/samnabi/shopkit
- Plugin for CMS called "Kirby" https://getkirby.com/
- Sam sells code for other developers to use on their websites
- Doesn't want to deal with the actual credit card processing
- Or poor installations by those developers
- Self-hosted PHP-based solution
- Sold as a subscription service
- Sam would hold the code and provides the online webhosting
- Sample sites:
- an indiegogo type site: https://coblisher.com/shop
- retail business: http://gourmetpassions.ca/kirby
- Sam provides the code, and can work it into the design of an existing web page
- Had an idea to pool resources for pooled shipping, delivery, advertising
- (not sure if this is a feature of ShopKit --Bob.)
- Sam is part of the Kirby CMS community
- Didn't have an ecommerce plugin, but there was an appetite for it
- Working over three years to develop Shopkit with the Kirby developers
- Kirby is a file-based PHP CMS (we like that)
- Files are written in Markdown, still accessible if Web connection goes down
- But there is a good GUI as well (good for marketers)
- UI is decoupled from the data
- Sam gives a quick tour of a sample installation on GitHub
- https://github.com/samnabi/shopkit-sample-content/
- Kirby has multi-language support, i18n, l10n
- Also has categories, which Shopkit links to
- It's a system of API hooks, launched from the plugin to Kirby
- but Shopkit has all the templates for, eg. slideshows, created by Sam
- Purchasing flow:
- Select product, increase/decrease quantity, totals are updated
- Uses AJAX, but the site is not Javascript dependent
- Jeremy Keith is Sam's inspiration, he knows about good design.
- There can be different shipping rules, different tax rates for different localities
- Add personal details (name, e-mail)
- Tour of the back end
- Resetting passwords :)
- Sam has tried to make it easy for front-end users
- Adding products, adding categories
- Products have variants with different prices, options that don't affect price
- Small oversight: Options don't have different SKUs, no separate inventory
- Changing the use of SKUs is not dependent on the purchasing process
- Products have variants with different prices, options that don't affect price
- A "Featured Product" is displayed in the sidebar
- Feature request by developers: "Items Remaining In Stock"
- Another request: Individual e-mails for restocking
- Shipping Rules:
- Can be different for all countries, one country,
- Shipping rules UI created by Sam, but as part of the plugin (even though it shows in the Kirby UI)
- Tax and shipping rules can be defined by the developer, but not through the WebUI
- Sam take us for a deep dive into the shipping selection code
- Reporting in Shopkit
- Done from the Shopkit backend
- Invoices are created by PHP into PDF files using "dompdf" https://github.com/dompdf/dompdf
- Report invoices are generated dynamically every time, but from a static "transactions" file
- Added some widgets on the dashboard, eg. "Abandoned, Pending, Paid/Shipped"
- There are also site stats based on another Kirby plugin
- Payment Processing
- Implemented at "gateways" in Shopkit
- Each gateway has a "process" and a "callback"
- Some processors (Square) expect money values to be in cents
- Performing only integer operations on cents seems to be best practice
- There are thousands of processors, so Sam has created an open system for processor gateways
- This separates the payment processing from Shopkit itself, absolving Sam of dealing with payment issues
- Payment processors provide an SDK for the gateway code
- Each payment processor has its own API, unique for each installation.
- Implemented at "gateways" in Shopkit
- Testing
- No formal testing methodology
- Tries new code on a test site, Sam's own site
- Most bugs are caught by end-users (developers)
- Shopkit and Kirby aren't quite Free Software: Code is available for inspection, modification, but not necessarily for redistribution. But payment is on the honour system.
- There have been 200 issues logged in the Shopkit issue tracker; most are from Sam himself.
- Top question: Can I add Shopkit to an existing (Kirby) site?
- Not really, Shopkit is a standalone application,
- Shopkit is a good intermediate between a simple button, and a full-fledged e-commerce system.
- Top question: Can I add Shopkit to an existing (Kirby) site?
- Shopkit's changes to Kirby are mostly in the "snippets", which might conflict with another Kirby installation's snippets
- Shopkit is a full point version behind the Kirby, always on the stable version.
- A look at the data: Order file
- A YAML file that builds up as order information is entereed
- Based on server's session ID (uniqueness?)
- File locking? Kirby has some file locking built in
- Sessions are now the same across tabs, but that may break with new Chrome tab isolation
Shopkit is a kit, a standalone, turnkey application
- Kirby developer, Bastian Allgeier, is known for Zootool, and making a living off Kirby
General Business
- SysAdminDay Dinner - 6:00pm on Friday, 27 July 2018 at Abe Erb Restaurant in Kitchener
- All System Administrators, Non-Profit, For-Profit, and their friends and relations are invited!
Future Topics
- See KWNPSA Requested Topics
- Need a topic for Monday, 20 August 2018 (Bob can't do I2P)
- Scripting Languages - August
- Purchasing and Procurement - September with Kris Braun
- Training - October