Capture and Ship is a custom web application which includes very specific features for garment printing industry that focus on productivity, effectiveness and efficiency.
At the beginning of this project the partners of this company, whom were thinking and envisioning this platform, came to us wondering if we would be able to help them with this project. Of course our answer was “yes”. That is how on July 2014 we started working on the inception phase together trying to keep a record for every idea they had, defining high-level requirements and start designing a rough system architecture and database structure. After weeks of work, we reach out the first requirement document with top priority requirements to start working on our first development phase, at that moment we knew it would be a very big project with lot of work to do.
We used to work with an agile approach for all our project, for sure this would not be an exception, we started working on milestones with main features by implementing the core of this platform. During firsts month we realized that innovation and creativity would be top priority for most of the process, that's why we integrated trending technologies for this job, not just HTML5, CSS3, jQuery Bootstrap or FontAwesome as we do since a few years ago but also AngularJS, npm, Bower, Grunt as well as automatic tests using Codeception and deploying environment using GIT to speed up release process.
During our development, we had to learn about lots of business rules, specific tools and printing process in order to have the best understanding to deliver the best solution to manage campaign, apparel products, artworks jobs, DTG printing process and delivery of finished products for every client.
The web application provides to administrators the ability to manage users, clients accounts, providers accounts, sales orders, purchase orders and transaction integrating great features to every UI. There are more than 8 users levels, each one with different permission over the system to execute specific actions depending on the status of the printing job. During the production status, the system deploy sub-tasks for administrators and printer provider users where they can order products to suppliers (e.g. t-shirts), monitor artwork files (design providers) and confirm when products are ready to be shipped. In the Orders detail page, administrators are also able to handle payments, confirm payments methods and shipping methods using major companies, they can even include tracking code for each shipment.
Customers can send campaigns and manage different seasons for their products, create new purchase orders for products and sizes, manage multiple users under their customer's account,, for example if you own a company and you need T-shirts for your employees for sure you need to reorder more products time to time.
Additionally, in order to complete and implement the ERP module for this platform we integrated product stock management, internal eCommerce module, accounting module based on the double entry bookkeeping, reports, charts and statistics using Google Charts.
In one of the latest stages, we've implemented an API that allows other applications to connect to this main Capture app in order to create and manage jobs automatically. We've developed a custom CakePHP plugin from scratch for managing external connections, validating and authenticating users through OAuth 2.0. Once the connection is validated, the client app must send a REST request to create printing jobs or monitor progress. All endpoints are specified in the online documentation we have supplied, which was generated automatically from our source code.
- CakePHP: PHP frameworks based on MVC pattern.
- MySQL: We defined the database using InnoDB engine for integrity on required tables and MyISAM for faster queries to non-relational tables.
- Boostrap + FontAwesome + GoogleFonts: this is the greatest framework to build fully cross-platform and mobile-friendly UI.
- MongoDB 2.4: NoSQL database that allows greater amount of data queries in less time than a SQL database.
- Elastic Search 1.5.2 / Lucene v4.10.4: internal search engine which offers several functionalities to perform complex search based on a keyword and returns almost instant results.
- npm, Bower and Grunt: great technologies that make things easier to manage packages installed on our development, test and even production environments. It allows you to install and handle Less, FontAwesome, Bootrstrap, jQuery and others.
- OAuth 2.0 is the next evolution of the OAuth protocol which was originally created in late 2006. OAuth 2.0 focuses on client developer simplicity while providing specific authorization flows for web applications, desktop applications, mobile phones