The backbone of the business model hinged upon selling the software to small retail locations, and as such needed a website that allowed them to place orders, and manage the order supply chain through a Web-based application.
The website was built upon each client having their own database and website that they could then link directly into their point-of-sale system, and would support sending orders into their accounting and inventory management software, as well as setting up direct-order functionality.
Retail Client site
The order pipeline consisted of four separate pieces of code that would interact with the order database. Each code had a specific task, such as: taking in orders, transferring to our format, transferring to external formats, and sending orders to external codes.
A simple transformation process was create that sent data through an intermediary XML format, and then used simple mappings to transform to, and from, external data types.
Interfaced with many different external communication protocols ranging from Web services, to writing custom communication layers around quicktime, to allowing people to send orders over the web from within an Excel spreadsheet.
The pipeline was self-policing and redundant, so that orders couldn't get stuck, and would email the development team in the case of errors.
An enormous challenge to face was the fact that throughout the retail industry there was a lack of clear standards, so almost every new company had a unique data format, as well as a unique code interface. In order to address this, a code was needed that allowed easy conversion from new data formats, as well as addition of new code interfaces quickly and easily.
Working at Shoestring Commerce gave me the opportunity to experience being in charge of the entire development process, from architecting the code base, to choosing what languages and tools to utilize, as well as setting team goals and schedules. From the many pieces of the architecture, I have outlined some of the more relevant below.
Developed a robust framework for multiple different databases and implemented it within SQL.
Created a layer of SQL functions that restricted access to pre-implemented functions that ensured safe and efficient access.
Implemented a C# code layer around the SQL databases that could be inserted into any existing code that abstracted away access to the SQL to allow portable and easy access to the entire team of developers.
Databases stored tens of millions of unique items, and allowed concurrent access to hundreds of users, as well as a backend pipeline without any cross-locking.
The main workhorse behind everything that was done at Shoestring Commerce was based on being able to store, serve, and search large amounts of data. The project required having many different databases, such as ones for storing the product catalogs, databases that stored orders, and finally client databases that were stored on separate servers, sometimes in other packages. It was important to maintain data concurrency amongst all the different databases so an item was always uniquely identified.