Did more work on letting the shop's web site take orders. Today I was sorting out some of the back end stuff like getting the site to send an email to me and to the customer letting us know that the order exists. It took a few iterations before I was convinced that I wasn't creating a potential injection vulnerability through the customer email field ie you don't want to do something stupid like:
system("sendmail UNTRUSTED_INPUT_HERE < /path/to/message");
I don't mind if things are primitive at launch as long as there's a minimum level of functionality available.
It still feels like I might be able to launch online sales before the end of the month. The next thing to work on is the back end stuff around letting me/staff know that orders exist, generating shipping labels, taking the money, then generating the initial set of product pages, doing more testing until I feel reasonably confident that this will work for people, and then switching to live keys for third party APIs and linking the new functionality more publicly.
Other features: no Javascript except for a little bit at the very end of the process for integration with the payment processor, only 1 cookie and it's a session cookie so if you ever close your web browser that will go poof and that only gets generated if decide to add an item to your cart or try to look at an empty cart. No tracking bugs scattered around the site. No accounts to create or log into (browser auto form fill features make this less useful).
Busy Saturday morning at the shop but now more staff is here and I can get back to work on making it so the web site can take orders for pounds of coffee to ship. Today I finished up the work on looking up shipping rates and generating a final summary. The next step is collecting payment information (or rather, collecting a token that can be used to initiate a charge with a payment processor. I'm trying to minimize the data collection here because you can't lose data you don't collect).
Author of Typica software for coffee roasters.