VbzCart/history

from HTYP, the free directory anyone can edit if they can prove to me that they're not a spambot
< VbzCart
Revision as of 21:50, 25 December 2015 by Woozle (talk | contribs) (moved overview here from main page; updates, sections...)
Jump to navigation Jump to search

Summary

VbzCart started life as a nameless shopping-cart application written specifically for vbz.net, mostly coded in VBA on MS Access 97. By 2003 at the latest, I had already decided that it would be better for vbz.net's administration functions to be web-based, but I didn't see any way forward with this that didn't require a massive amount of up-front time investment before being able to gain any actual functionality.

I evaluated osCommerce and ZenCart as alternatives and found that although they both had many features I would like to have on vbz.net, they also lacked some key features I would need (some of which VbzCart already had, and some of which would be needed to migrate VbzCart's data from Access).

Eventually (after a false start in Perl), around 2007 I came up with the idea of writing VbzCart's admin functions as a MediaWiki extension, saving the trouble of writing a user management/login system and gaining some additional interface functionality into the bargain.

Development and migration has continued since then in fits and starts, with interruptions due largely to family obligations (especially this), but as of August 2011 I consider the migration essentially complete; there are no order-processing functions that still need to be done in VB (the last "piece" of this, completed in July, was working out a system to produce "reports" so I could print packing slips formatted as nicely as the ones in Access), and there are no admin functions that aren't at the stage of being at least written if not yet debugged.

Details

1996-2000

VbzCart was written specifically to run vbz.net, so I need to get into the history of the latter just a little.

vbz.net was at first (1996) a set of static HTML pages with a single-page order form listing all items for sale; order order notification emails were sent directly from that page via a simple form-mailing CGI script. Then I wrote a simple shopping cart in Perl, using text files cached to .dbm for catalog data.

In 1999, having finally learned how to work with databases in MS Access 97, I wrote some code to import orders more securely (via https) so unencrypted credit-card numbers would no longer be exposed during transit, and then some code to help manage them -- so we would no longer have to consult pieces of paper to see what parts of an order remained to be filled. Then in ~2000, I wrote more code (and tables) to help manage the increasing number of items in the store, as we added more suppliers (each with hundreds of different items in multiple varieties). [ Note: I might have the order reversed -- the catalog management might have come before the order management. I will eventually find evidence in my records and pin this down. ]

2001-2007

More features were added in 2001 and 2002; I'll detail those at some point.

The MS Access/VBA version of VbzCart was essentially "complete" by the end of 2001 -- though the codebase grew more or less continually from 1996 onward as new areas of functionality were designed and added, so there is no clear point at which it was "finished". The MS Access platform (at least as of MS Access 97) does not really lend itself to distribution of applications, however, so in another sense that version was "unfinishable".

2007-2010

Then began a process which was massively interrupted by a family crisis that began escalating in 2008 and wasn't fully resolved until 2011 -- so my work on VbzCart was sporadic, and I had to take vbz.net offline as time constraints made it impossible to maintain a working version of the code, let alone filling orders, while also developing it.

I migrated the MS Access database to MySQL over a couple of years, starting with the stock data circa 2007 and finishing sometime in 2010 with some auxiliary tables. The management functions, which were at first still using MS Access as a front end for the MySQL data, were recoded as a PHP-based web interface starting in approximately 2009-2010.

2011-2015

I was able to start devoting a lot more time and focus to coding beginning in 2011, but there were still a lot of interruptions -- both the temptation to work on other projects (since this one was taking so long) and non-coding obligations (housework, yardwork, parenting) made it difficult to find more than a few hours per week to work on VbzCart. Progress was thus much slower than expected, but did continue in fits and starts.

Much of the customer-facing and admin-facing code was significantly rewritten, but as of this writing there are still a lot of loose ends to tie down on the administration side -- and the customer-facing side (especially the checkout), although working, needs to be tested more thoroughly.

This process also gave rise to Ferreteria as a standalone application framework. VbzCart is so far the only semi-complete application using it, though I've started at least one other.

Some Dates

  • 2011-08-03 working (admin interface via MediaWiki), with lots of developer-level rough edges to work out. We're a long way from having an install script, and I need to post the code on a more appropriate venue such as GitHub.
  • Somewhere in here, something seemed broken and I ended up doing a lot of rewriting... hopefully I can find the details in email messages or something. What I remember is that I had things mostly working again by the fall of 2013, but then...
  • 2014-12-18 What seemed, in the fall of 2013, like a relatively small feature -- the need to let users access their pre-existing address records -- resulted in rewriting the entire admin interface to work without MediaWiki, which in turn resulted in creating an application framework to manage everything. The app framework is now working adequately, and now I'm just tidying up the checkout process and doing other cleanup prior to moving the whole thing from Rizzo to a commercial web server.